If you’re building a business, you’ve probably had to think about building your software solution. Very often, the way to go is outsourcing, be it onshore or offshore. Sadly, in most cases, this turns out to be a painful experience. A 2011 survey reports that 62% of offshore IT contracts cost much more than businesses expected in the United States.
Indeed, outsourcing your solution comes with many issues. It’s usually quite complex to formulate your needs accurately, leading to expensive delays and difficult discussions. Even when you eventually get what you want, maintaining and evolving it over time is going to be hard. You need to hire the same agency – most programmers won’t touch somebody else’s code -, request a new proposal, etc. And if you reach the limits of the current agency in terms of skills, you very likely will have to start over… Finally, even if it works great, you’ll have to handle your back-end, servers, etc. yourself. They will break at some point, inevitably…
On the other hand, isn’t it better when we get things done by people who are experts at what they do? This usually guarantees a more efficient approach. This is true for lawyers, accountants, or even HR. For instance, ZenPayroll has made many businesses’ lives easier dealing with setting up a payroll and looking after their taxes, etc. Shouldn’t this apply to software development as well? Don’t we want to get our software solutions built by people whose core business is building software, rather than trying to build out an internal software competency?
Building software is a specialist discipline. This is because, today, building software means writing code and engineering systems. And this requires a deep technical training, similarly to understanding law or dealing with taxes. So, we have a dilemma: on the one hand, writing code requires the kind of specialization that’s best dealt with by outsourcing, and on the other, building applications touches on core business issues that are extremely difficult to outsource.