Before you start building custom software for your company, you need to decide what's the best way of collaborating with developers.
One of the questions that I've heard multiple times is whether someone should hire developers in-house or hire an external agency to do the technical work.
When looking for an answer, you'll come across strongly polarized opinions on this topic. Some people will tell you that you should keep developers internally at all cost, others will claim that the best thing that you can do is to outsource.
I have my own experiences of working both internally and in an agency and the best answer I can give you is: it depends.
Unfortunately, there are no silver bullets. What works for one company may not be the best option for others. There are a few popular misconceptions that you need to take with a grain of salt.
Misconception #1: Developers who work inside a company will share its vision
A lot of people, especially those working at startups, will tell you that.
While it's true for some developers, you'll also encounter those who don't care much about it. A lot of great engineers simply love solving challenging engineering problems.
They'll do an amazing job in building software, but for them it's still just a job. They won't necessarily share the "startup attitude" or sacrifice their lives to build the "next big thing".
That said, it's still important to properly communicate the product vision to developers. We'll share some hints on that in one of the following posts.
Misconception #2: Outsourcing lets you reduce costs
Sometimes you'll hear people saying that outsourcing software development to agencies let them be more cost effective. At other times you'll hear stories of people who exceeded their budget a few times because of said outsourcing.
The total cost of the project, besides salaries or agency rates, depends on a lot of other factors. For example, one of the things that have a significant impact on the total price is how clearly you define and communicate the requirements.
If your company's own developers fail to understand them, they'll take longer to build what you expect. Similarly, an agency may require you to pay extra for additional work caused by communication problems. We'll tell you more about mistakes that people make when communicating requirements in another article.
Misconception #3: Agencies don't care about quality
One of the beliefs is that people who work inside a company will build better quality software. It's based on the assumption that they'll have to support it in the future, hence they care more.
On the other hand, you'll also hear about companies like MySpace. They build their core software internally, but its low quality caused problems with building new features on top of that.
The quality of the software depends not only on the team that builds it, but also on the way how you manage it. If you push the team to finish it fast too much, they'll probably figure out a quick-and-dirty way to do it in time.
As you can see, there are no good general answers. Everything depends on the company's unique situation and goals. Let's take a look at the most popular ways of building custom software and see when they work best.
Most Common Ways of Working with Developers
There are numerous ways in which you can work with developers. You can hire them full-time, hire freelancers or have different working arrangements with agencies.
To keep things simple, I'll split those into three categories - each with its own benefits and potential problems.
Option #1: You can hire a development team in-house
It gives you the most control and predictability as long as you know how to hire them and are good at managing software projects.
If you're also able to retain employees, this may turn out to be the best way of running long term projects. Finding the right people costs a lot of money, but the amount is relatively low if they'll stay with you for a few years.
Developers working inside your company will also have a lot of opportunities to learn the about the business itself. This will take a lot of time, but will allow them to be aware of its nuances when building software.
From your perspective, hiring an in-house team will also give you the most flexibility when it comes to managing the project and choosing the right people. This may be especially important if software is the core of your business, for example if you're selling it. You want to have it in control.
Option #2: You can also hire a company that will outsource developers for you
Sometimes it's difficult to hire a developer internally. In some locations it's extremely difficult to hire a skilled developer as there are a lot of companies that compete for them.
There are companies that will take care of hiring for you. They'll build a whole team, that will either work as on-site contractors or remotely. This is often confused with agencies, but in fact it's a solution in between hiring in-house and agencies.
You don't have to deal with hiring directly, but you're still in charge of managing the team. It also means more flexibility in changing team's size - many outsourcing companies will happily take the task of finding additional people and won't mind if you ask them to reduce the number of developers. On the other hand, as the developers work for an external company it may be difficult for you to retain certain people.
Option #3: You can hire an agency
These companies will take care of not only hiring, but they will also take care of managing the project. Since they specialize in building custom software, they have experience in managing the technical work. They're also able to design a technical solution based on your requirements and build it.
They'll still require a bit your attention, especially when results of their work are ready for review, but they won't require your day-to-day involvement. This will let you focus on other things that are critical to your business.
If software is not in the center of your company's attention, but rather a tool that helps you work more efficiently or do more sales, working with agencies may be the best solution for you. Such projects are often short term, which makes it to much of a hassle to hire developers in-house for them.
In the description above I assume that the company or developers that you're planning to work with are good at what they do. This means that these descriptions don't cover cheap outsourcing or building a team of interns.
You may find some good developers that lack the confidence to price themselves properly, but most of the time you're walking on a thin ice. Decent software developers or project managers can do better than $20/h, no matter where they're located.
So, Should I Go With An Agency?
As I've mentioned earlier, there's no single solution that will work for everyone.
When trying to figure out the best one for you, try asking yourself these three questions:
- Is the software the core of your business?
- Do you know how to hire developers and managers? (and is it possible where you're based?)
- Do you expect a lot of ongoing work?
If your answer to all of these questions is yes then hiring developers internally is probably the best option.
Most of all, you want to keep the core of your business inside your company and keep control over it. It will let you build the right structure.
If hiring becomes a problem for you, you can experiment with companies that will outsource developers for you.
On the other hand if software plays only a supporting role for your company, most of the time you don't need to manage every aspect of building it. If you're not a tech-first company, hiring good developers and manage them may be difficult. Agencies that specialize in building custom software got it covered and can take care of this kind of work for you.
Additionally, you won't have to make the difficult technical decisions yourself. This often comes in a package, as a good agency will help you with that.
There's no general answer to whether you should build software in-house or hire an agency to do that for you. Everything depends on the kind of project and your goals.
For companies that place their software in the core of their business, building everything in-house makes the most sense. I can tell you from my own experiences that building such projects outside can lead to multiple problems.
On the other hand, if the software that you want to build is more of an addition to your company, building an internal team for that can take more time, money and effort than the whole project is worth. Not to mention having to manage the team later. In such situations, find a trustworthy agency and let them take care of that hard work.
You can also come say hello to us, we love working on such projects.
This is the first article in our series on basics of running software projects. We'll publish a new one every week until we run out of topics.
If you enjoyed it and would love to learn more about working with developers and software agencies, sign up to our newsletter.
We'll send you an email when we publish a new post.