Assemble your software team

By Najaf Ali

You know what web application you’re going to build, why you’re going to build it and what success looks like for this project. Now you have to find someone to build it.

Start with a full-stack developer

Even if you have a large budget, hiring a large team at once may not be the best use of it. Starting with a smaller team and iterating to a larger one presents fewer challenges than starting with a large team from day one. It allows you to iterate quickly without paying large amounts of communication overhead that come with a bigger team.

A full-stack developer is one that works with both front-end and back-end web technologies. They can turn designs, wireframes, specifications, and anything else you use to define your application and turn them into working software that solves your business problems.

A full-stack developer should be the first person on your team. You might hire specialists to handle particular areas of expertise later, but no one else can actually ship the software you want to launch from beginning to end.

Engaging with a full-stack developer earlier in the process allows you start iterating on your software more quickly. This allows you to start giving feedback within days of project start rather than weeks or months, increasing the likelihood that the software that’s delivered is the software you actually want.

Choose an appropriate legal structure

There are a number of ways to engage with a full-stack developer. Here are a few:

  • Permanent employment - If you are sure that you will have years of work for a full-time developer then hiring a developer as a permanent employee may be a cost-effective option. Permanent employees take a lot of time and effort to find, qualify and hire. They’re also difficult to fire. The main benefit in hiring permanent employees is that they provide a guaranteed ongoing development service and can gain a deep knowledge and understanding of your business.
  • Freelance - Freelancers are a good option if you have experience managing development projects and you need “at-will” development expertise on a shorter term basis. It’s expected that you’ll hire/fire freelancers relatively often and so can experiment until you find ones that work well with you. They’re typically more expensive than permanent employees, but can typically still be quite cost-effective.
  • Agency - A development consultancy is a good option if you expect help in planning, defining requirements and managing your development process in addition to implementation. Agencies can provide continuity where freelancers can’t. They also have ways to address your concerns and e.g. move different developers onto your project if your current one isn’t working well with your team. For the reduced project risk that they provide, they typically cost more than freelancers.

Select a developer for maximum probability of success

However you structure the engagement, there are a few obvious steps you can take to maximise the chance of your project succeeding.

Here’s what to look for:

  • A recommendation from someone you trust. People with your interests at heart won’t recommend incompetent professionals to you. If a developer has done a good job for someone you trust, then their recommendation gives you some guarantee that they might do a good job for you too.
  • A track record of shipping software similar to yours. If you’re building a web application that has a complex integration with a payment system, there will be less inherent risk if you hire a developer that has built a complex integration with a payment system before.
  • Expertise in tools typically used to solve your problem. If you operate in the data science space, it’s likely that you’ll be using Python or R. If you’re building a web application, it’s likely that you’ll be using PHP or Ruby on Rails. If you’re building a JavaScript heavy application, it’s likely that you will need to assess frameworks such as Angular, React and Ember. Choosing a developer that has expertise in technologies that you’re likely to need will increase the project’s chances of success.

Make your expectations clear

As part of your assessment process, you need to make clear exactly what it is you expect of the developer or agency you hire. In particular:

  • How will we structure planning and requirements gathering?
  • How will we determine whether a feature is “complete” or not?
  • How exactly will the developer communicate the status of the project to you?

For example, you might specify that:

  • We will hold weekly meetings on Monday afternoon at 13:00 to plan new features for the upcoming week.
  • Features will be deemed “complete” when the acceptance criteria defined for each feature is met.
  • We will provide all information required to start features before we expect developers to start them (wireframes, acceptance criteria, design, seed data, etc).
  • Developers will make short (e.g. one-line) daily status updates about what they’ve been working on, what they’re going to work on next and if they’ve face any obstacles that have hindered progress.
  • Developers will also provide a weekly summary email that lists what was worked on and exactly what features were shipped to each environment.

The exact expectations don’t matter as much as the fact that you specified any at all. By spelling out in detail exactly how you want developers to interact with you, you give them a personal set of success criteria. These success criteria should be in line with moving you incrementally closer to your project goal.

Not all developers will like your proposed way of working, so invite feedback from potentials and see if you can come to an agreeable workflow. Developers that are a bad fit for you will opt-out, and developers that resonate with your working style will be more likely to find you.

Summary

  • The start of your software team is a full-stack developer.
  • You can hire one as a permanent employee, as a freelancer or through an agency.
  • A developer with good references, a track record of work on project like yours and expertise with tools that are used to solve your problem will result in a higher chance of success.
  • Making your expectations about project structure and communication will result in developers more amenable to your style of working.

Once you’ve created a short-list of potential developers, it’s time to begin drilling down into the details of the exact software you want built. You’ll need an experienced developer at your side to do this effectively.