Should you hire in-house or freelance developers for your project?

This is a YouTube video! Watch it here:

You have a great idea for a piece of software. Maybe it’s an amazing new app idea. It could be some tool that’ll make your business more productive and helps your team. It could even be the core technology that your business is based around. How do you get your software built?

Here are three approaches to getting software developers on your team, broken down into three categories based on your budget and the nature of your project.

In-house SWE staff

This is the option that I recommend if the software is a core part of your business. This is also the most expensive option. Hiring full-time permanent staff means that you’re also paying for benefits, more taxes, vacation time, sick days, and in some cases health insurance. Still, this is often the best choice. Let’s say that you’re a high-tech startup that provides a revolutionary platform for people to share investing strategies. This means that your software is a crucial pillar to your entire business.

The benefit of having permanent SWE staff is reducing turnover and preventing technical knowledge gaps that happen when some process goes undocumented, and the individual who knows how to perform that task is not present. With in-house staff, you can enforce best practices to guarantee that your codebase is maintainable and reliable long into the future. Things that go far beyond just the Intellectual property that would be delivered by your contractor or freelance developer. Stuff like mandatory code review, a reliable ci/cd pipeline, cloud resource optimization, and comprehensive documentation. I’d argue that it’s a lot harder to get these things when hiring contractors. With in-house staff, you build an engineering culture over years and years of development.

I would also argue that in-house staff is sometimes cheaper than contractors in the long run if you have a multi-year project. One reason for that is the ramp-up time required to onboard new developers to a project. Many developers will tell you that they’d rather greenfield a brand new project than maintain or upgrade an existing system. That’s because it’s easier. No matter how well documented your project is, any new developer, no matter how experienced will initially be a less productive individual contributor than a developer who has already been on the project for years. Consider the long-term development cost before making a decision.

How to hire in-house SWE staff on a budget

If you don’t have a lot of money to spend, one option that I see many startups do is to form a partnership and have a technical founder. This at least gets you a foundation. You now have one engineer who can get the ball rolling, and will build up a deep knowledge of your software. Once the project is big enough that more engineers are needed, you also have somebody who can interview candidates and help with hiring decisions.

Having a technical founder on your board might even help your company raise capital as well. This comes with challenges, however. Suppose that you’re a computer science student with a bit of experience. If you’re good at your craft, word will get out, and everybody and their mom will be coming to you with their revolutionary new app idea. Now, if you truly do have an incredible idea with great product-market fit, software developers will be banging on your door to get in on the action. So, take from that what you will.

Hiring a software development consulting company

Hiring a dev shop to build your software is the middle ground between hiring in-house staff and hiring freelance developers. They’ve built and delivered dozens of projects. They place a lot of emphasis on high-quality code rather than fast development. And, they’re only able to exist because they have a reputation and a history of satisfied clients. Using a Software development company means that you, the entrepreneur can focus on running and growing the business. It can take away the headache of managing a technical staff. And, if you don’t have an engineering background, you might not be the best person to manage engineers in the first place.

This is also, probably the easiest option. You reach out to dev shops locally, or online, look at their portfolio, and ask for quotes. You compare your options, and hire one of them. Then, you immediately have a team of developers who are ready to tackle your project. A good company will provide extensive documentation and support your application for years to come. They’ll provide security patches and save you money on cloud computing costs.

Hiring freelancers

Hiring freelancers or contractors is usually the cheapest option. These are developers that you hire at an hourly rate, and whom you pay no benefits to. You can also get freelancers at way cheaper than market value by tapping into the overseas developer community. I know companies that work with overseas developers from all over the world. Hiring overseas is not my area of ability, but I do have some exposure. About 5-10 years ago, I heard a lot of talk about hiring Indian developers. In 2021, I’m now seeing a lot of companies hire from Ukraine. You see, India, Ukraine, and other countries are producing highly educated and very competent software developers. It’s getting to a point where it’s very difficult for local engineers to compete in the gig market. Local engineers like myself are now, more than ever relying on their reputation for landing clients, rather than competing on price. I don’t know what the actual process looks like in terms of hiring overseas, but, it’s definitely going to be more difficult than throwing up a local job posting. This is a great option when you’re looking to build a small piece of software.

Suppose you’re a manufacturing company that performs lots of manual data entry that has the potential to be automated. The major downside of hiring entirely freelancers is that your company won’t have a strong understanding of the engineering behind your application. This is especially true if you, yourself, don’t have an engineering background. If you leave the development entirely in the hands of a third-party, then you may forgo quality.

I’ve seen this before when a friend of mine hired overseas to build his mobile app, which was essentially Uber for handymen. He was trying to revolutionize how people hire plumbers, electricians, roofers, etc. I think that it was a good idea with a high product-market fit. Who doesn’t want to be able to check a website and compare the prices and reviews of local plumbers before making a hiring decision? But, his app was delivered to him in a half-finished state, and he was out thousands of dollars. On top of that, his infrastructure had gaping security problems and was eventually hacked. I looked at his code, which had no documentation, no unit tests, and duplicated code everywhere.

This is not to say that you can’t get a quality codebase when hiring contractors. Quite the opposite. In fact, in the last section, I’ll make my recommendation for how to save money and guarantee that you get a high-quality, maintainable codebase.

My recommendation: Dev shop or in-house + freelancers

After considering the three main avenues for hiring a technical team, here’s my recommendation. If you have the money to spend, I recommend building an in-house team. If you don’t have the money to spend, I recommend either hiring a dev shop, or using a combination of in-house developers and freelancers. Hiring a dev shop is your turnkey solution that can get the ball rolling extremely fast in a cost-effective manner. On the other hand, hiring freelancers is the cheapest option, but if your project is on the larger side, I highly recommend having at least one in-house senior staff member who’s capable of overseeing the project.

Good luck building your company!