Jan 31, 2023
The ultimate guide to hiring a software developer
Written by Zack Schwartz
A few years ago, I received a call from an acquaintance of an acquaintance, who had heard of my background as a software developer. They shared with me their idea for a complex app that would combine features of a social network, location-based services, real-time live video streaming, and a gym membership program. They asked for my opinion on the cost and timeline for building such an MVP. I provided an estimate of at least $75,000 and a minimum of six months but that the cost could be much higher. The caller was not satisfied with my answer and told me he found a developer on Fiverr who promised to deliver the same app for only $1,500 in a month.
A year later, the same individual reached out to me in a state of urgency. The app was not working and the developer they had hired was unresponsive and had taken off with their money. They asked me to fix the issue, but upon learning that the app was coded in PHP, a language I am not an expert in, I informed them that it would be more efficient for a PHP developer to handle the repairs. Additionally, depending on the state of the code, it could cost more to fix it than to start from scratch.
Sadly, the situation above is all too common and my goal is to help provide a framework for hiring and working with software developers when you yourself are non-technical.
Fixed Scope vs Time and Materials
When hiring developers to build your application, you'll typically be offered a fixed scope or time and materials (T&M) pricing model. Fixed scope sets the cost before the project begins and doesn't change, while T&M costs are calculated and invoiced based on time and materials used.
If you have a well-defined project with clear requirements, fixed scope is a good option. However, for projects that require more flexibility and change, T&M is recommended. Keep in mind that unexpected changes to a fixed scope project may impact progress, while T&M allows for more adaptability.
Red flag: The developers agree to a fixed scope project without having a strong understanding of the requirements.
It is common for a fixed scope project to require some payment up front and a payment on delivery, or payments broken up at different milestones. With T&M, they may require a purchase of a block of hours up front to get started and then when you run out of hours, you can purchase another block, etc.
Know the process
To successfully create any type of substantial application, such as a large custom website, bespoke web application, or mobile app, it is essential to follow a Software Development Life Cycle (SDLC). While there are various SDLC methodologies, your development team should be capable of explaining which one they will use and why.
Red flag: the developer you are working with cannot coherently communicate his or her software development process.
A typical pattern would follow something similar to the below:
Introductory Call (10-15 mins) - A brief, high-level call with the developer or their business representative to assess if your project is a suitable match for their team.
Discovery Call with Leadership (45 mins to 1 hr) - A second call with project decision makers to gain a comprehensive understanding of the project requirements, familiarize yourself with the senior developers assigned, and determine if a scope of work or proposal is necessary.
Scoping and Costing Discussion (30 mins) - A call to review the scope of work, pricing model, and estimated timeline for delivery of the project.
At this point, you will decide if you wish to proceed.
Launch Meeting (1-2 hrs) - Projects start with a kick off meeting that typically involves introducing project managers, account managers, and the client's key contacts. The meeting may also include a discussion of any necessary materials or information required from the client to commence the project, such as completing a survey or providing background details. They may also get you setup in their project collaboration tool such as Basecamp or Monday.com at this time.
Planning & Wireframes (1-3 months) - This stage is critical for ensuring the remaining success of the project. The main goal of this stage is to construct wireframes or layouts for every page of your application. This is sometimes designed in tools such as Visio, Figma, or Photoshop. Consider this stage the “blueprints” of what your application will be. It is very easy to make edits in this stage because you are just moving images around a screen. It is important to remember that once code is written, it is very costly to make changes. Wireframes are often “low-fi” and do not have any branding or colors, but contain the locations of buttons, text (even if written as lorem ipsum), and the different sections of each page.
It is important that every functional requirement is associated with these wireframes. For example, if a button in the wireframe says “Send email”, this should be directly tied to a functional requirement in a document that says “When clicked, this button will send an email to the administrators, and CC the logged in user”. You should not assume that the developer knows exactly what should happen even if it seems obvious to you. This is especially true when working with non-US developers.
Branding & Design (1-2 months) - When everyone is satisfied with the wireframes and functional specifications attached to those wireframes, it is time to turn your wireframes into a full on design with branding and colors. This too is typically done in Figma or Photoshop. The design is then shared with developers, who use it as a guide to build the actual website or application. The end goal is to create a website or application that matches the original design as closely as possible. Therefore it is important to make sure that you have the design you want before the developers begin writing any code at all.
Build out (1 to 6 months depending on complexity) - The developers are now fully immersed in coding. You'll mostly receive status updates and occasional clarification requests. Tasks include coding the app, adding a CMS, integrating with third-party tools, migrating content, and creating APIs.
Quality Assurance (1-2 weeks) - The developers will hand over the application, and you'll need to collaborate with them to validate proper implementation of all functionalities. You should take charge of the QA process, as developers may not thoroughly test their work. As the client, you have a clear understanding of what you expect the application to do, so it's crucial to verify all functionality, even if you've paid for a QA resource.
Where you can maximize cost savings
Developers are a major cost in software projects and their work is highly technical. As a non-technical founder, don't waste time trying to build technical components yourself, even with no-code/low-code tools. Use Upwork/Fiverr to find affordable wireframe/design alternatives, then provide developers with complete designs and requirements to get an accurate quote for just the development phase.
Pitfall. As a non-technical person, avoid the mistake of hiring separate developers for different components and trying to integrate them later. This approach is likely to fail. Instead, appoint one person as the technical lead to oversee all technical aspects. They may delegate certain tasks, but as the technical expert, they have a comprehensive understanding of how all components should function together.
Here are some other pointers for minimizing cost:
- Ensure a minimal set of requirements to achieve the desired product. This is known as a Minimum Viable Product, or MVP. Every new feature you want will cost $$$.
- The more clearly defined your vision is for your product and its functionality, the better the outcome will be.
- If a custom design is not important, consider buying a premade theme on something like themeforest.net.
- Native mobile apps will always cost the most. Consider a mobile web version first.
Results may vary though.
Does the programming language matter
Hiring competent developers is more crucial than the technology stack. It's your responsibility to clearly articulate your goals, and the developers should select the appropriate technology stack accordingly. You have the right to inquire about their planned technology stack. However, beware of developers who use obscure programming languages, as it can make replacing them difficult if a switch becomes necessary.
Cowboy Coders or Elegant Coders
When should you hire a cowboy coder or an elegant coder?
A cowboy coder is a developer who delivers a quick solution, even if it's not perfect. Cowboys may shortcut the software development life cycle and produce bugs and create technical debt, but they get the job done fast. If you need an MVP for investors, or need to make fast changes to your product, a cowboy coder might be the right fit. However, it's important to keep in mind that the long-term maintainability of their work may be questionable. The bottom line is that you just need someone to deliver the product quickly.
An elegant coder is a developer who prioritizes quality and maintainability in their work. They take the time to write clean, well-documented, and efficient code with unit tests. Their solutions may take longer to produce, but they will be reliable and easy to maintain in the long run. If you have a long-term project, require scalable solutions, or need to establish a robust codebase, an elegant coder is a suitable choice.
The best developers can be either/or depending on the client's needs.
Going off shore
The high comps offered by the major USA technology companies attract the best talent from around the world. That means if you are an entrepreneur trying to bootstrap a product, you may have to seek developers elsewhere. Here are some things to watch out for:
- In my experience, many non-US developers will tell you that your request is fine and doable no matter what it is you requested. I asked a developer in India if they could build something that I knew was impossible to build and they gave me a quote and a time frame of 1 month.
- Timezone issues and communication barriers can be way more significant than you might realize even if the developers speak english. You need to learn to communicate in screenshots and arrows rather than words.
- Low-cost developers may be overworked, leading to subpar quality.
Code ownership
Many are unaware that paying for development does not automatically grant ownership of the code. It's crucial to have explicit ownership rights specified in the contract. Without a written agreement, the assumption should be that ownership does not transfer.
In some cases, a developer may retain ownership of the code while licensing the final product to the client who paid for its creation. This outcome is not ideal for a custom platform project, where the client typically wants full ownership. It's important to clarify ownership rights in the contract before beginning development.
A fair contract should specify that ownership of the code transfers to the client, but the developer retains the right to reuse certain components such as modules, frameworks, techniques, tooling, and methodologies developed during the project. This is because the client benefits from the developer's prior experience and past work. Exceptions may apply for proprietary algorithms specifically developed for the product.
Hosting and deployment
Ensure domain ownership by purchasing it from a reputable source like Google Domains or Cloudflare Registrar, rather than relying on the developer or using GoDaddy. Domains are relatively inexpensive.
Domain ownership is different from server hosting. Server hosting is where your application and its databases will live.
Some developers offer hosting services for additional revenue, which can be convenient. They usually host the application on a cloud provider such as AWS or Azure and charge a markup for serving as the primary contact in case of any issues (if your app has an outage, who will you call? AWS Support??? Good luck.). Other developers may not provide hosting services, so clarify this ahead of time.
If the developer doesn't offer hosting services or you want to explore other options, ensure your contract specifies that the developer will deploy the application to your chosen hosting provider. Without this agreement, the developer may only send you the files without proper installation guidance.
Warranty and ongoing maintenance costs
After product delivery and deployment, be prepared for ongoing development costs. Developers commonly provide a warranty period, usually 60 or 90 days, to fix any post-deployment bugs or issues. Make sure this is included in the contract. Beyond the warranty period, you'll be responsible for platform maintenance. Developers often offer a maintenance package or retainer to fix any issues, or an option to pay for one-off new features or fixes on an ad-hoc basis. Knowing this information in advance is important if you plan a long-term relationship with your developer.
Hope this provides some valuable insight into finding software developers to build your project. Good luck to you!
ENTREPRENEUR & SOFTWARE ENGINEER, AUSTIN, TX
I enjoy tackling a wide array of business challenges ranging from front line product support and operations to sales and marketing efforts. My core expertise is in software development building enterprise level web applications.