How do you find good software developers?
How do you find a software developer? What kind of people do you need on your team? Where do you find them? And how do you engage and contract them? How do you approach your development project? In my experience, there are a couple of things, which are almost always true for any software project. A typical customer:
- Is usually in a hurry
- Don’t know what they want, even if they think they do
- Will underestimate the personal investment required for a project
How to find software developers and avoid paying too much
All of the above points contribute to an inefficient engagement process with developers. This usually leads to business paying more the work than they absolutely need to. Basically, whatever you can do to prepare, will achieve exponential savings going forward. For example, inefficient contracting will have a compounding effect on the project’s delivery time and cost.
If you understand your options, you can choose the most suitable approach to your project. I covered this topic in a previous post – “how much does it cost to build an MVP”? This will help you understand how to run this process, and what kind of people you would need.
For example,
- If you have a vague idea what you want, and building a consumer-facing application, you’ll follow a (UX) led approach. This could mean user research, customer journey mapping, wireframes. Then you build user interfaces, possibly a prototype etc.
- When you’re building an internal application, you can skip the UX process, and go directly to “user requirements”
- In the scenario where you have documented user requirements, built wireframes you can directly engage developers.
How to engage software developers
Whatever preparatory work you can do, before engaging developers would go a long way towards reducing uncertainty and the perception of risk. Developers will assess your risk, and make a judgement call about the variability of your requirement. This directly affects the time and cost estimates you’ll get.
Also, as I discussed in a different post, the risk and uncertainty factor that is applied to your project will remain with you beyond your first engagement. This is why it’s important to kick off your project on the right foot – and use the most efficient way to contract your development team. If you are inefficient in your initial approach, that will probably affect you for as long as you continue working with the same team. And it is very expensive to switch teams too, as you would need to repeat the onboarding process.
Define the software developer roles and team composition
Selecting the appropriate roles
Once you have selected the preferred approach, it’s time to start building your team. Your preferred approach will determine who you need to find:
- If you’re going for a UX-led approach, you are looking for a UX designer,
- A requirements-based approach will have you searching for an analyst
- And if you have all your requirements mapped out, you will be looking for a software developer or development team.
- If need someone to take control of the process, then you are looking for an agency who can provide all of the above, as well as some best-practice processes
Contracting individual software developers vs contracting a team
You pay for what you get, and each option will have upsides and drawbacks.
Contracting a team of software developers
How do you know you’re talking to a good software development agency? By contracting a team or agency you should be looking for:
- A well-defined “canned” process to support your needs. Agencies deliver value, by building re-usable processes, so a good UX agency will have a solid UX-process. You will recognise this if they provide you with a document, detailing the process, the people involved, the outputs they will deliver, and a fixed price for the process
- Some level of comfort that they have the financial clout to “fix” things if they go wrong – e.g. you want to make sure they have the human and financial resources to fix problems that may arise in the project
You may also pay a little more for the execution, because:
- It costs money to provide you with the comfort you seek
- They probably have a layer of management – so you’re not only paying for the resources on the project, but also for the team that manages the process and the business. This includes things like sales, project management, finance and other overheads – like rent, phones, infrastructure etc.
It makes the most sense to contract an agency if you’re seeking that level of comfort, or if you need them to offer some guidance or take control of the process.
Contracting individual software developers
By contracting individuals you get pretty much the opposite of what I mentioned above:
- They may not have a pre-defined (“canned”) process to give you a pre-defined deliverable at a fixed price
- This means you may need to drive the process, and guide them in exactly you want them to do
- As individual contractors will stick to billing you by the hour usually, there is a risk – that if you manage the process inefficiently – you will “pay more” than you need to
- At the same time, if you are able to drive the process efficiently, you may get a better deal out of it, as individuals don’t have the same overheads as agencies do
It makes the most sense to contract individuals if you’ve done your homework, and are in the position to efficiently manage the development process.
Finding software developers
Evaluating senior vs junior or “expensive” vs “cheap” software developers
You really need to find good people – there is a myth, that if you hire a “cheap” software developer, they will do the same work as an expensive developer, just a bit slower. This is not true. Bad software developers will make bad decisions, and these decisions have a compounding effect as you continue on the project. Just as building a house on a poor foundation will do – by the time you figure out you have a bad foundation, you may need to knock the whole house down and start from scratch.
I would highly recommend that you have at least one (or a small group) of senior people to guide the rest of the team and to set the appropriate standards and protocols for the project.
How do you find the best software developers?
Finding a good software developer
How do you find a good software developer? Can you determine if a developer writes good code if you’re not a software developer yourself? Short answer: no. But there are a number of other ways to find good developers:
- References and case studies: probably the easiest and simplest way to go about this – look at their case studies or references. If they’ve done impressive work for other clients previously, at least you know they are happy to successfully execute a project, and keep a customer happy
- Hacker-rank score: look at the developer’s hacker rank score. This is a site that gives developers complex problems to solve, so this is a way to verify their technical prowess
- Profile on Github: most developers will have a profile on Github, with some projects published, and engaging other developers. You can get an idea of their skills, interests by looking at their projects, and how they respond to other developers and vice versa
- Profile on Stack Overflow: Just as Github, most decent developers will have a profile on Stack Overflow – and you can get an idea of their skill level, and general attitude by looking how they engage others on Stack Overflow
So ask your developers to provide you with some of the above. This will allow a non-technical person to form on an opinion of the strength of the individual you’re talking t.
Finding a good user interface designer
Finding a good designer is arguably easier than finding a good developer. A good designer is often a matter of personal taste. Like looking at art, or choosing a house to rent, or what car you want to buy – even if you don’t exactly know what you want, you will recognise it when you see it.
Just as developers have their ways of showcasing their skills and work, so do designers. There are many online resources which are used for exactly that purpose – and oftentimes you can contact (or contract) the designer right off that platform. Take a look at the following platforms (there are more) – and browse the portfolios to see who you are interested in talking to
- Dribble is a fantastic resource for finding good designers
- Behance is another great resource, they also list photographers, 3d artists and many more categories
Ideally, you are looking for a UX Designer that fits the following criteria:
- Someone who’s “style” you like – individual designers often have a certain style (or a couple of styles) – some styles will resonate with you – that’s a good sign
- Someone who’s done work in the industry that you operate in – I think in general, industry knowledge is under-valued – any experience they bring from a specific industry would add a tremendous amount of additional value to your project
Finding a good software development agency
As I said above, it makes sense to engage an agency if you are looking for a partner to take more control of the overall process – who can offer you a UX or Design process, has skilled Business Analysts onboard and has a strong project management expertise.
However, you should know that
- You are not only contracting an agency, but you are also contracting the individuals who will work on your project.
- Just because an agency has done good work, it doesn’t mean that the people who will work on your project would necessarily be good.
- Although you pay for some of the overhead of the business, the agency will not assign any more people to the project than what you are paying for.
- At best the management is there to mitigate risk or serve as an escalation path when things don’t work out the way you expect.
In addition to evaluating the resources, you should also evaluate the agency as a whole. What processes do they have in place to accelerate your development project? For example, how do they:
- Run the User eXperience and design process?
- Do the requirements elicitation, and what is the quality of the outputs they produce?
- Facilitate requirements traceability, from scope through user stories, through acceptance criteria to source code
- Control and manage the development process and infrastructure?
- Manage your source-code?
- Perform user testing and manage quality assurance?
Things to avoid when looking for software developers
There are also a couple of things that you should aim to avoid (or validate) “cheap” or poor quality developers:
- Firstly, you will get an idea of the going rate of decent software developers by doing a quick survey of suppliers
- Although you don’t have to pay top dollar, you will get an idea of the going rate of developers, and you will most definitely get what you pay for.
- If a developer is half the price of the going rate, that’s probably for a good reason – there are supply and demand forces in the market
- If you are not an experienced software developer or an agency with good infrastructure and a good team, you will find it difficult to tell the difference between a good developer and a bad one
- Poor communication – misunderstanding, or unresponsiveness end up costing you valuable time
- It will also cause you a lot of frustration – and it is difficult to put a number to the effect this has on your general disposition and how that permeates your work and personal life
- Consider your “hourly rate”, for any “savings” you may gain in the hourly rate of your software developer, you are likely to pay back in your own time
- What is the opportunity cost of you getting stuck in a quagmire of miscommunication, delayed delivery, and a poor final product?
Bottom line, unless you’re an expert, don’t experiment with “cheap” software developers with a limited track record.
How to engage software developers
If you’ve followed the steps above, you should be able to build a short-list of individuals or agencies that that would be a good fit. Do your homework, a simple Google search, or looking through the sites and resources above will give many options. Referrals are also good but do not negate the need for you to do thorough research for yourself. Review software developer and agency profiles, look for individuals with the correct level of experience, as well as knowledge of your industry as far as possible
Make a shortlist of no more than 3 agencies or individuals that you are interested in. The engagement process is resource-intensive, from your side, as well as from the agency’s side. It takes a lot of work and effort to complete the end-to-end engagement. Remember, not all agencies will “make it” – so you will need to decline everyone that you do not contract. For example, every unsuccessful bid deserves a debrief if requested – which takes more of your time. Each time you ask an agency to re-quote, that will affect their perception of uncertainty and risk of doing business with you and will have a direct impact on the cost.
By the time you reach out to the developers, you need to know them quite well – who their people are, who their reference customers are, the kind of work they do, what they are good at
How to get a quote for your software development project
Preparing for the quoting process
By the time you reach this step, you should have:
- A preferred approach to the project (the steps, inputs required from you, outputs expected, and a possible cost-range)
- A short-list of (no more than 3) agencies or individuals you want to contact
- Preparation work to engage the agencies – depending on the approach you want to take
How to engage the software developers
How to engage:
- Start off with a short introductory call (30 minutes), and provide a high-level overview of the project
- Get your Non-Disclosure Agreement in place
- Once the NDA has been signed off, provide them with the pre-work that you have done for review. Do not ask for a quote at this stage.
- Follow up with a second call and review the requirements, ask and answer as many questions – using the framework above, and also to uncover anything that is not clear about your project. The questions raised at this point could be worked back into your preparation (requirements, designs etc.)
- After the second call, request a quote or proposal for the work
How to select the best software developers
- You need to complete the selection process as quickly as possible – the optimal time is around 1 week.
- This would feed into the “uncertainty and risk” formula that directly affects your price.
- If you are professional and highly responsive, this will reduce your price and estimated time of delivery.
- Once you’ve made your selection, express your decision via email as soon as possible
- If the non-winning bidders request so, do give them the opportunity of a debrief, and provide them with honest feedback.
- Most agencies would greatly appreciate your honest feedback, and set the foundation for constructive future engagements – you never know when you will need them in the future. You will also build a reputation – not only with the companies but also with individuals – and this works both ways – they will not only form an opinion of your company but also about you as individuals
How to contract software developers
- If you are engaging for someone to take control of your process, you should strive for a fixed-fee engagement
- When you are managing the process, you should strive for an hourly rate
- Set up a trial period – make clear what how long that trial period is, and on what basis you will evaluate their performance
- Once the trial period is over, communicate clearly that you wish to continue the engagement
Final thoughts
The value of your own time
To reiterate something I already said. You need to carefully consider the value of:
- Your own time (base cost)
- If you look at the raw numbers, what is your fully loaded cost-to-company (annual salary + overhead / 12 months / 120 productive hours)?
- Compare your base cost with the costs of the team you are hiring
- Things need to get done, and someone has to do it. If someone else is not doing a task, then that task will fall on you.
- Can you really do the same task at a lower rate, and more efficiently than the team you are contracting?
- Opportunity cost
- What is your “opportunity cost”? Surely you’re not there, sitting in a seat, just to cover your base-cost.
- You need to be adding value to your business – can you put a number to that value? (if your base cost is $100,000 per annum, what ROI does the company expect on your time? – $200,000?)
Setting the boundaries
You should factor all these in, when selecting your team, and deciding how to divide the work between the team members.
When you’re hiring individuals or an agency, they become an extension of your business. You need to treat them as part of your team – the same way you would treat your own staff. And you need to make decisions in the same way. Does it make sense for you to take over the book-keeping if you have a book-keeper? Should you to do the work of a Financial Director if you have someone on board?
Your responsibility
As Andreessen Horowitz famously stated in 2011 – “software is eating the world“. If I can paraphrase the kernel of the article – it basically means, that all companies must learn to become software companies if they were to survive into the future. This means that everyone needs to adopt some level of skill in the world of software development. This services as a counter-point to the argument above. Even though certain things should be outsourced, other things can not. You have the responsibility to take ownership of the project, to effectively play your part in the process.