Is Working With an Agency the Best Option for Your Software Project?
Hiring a software development agency is often the best decision a business can make. Not only do they have the expertise and experience to get the project done quickly and efficiently, but they also take care of all the difficult tasks of recruiting, managing, and motivating a team of developers. This allows you to focus on what you do best – running your business. But there are some cases when you should prioritize hiring an internal team, or working with a lone freelancer. Here is when you should and should not hire an external agency.
When Does Hiring Internally Makes Sense
There is one good reason to hire internally and build out your software, and that is when you are a tech company, and the software is the core client proposition you have. This means you are building out a very complex project, that will be in development for many years after the initial launch, will have more and more features, and that this project is key to your business model. Without the software, you don’t have a business. Think about Airbnb, Uber, Instagram, and Spotify. Their software is their product. They’ve invested in teams of 50+ software engineers working and improving their apps for many years. At this scale, it does not make financial sense to outsource. Nor does it make sense because of the risk aspect of not owning 100% of the workflow that goes into creating your product.
There is one reason why you might want to hire an agency even if you are in the above situation, and that is speed-to-market. Putting together a software development team requires hiring 8-20 people, which will be difficult, and will take time for them to build out the chemistry and good working methodology. Using an agency can kickstart this process, and you can then move on to your hired team in due time.
When Does Contracting a Freelancer Make Sense
If you are building out a very simple software (not core to your business), and you are in no rush to deliver, then working with a freelancer might make sense. You can use platforms like UpWork to find good talent, and you can get started quickly. You will not have the same quality or commitment as working with an agency, but you also won’t have the same price tag. Two usual complaints about working with freelancers are:
- Service level
- Quality of documentation and code
Make sure you are OK with slow replies, and that your project will not need upkeep over time. Freelancers are perfect for a one-off project that does not have tight deadlines.
When does contracting a software agency make sense
We created the following decision framework to help explain the decision to work with an agency.
Why mobile app projects are the best software to outsource
Mobile apps are notoriously complex, even seemingly simple UI and integrations can take weeks to program, and you often are working on many code bases (back-end, APIs, Web, iOS, Android), meaning you’ll often need a team of 8-20 specialized people to tackle your project. We believe that, in most situations, working with an agency for a mobile app project makes the most sense, for the following reasons:
1. You Need a Large Team Because App Projects Are Large Endeavors
- 1 project manager
- 1 scrum master
- 1 product owner
- 1 UX/UI designer (mobile specialist)
- 1 technical lead/architect
- 1 functional analyst
- 1 lead iOS developer
- 1 iOS developer
- 1 lead Android developer
- 1 Android developer
- 1 lead full-stack developer
- 1 full-stack developer
- 1 QA lead (mobile specialist)
- 1 QA technician (mobile specialist)
You might not need all these roles, and potentially one person could fill a few of these roles, but never-the-less, you need to hire at a minimum 6-7 high-quality resources to build your core team, and that takes time and money. And nothing says they will get along and work great together at first. Native mobile apps also require very niche, specialized workers. A good UX/UI designer with web experience will not understand the subtilities of designing a native app, for example.
Also, when hiring, usually teams will not want to take on 14 new salaries, so they will only hire 6-7 key roles to build out the product and then maintain it. This has two major problems, (1) development time will be much slower, as you have less velocity, and (2) your team that is hired to build out a project loves creating a new app from scratch. They will not love maintaining an app, so you might have trouble motivating them.
2. You won’t need everyone at the same intensity
Let’s look at the above list of resources and estimate the number of hours they would work on a 12-week (3-month) project.
- 1 project manager – 120 hours
- 1 scrum master – 120 hours
- 1 product owner – 120 hours
- 1 UX/UI designer – 120 hours
- 1 technical lead/architect – 120 hours
- 1 functional analyst – 120 hours
- 1 lead iOS developer – 220 hours
- 1 iOS developer – 440 hours
- 1 lead Android developer – 220 hours
- 1 Android developer – 440 hours
- 1 lead full-stack developer – 220 hours
- 1 full-stack developer – 440 hours
- 1 QA lead – 120 hours
- 1 QA technician – 240 hours
The opportunity of working with a software agency is only paying for the hours that are necessary for your project, as opposed to having someone full-time whose skills are so niche that they might not be able to help on other tasks when they have free time. An agency can afford these salaries because it can involve these “overhead” resources on many projects.
3. You Won’t Need Your Full Team for More Than a Few Months
If you are building an app, you will need your core team for a few sprints. This is the time when you build out your V1 or MVP. Once this is done, you can then slowly start to wean people off the team, as you’ll have less and less to take care of, moving from project development to support and maintenance. Also, the iOS developers and Android developers are usually focused on this niche, meaning that it will be hard for them to turn around and work on another software project in the meanwhile.
You can see in the following graph that, after specs and designs are fully detailed, you’ll want to onboard many developers to your team to add maximum development velocity. Then, when your first version is ready to go, and even as you go through quality assurance (QA), there is no need to have as many developers on the team. Therefore, it is really hard to build this internally.
4. You’ll Have Punctual Needs and Spikes Linked to Your Full Life Cycle
In the maintenance phase of a project, there are often spikes in work as new issues or bugs arise. This might require bringing in more developers to help resolve the issue as quickly as possible. Having an agency partner can help you manage these spikes and ensure that your project remains on track. You might also get feedback from your users and need to develop new features, which might require more velocity for a few sprints. By hiring a team, it is hard to manage these spikes. You can see in the following graph that is an extrapolation over many months.
5. Building (hiring) a software team is hard
It is hard to find good software developers. They are in high demand and it is a very competitive market. You might have the highest salary and best benefits, only to find that developers value other things than money. If you want to build your team, you have to hire great developers and also ensure that they work well together as a team. Once you have built your team, it is important to keep them motivated and happy, as they will be the ones building your product. This includes setting expectations, providing feedback, and ensuring that everyone is aligned with the project goals, as well as creating a creative and fun working environment. It can be hard to find the time to do this when you are also trying to build the product.
You should only be thinking about your business and how to grow it. This is hard to do when you are also worried about the technical implementation of your project. It is important to have someone that you can trust to take care of this for you.
6. An agency will have more experience than an in-house team
When you work with an agency, you are working with a team that has done this before. They know the process and they know what to expect. This means that they can often deliver better results in a shorter time frame. It also means that they can help you avoid common pitfalls and mistakes.
When you are looking for a software agency, it is important to make sure that they have experience in building similar products. This means that they will already understand your business and how to best build the product. They will also have experience with the development process and the various challenges that can arise.
Working with an agency makes financial sense for your app project. Not only will you have a team of developers who are focused on your niche, but you’ll also have someone to manage the spikes in work and help navigate through the full life cycle of your project. An agency will also have more experience than an in-house team, which can save you time and money. The above framework works well for all software projects but is especially true for mobile apps.