Why startups should not offshore software development
One of the most common questions I get asked is why shouldn’t I (a startup founder) outsource the development of my product / service to a developer or agency is a country where the price is much lower.
In fact the per hour cost of software developers can go as low as 20% of the cost of software developers in the UK. I’m going to assume for the sake of this article that the developer in Asia (or any other part of the world) is just as good as the UK developer I might hire. Of course there are poor developers and great developers in every country, although it may be harder to identify the better developer abroad.
My view is that outsourcing to another country, another timezone and possibly a country where the developers first language is not the same as your own, introduces too much extra risk.
The risk for me loss of being truly agile. Agile methodologies are all about enabling you to make quick decisions (and course alterations) based on testing assumptions with your customers and iterating on development (aka the customer feedback loop). This requires excellent communication skills and processes, even in an in-house team.
In my experience, an MVP done properly will look very different to the MVP you originally envisaged. These changes come from rapid learning’s made from prototyping and testing. Testing starts internally and then should quickly include fresh faces, especially for a consumer product and representatives from the customer for B2B products.
Of course all this is possible using an outsourced remote developer, half way around the world and with a different language and culture but it’s a lot harder to pull off and in my experience usually has a hidden costs.
The hidden costs are sometimes monetary, as the vendor realises the scope changes and feedback is going to take them a lot longer than thought. Often an outsourcing vendor will agree to a fixed price the cost in this case could be in quality and crucially the hidden cost can be time.
A startup founder, if not writing the software, should be selling the product / service. The additional burden of working with outsourced remote developers can put a lot of strain on your time. I’ve also see three month MVP projects taking 12 or even 18 months to complete which can cripple a business idea.
The other issues here is the opportunity cost. As a founder, if an idea isn’t going to work, you want to find out as quickly as possible so you can move on to your next idea or pivot.
To summarise: the true cost of outsourcing is much more than the hourly rate of a developer. I’d rather pay a lot more (hourly), thin out my MVP to barebones and get another loan out to pay for it so that I can be truly agile, as close as possible to the development process and marshal the customer feedback loop. Even being 10% more agile may be the difference between creating a profitable business and a business that never get’s off the ground.
Of course the argument above is aimed at early stage startups, I would argue that it’s always better to have the developers and business collocated. This is also a principle of the eXtreme Programming agile methodology of which I’m a big fan. However, the risks can decrease with the maturity of the business and the code base. This is because the need for agility whilst always there is less acute in more established businesses. Also, parcels of work which are more commoditised can be outsourced by an in-house team overseeing the work and integrating the code.
Ideal options for MVP development, in order of preference:
- top choice — code it yourself: if you can, code it.
- get a tech co-founder
- hire a permanent in-house developer
- hire a contractor
- hire a remote developer(s) (or small agency) in the UK
- hire a remote developer(s) (or small agency) in Europe
- hire half way around the world
Finally, even in the startup realm there are exceptions, scenarios where remote outsourcing can work:
- Long standing relationship — if you have a longstanding relationship with the outsource partner, you may be able to pull it off through your excellent established communications
- Fly away — you could go and move to the remote location for the initial development and base yourself with the developer(s)
- Partial outsourcing — As mentioned earlier, there may be packages or aspects of the development that can be outsourced by your in-house developer such as writing rules and algorithms that slot into an established architecture
- Lucky — you could just get lucky