What is the most efficient way to contract developers?

What is the best approach for your development project? Who do you need on your team? Where do you find them? And how do you engage and contract them in the most efficient way possible?

After spending 35+ years (so far) building software, I’ve learned a couple of lessons about how to efficiently contract a development team. Why is this a useful process to understand? In my experience, there are a couple of things, which are almost always true for any software project. A typical customer:

  • Is always in a hurry – every project is always urgent, and has to be completed in a hurry
  • Doesn’t know what they want, even if they think they do
  • Doesn’t really understand the depth of analysis that is required to initiate a project
  • Will underestimate the amount of time and work required to deliver the project, and how much time they would need to commit to the process

All of these points contribute to an inefficient engagement process with developers and usually leads to customers “overpaying” for work – or paying more than they absolutely need to.

How do you contract developers more efficiently, and avoid paying more than you need to?

Basically, whatever the customer can do to prepare the way for the project, will achieve exponential savings going forward. Inefficiencies in the contracting process will have a compounding effect on overall delivery time and project cost.

In a previous post, I discussed how to choose the best approach for your development project. If you understand what your various options are, and you can pre-emptively choose the most suitable approach – or at least narrow down your options, that will enable you to decide how to engage, and who to engage with exactly.

For example,

  • If you have a relatively vague idea what you want to do, and you’re building a consumer-facing application, you would probably go for a UX-led approach, building wireframes, followed by UI designs, possibly a prototype.
  • If you’re building an internal-facing application or a B2B system, you can possibly skip the UX process, and directly engage with a Business Analyst to produce “user requirements”
  • If you have detailed specifications (user requirements), or pre-built wireframes – that all business users have “accepted” (with an actual signature) – you can directly engage developers.

How to prepare for your first engagement with developers

To summarise – whatever preparatory work you can do, before engaging external resources would go a long way towards reducing uncertainty and the perception of risk – which are loaded to your cost and timelines as a mathematical function.

Also, as I discussed previously, 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 engaging the same team. And it is very expensive to switch teams too, as you would need to repeat the onboarding process.

Defining the optimal 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 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 individuals vs contracting a team

You pay for what you get, and each option will have upsides and drawbacks.

Contracting a team

By contracting a team or agency you will get (or 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 individuals

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 contractors

Senior vs junior or “expensive” vs “cheap”?

You really need to find good people – there is a myth, that if you hire a “cheap” developer, they will do the same work as an expensive developer, just a bit slower. This is not true. Bad 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 people?

Finding a good developer

How do you know a developer writes good code if you’re not a developer yourself? Short answer: you probably can’t – or you will not be able to “read” their code to see if they do a good job. But there are a number of other ways you can do this:

  • 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 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 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

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 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 very good reason – there are definite supply and demand forces in the market
  • If you are not an experienced developer or an agency with a 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 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” developers with a limited track record

The engagement process

  • 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 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

The quoting process

Preparation

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

Engagement

How to engage:

  1. Start off with a short introductory call (30 minutes), and provide a high-level overview of the project
  2. Get your Non-Disclosure Agreement in place
  3. 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.
  4. 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.)
  5. After the second call, request a quote or proposal for the work

Conclusion and selection

  • 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

The contracting process

  • If you are engaging for someone to take control of your process, you should strive for a fixed-fee engagement
  • If 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, and 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? Does it make sense for you to do the work of a Financial Director if you have someone more skilled onboard – trying to save a bit of money?

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.