It’s a decision that can make or break a startup: Do you invest in in-house resources to create your product or do you outsource software development to a third-party company?
On the one hand, as a startup, shouldn’t product development be a core competency? On the other, surely it’s better to go to market as quickly as possible. So shouldn’t you allow the “experts” to help you get there and avoid all the pitfalls of technology development?
Both approaches have their pros and cons and the decision is by no means straightforward. The answer depends on many business and cultural factors and the type of product you are looking to build.
Nevertheless, whether or not to outsource software development is a decision that needs to be taken early on in a startup’s life. The choice can often leave founders in a quandary as to the best approach.
At Altar.io we have worked with a number of early-stage businesses , as well as providing product innovation for larger corporates , and we have learned many lessons on how to tackle such a momentous decision. So if you’re deciding between outsourcing to a software development company or building your tech team in-house: here’s a structured reasoning to help you avoid mistakes.
The Outsource-or-Not Decision Tree
The answer to whether or not to outsource software development requires you to break that complex question down into simpler steps.
Step 1: Is technology part of the core value proposition of the product? Or is it a vehicle to solve a business need?
For most startups there are two possible answers to this, either:
- Technology is the core proposition
- Technology is the means being used to solve a business issue
In general, if your business comes under (1) then you are more likely to develop the solution in-house. If it’s (2) then your startup should probably outsource software development.
For example, consider Loopback, a Node.js framework that enables developers to create dynamic end-to-end REST APIs with little or no coding. Here, technology is pretty much the only proposition so Loopback would come under (1).
Contrast this with Airbnb, which enables property owners to monetize their homes and enable travellers to have a unique experience in the city they are visiting. Clearly, the key value proposition of AirBnB is for property owners and travellers, meaning the business comes under (2).
Generally, businesses that come under (2) and are using technology merely as a way to solve a business issue. They should consider outsourcing, for reasons we will discuss later.
Sometimes the distinction is not so clear. Consider GitHub, the platform for developers to host and review code, manage projects and build software. Whilst technology is the core proposition, the platform itself is there to solve a business issue for developers. This creates a grey area.
For now, let’s proceed to the next steps.
Step 2: What is your target audience/who are the buying customers?
Usually, the answer can be summarised as either:
- Our product is aimed at technology specialists/developers
- Our product is aimed at consumers/business customers
Returning to our previous examples, Loopback and GitHub come under (1), whilst Airbnb comes under (2). This can again, however, create grey areas that can only be solved by answering one more question:
Step 3: Does your product involve a technological “secret sauce” that makes it unique?
By this, we mean either the technology itself is proprietary to your startup, or the way it’s being implemented is unique. The two possible answers are yes or no.
This clarifies the GitHub “grey area”. The platform is targeting developers, but neither the underlying technology nor its implementation is unique or proprietary, so the answer is no. It contrasts with Loopback, which would come under yes.
Let’s take a look at a visual representation of the 3 steps I mentioned:
So Should You Outsource Software Development or Not?
As illustrated in the outsource-or-not decision tree, it’s generally inadvisable to outsource software development when:
- The business has technology as its core proposition
- The end consumers are technology people
- The technology is either proprietary or unique in its implementation
In any other scenario, a software project can either be built in-house or outsourced (or possibly a combination of the two). This is dependant on your willingness and other circumstances that might affect your business case.
Case Studies from Successful Companies
Consider Alibaba, the multibillion-dollar company outsourced software development to a firm in the US.
In Liu Shiying and Martha Avery’s words:
“At the time, overseas development talent was still in short supply. The US had the skills Alibaba needed to compete with e-commerce giants like eBay and did it all behind the Chinese internet restrictions.”
The Alibaba case shows startups come in all shapes and sizes. Not all are co-founded in a garage with the right tech person in charge from day one. And there are many others that, for one reason or another, decided to outsource software development at the beginning of their journey.
Upwork was built using mostly contractors. Hiring 150 of their 200 product and engineer workers freelance. Doing this they benefited from the world’s best talent while proving the relevance of their project. This sort of self-fulfilling advertising is as cheap as it is genius.
Skype outsourced its platform construction to an Estonian trio of developers. Founders Niklas Zennstrom and Janus Friis proved back in 2003 that international freelance collaboration was no doomed venture, which many thought at the time.
WhatsApp launched with just a quarter-million USD in starting capital and with a priority to keep operational costs at a minimum. To develop from their Mountain View base would have been impossible. So they looked into Russia, where co-founder Jan Koum recognized some of the world’s best offshore developers conduct their services.
Igor Solomennikov, the first iOS developer, started as a contractor and later joined the team in California on a full-time basis. Distance between base and freelancer should prove no cause for concern when startups can now reach around the world as easily as they can across the street.
TransferWise state that they do not “do offshoring, outsourcing or use consultants”. But they admit to a number of “independent workers” who, if you dig a little deeper, are developers and technicians emanating mainly from Ukraine. It is interesting to see that some startups that outsource software development prefer to present an in-house “vibe” to its customers.
On the other hand, you have YCombinator. They decided on a different approach.
Michael Seibel, partner @YC, states it straight:
“Reading YC apps, I’m seeing too many founders who have raised some seed capital and who outsource engineering to cut costs. This is a common error that is a huge red flag for future investors and is often much more expensive in the long term than having a technical co-founder.”
Joel Gascoigne, Buffer CEO and founder, seems to agree with this reasoning. He proposes 3 clear points to support the thesis that tech startups should not outsource software development. These points summarise most of the criticism I’ve heard during my many years attending events and talking with founders.
1. “Your goals and a freelancer’s goals are completely misaligned”.
Joel’s point rotates around the fact that freelancers and agencies want to make money, while a founder wants to find the product-market fit for his startup. On the one hand, many agencies or freelancers fix a price for the MVP. This could mean they take steps to ensure that the scope does not go beyond what they budgeted for.
On the other hand, a founder eager to find the product-market fit needs to put his product out as soon as possible and iterate from there. And this is quite opposite to what freelancers and agencies normally want you to do.
Freelancers and agencies traditionally want to work in a “known problem, known solution” environment (e.g. a restaurant that needs a website represents a situation where both the problem and the solution are known therefore it’s easy to know what should be on a restaurant’s menu).
While tech startups operate in an “unknown problem, unknown solution” environment (no-one knows if the problem is real or if the solution is appropriate until the new product is being used). That’s why there is often misalignment!
2. “It gets you into the wrong mindset of what it takes to get a product off the ground”.
This relies on the fact that the majority of us think that success depends on getting a product built. That’s why we need to find a tech person (or entity) to get things done if we’re not capable (i.e. coding).
What Joel thinks we need is to concentrate on is the aforementioned product-market fit. Which can be achieved by uniting a set of interactions with no code at all. Instead, using Wufoo, Google Forms, Unbounce, etc.
What’s the outcome of this digression? That, later down the road, any decent coder will be interested in joining a startup put together without code. If early traction shows great potential — that’s somewhere they can make a big impact.
3. “The founding team should wear every hat”.
The co-founders should do everything in the beginning. Why?
- It provides the right mindset: the founding team can make anything happen.
- It cultivates a deep overview of the different areas of the business, making iteration super-fast and decision-making easier and smoother.
- When at the point of hiring, you’ll know the difference between average people and great people.
- You develop a passion for all of the different areas you get involved in.
What Joel suggests is that each founder should find the hacks and tricks to validate their assumptions with the weapons they have in their armoury. At a certain point, you’ll have such an interesting proposition that a good technical co-founder will come on board.
It would be redundant to go into the big list of successful startups started by (at least) one in-house tech partner as there’s simply so many. Apple, Google, Microsoft, Uber… you see what I’m saying.
Still not sure what to do? Here are The Pros and Cons of Each
Pros of Outsourcing Software Development
You have access to technical resources from the very outset. Obviously, you’ll need to go through a procurement phase, but that time will be way less than what is required of any stronger commitment (i.e. onboarding the right CTO or identifying your key first employees).
On top of this, as your idea is still a “napkin idea”, you may not be able to confidently attract top talent yourself, so it’d be very difficult for you until you find the right person to onboard.
As a founder, your goal is to validate your idea as soon as possible. The reasons for this are to gather investors and the interest of top talent. The earlier you can begin to do this, the better. You don’t want to waste time onboarding and managing developers (which is in itself very hard!). Instead, you want to concentrate on your business/sales/marketing duties to build the foundation of your business’ viability.
Access to Great Value for Money
This applies to certain regions only. Tier 1 talents may ask you for a significant wage, which can be too much for a startup yet to properly kick-off. According to this report by James Wise (Partner at Balderton Capital), you can see the average yearly salary asked by developers in different EU Countries.
On the expensive side, we’ve got Switzerland (average 90,524 USD), Norway (86,042 USD), Denmark (75,758 USD) and UK (70,500 USD). While on the cheaper side we find Portugal (22,549 USD), Greece (24,805 USD), Spain (34,229 USD) and Italy (34,229 USD). On top of this, it’s intriguing to see that the amount of STEM Graduates does not follow the same price curve. This means there are cheaper countries that hold a significant technical workforce.
Expertise & Experience
A quality established agency will have helped build hundreds of startups across multiple industries. You should take advantage of their experience and expertise. A committed software development company will be excited to get involved. They will often challenge your ideas and make your product stronger in the process.
Cons of Outsourcing Software Development
Freelancers (and agencies) aim to make money. While your goal is to minimize the product as much as you can to then iterate on top of it. Freelancers and agencies might push you to build something bigger than you need.
Freelancers or agencies may not follow the industry standards for project organization and documentation. If this is the case (be it TDD (Test Driven Development), CI/CD (Continuous Integration/Continuous Deployment) or other formats), their code will be very difficult to follow by any other developers that join the team later or occupy the seat if they leave. They will also be the only owner of the key to your castle. So if you outsource software development be sure the one you’re outsourcing to follows every relevant standard!
There are several communication issues that can arise when outsourcing software development – especially when nearshoring and offshoring. One of the hidden costs can be a language barrier. Dialect, pronunciation, vocabulary, syntax and accent can all create barriers – especially between native and non-native English Speakers.
You also may have to account for timezone issues. Unless you, or the software development agency, are happy to commit to anti-social hours you risk being left waiting for responses from them – staring at an empty email inbox.
You also have to take into account communication technology. As advanced platforms such as Zoom, Google Hangouts, Skype, etc. are they are never 100% reliable. And, again, unless you are happy to be sitting staring at your email inbox waiting for a response, its a factor you have to consider
Be aware of the “lock-in nightmare”, especially with agencies. If you want to be able to work with other parties in the future, be sure the contract you sign allows you to bring your code to new players. Otherwise, you’ll end up in marriage by force and have to call upon your lawyers for the divorce.
Besides the lock-in nightmare, another aspect to be careful of is all specifics concerning Intellectual Property. You don’t want to use a code that belongs to someone else and prevent yourself from iterating your business!
Doing it In-house – Pros
Your team has the same goal as you do. Grow the business. And to do so while following a lean, iterative approach. All of you want to minimize the risk of failure while speeding up the validation phase.
Growing professionally and personally, as a team.
In another article I talked about how being in the office can make all the difference in a Startup. Taking some words from that article:
“As entrepreneurs, we love to challenge ourselves. So when we come together, we challenge each other, exponentially. This expands our creative potential. Bouncing ideas, killing bad concepts, collaborating to refine a singular, golden vision.
Also, there’s the Harvard Business Review:
“Employees with a neighbour of alternate skills at the desk next door received a 10% “performance spillover”, as observed across three types of worker: productive (who completed tasks quickly but lacked quality), quality (who produced superior work but did so slowly), and generalists (average across both productive and quality dimensions).
Management could also use these combinations of workers to their advantage, say by grouping workers of opposing strengths — a “quality” worker with a “productive” worker, for example. This improved work quality across the pair to the tune of 13% productivity gain and 17% effectiveness gain”.
No risk to incur in tricky IP clauses
No agreements need to be signed with suppliers, which erases the risk of dealing with any dishonest clauses. Such shady agreements may well prevent you from using, modifying or selling the project at all – unless you pay the supplier a lavish fee.
Doing It In-House – Cons
When Starting a Business There’s a Timing Issue: How Much it Takes to Find the Right Tech Talents
You’ve read a couple of blog posts about “How find the perfect CTO” and you’re on your way, right? You will hear many people saying that “investors invest in teams” so “you must find your CTO“. You will start hitting tech meetups, purchasing tickets for the hottest startup events like crazy and listening to many geeky conversations trying to find your co-founder. (Don’t get me wrong, I love tech meetups, events and geeky conversations!)
If you pick the right meetups, you will meet lots of interesting people with interesting projects, and also developers that seem to be geniuses when they start dropping buzzwords you can’t understand. But how do you separate the wheat from the chaff?
You’ll take several weeks (or months) before finding the right talent that fits correctly within your team. Is it worth the risk of waiting several months to get things done?
Have you ever managed a team of developers? If you haven’t, be aware of what you are getting into. There are 10 Different Types of Developers, each with their own specific characteristics. Creating and keeping a balanced dev team is a very challenging art. This is due to these two characteristics of developers: (i) generally speaking, they are not the most skilled communicators; (ii) they tend to be fiercely competitive, especially when it comes to tests of intellect.
If Not an Experienced Recruiter, You Might Need to Fire your Employees/Co-Founder
Serhat Pala states:
“Firing someone never gets easier (unless you’re getting paid big bucks to yell “You’re fired!” at people). Even if you’re happy to see someone go, you know that by firing them you are putting them and possibly their family in a precarious position and that can be tough to swallow. Research done by the Journal of Vocational Behavior says unemployed people are twice as likely to suffer from psychological problems as employed people, so the danger is real.”
Plus all the bureaucratic issues firing drums up (varying from country to country, of course). Then, well, you’ve got to consider the amount of energy and time you should dedicate to the topic.
Firing is never easy, to put it again in Pala’s words:
“The best time to fire someone is before you hire them, which means you should have a thorough process for recruiting and interviewing candidates so you only hire people who you don’t need to worry about firing later”.
An Overview by the Experts
Judy Robinett, startup expert and best-selling author of Crack The Funding Code notes:
“The key decision point is around how quickly you need to get to market and what your financial resources are. Remember, outsourcing has been used by many very successful companies to develop their MVP, such as Slack, which is valued at $3.8bn, Skype which sold to Microsoft for $8.5bn, as well as BaseCamp and Github.”
Evan Varsamis, CEO at Gadget Flow
“If you have someone in-house, most probably there is chemistry between you so it’s more efficient to talk about projects and get things done.”
However, outsourcing is not for everyone, and there are cultural factors to consider. Evan Varsamis, CEO at Gadget Flow states:
“I personally prefer having an in-house team to work on projects instead of hiring a new team/developer for every project. Most freelancers or outsourced developers care about delivering the project, not the best possible version of it but whatever releases the next payment.” He adds “Another issue (with outsourcing) is communication. If you have someone in-house, most probably there is chemistry between you so it’s more efficient to talk about projects and get things done.”
Minh Q. Tran, Managing Partner at Odysseus Alternative Ventures
“You can outsource software development only when tech is not key to your business”
Minh Tran, Managing Partner at Odysseus Alternative Ventures presents a very practical view on the matter. Outsource software development when:
“Tech is not key to your business. For example, in crowdfunding, if the key success is about getting projects on the platform or investors then you can white label the platform to kickstart your business”. Don’t do it when: “tech is a barrier to entry to your business. For example, in regtech, you need to build a KYC platform to match EU regulations, etc…”
Alexander Jarvis, Startup Mentor and Co-founder of 3 Startup “Unicorns”
“If you have cash, want to launch fast, and don’t know lots of developers then pay a quality shop to ship. On the other hand, if you have some cash, don’t want to throw out code, and will be fundraising soon then do it yourself!”
Alexander Jarvis, startup mentor and co-founder of 3 Startup “Unicorns” usefully summarises the main advantages and disadvantages of outsourcing software development versus in-house development:
Pros of Outsourcing Software Development
- Team: All the tech skills are at hand. If team members suck, that’s not your problem, the shop needs to find someone else.
- Quality: If the outsourcer is really good, you get a product that actually works.
- Project management: Good shops will run a process, and you should typically expect a product on a fixed timeline.
- Time to market: If you are trying to ship an MVP, they may help you do that faster. If you are burning money, having a product to sell matters.
- Focus: If you aren’t a developer, you don’t have a clue. If you don’t initially have to deal with tech, you can focus on other aspects of getting set up, like marketing, etc.
Cons of Outsourcing Software Development
- Price: They will be more expensive than if you are competent and have access to the right people in-house.
- Documentation: They might not document things properly, meaning you may eventually end up throwing out the whole codebase and start from scratch
- Code: Lower quality shops or independent devs may ship crap. Ok, you get going, but you still may have to dump everything eventually.
- Investors: Do not look favourably on third party work as there is no tech competency in house. You illustrated you can pay people, but not that you can ship anything.
Pros of In-house Development
- Control: You have more control over the process.
- Continuity: Easier for devs to work on the code that they built.
- What are you?: This is the KEY point. If you are a TECH startup you need to be a tech startup. What are you otherwise? It needs to be a core competency.
- Investors prefer this. You have proven you can build a product. Therefore, you will be more likely to be continually able to improve and adapt it for customers.
Cons of In-house Development
- Hiring: Do you know where to find the devs you need? Most founders don’t have a clue where to start.
- Firing: If your idea doesn’t work you need to scale down, which is hard.
- Mess up: If your devs don’t ship, you can’t launch at all. It’s better to have something expensive that works. As opposed to something sort of expensive that is pointless and doesn’t let you learn from your customers.
So Should a startup Outsource Software Development?
The decision to outsource software development will depend on many business and cultural factors. And if you decide to outsource software development, then ensure it’s on the right basis.
Paul O’Brien, founder of MediaTech Ventures, and Director for Texas of the global startup incubator Founder Institute provides some useful insight on the matter:
“Outsource the job to be done. Not the reason it needs to be done nor the ownership of what needs to be done; outsource the skills and work in the same manner that you’d hire the best resources for any job. The challenge for entrepreneurs is in appreciating that what is built still needs to be your IP. Outsourcing your software build should not be at the expense of losing your understanding, control, or ownership of what you’re doing.”
Now that you have reasoned with the Decision Tree diagram, looked at the best-in-class examples, and seen what the experts had to say, you must be close to making a choice.
Whatever your call may be, you should read the full recipe of traits to look for in business partners right here: What’s the Best Way to Build Your Startup? CTO, Freelancers, Agency?
The choice, as they say, is yours. There are never any guarantees that the decision you take is entirely right. Ensure you take it on an informed basis. Look at business needs, cultural fit and financial resources and you stand a much higher probability of success.