This is an answer I wrote on OnStartup, here is the link to the original page.
Dilemma: to outsource the coding or do it yourself
I develop and sell iPhone apps. I've released one app, and decided to build a few more, in parallel. I thought about outsourcing some of the coding, so I went on Elance
and posted some jobs there. The estimates I've got from the contractors there turned out to be a bit higher than I had expected, and were generally comparable with the software
engineer salaries in the US (e.g. they ask for $1000 for what would be maybe 4 days worth of work for me). I wonder if the lower rates of the overseas contractors often get offset
by their lower productivity? So I started doubting if the outsourcing approach is worth it. My company is new and is not making money right now. I'm bootstrapping it with my savings.
I could invest some money to get things done by other people, or I could invest some of my time and save the money. What should I do? I'd appreciate any insights and advice about my situation :)
Outsourcing software development can be a positive option but has major downsides. I've been badly burned with outsourced developers so here are 3 lessons that might help you.
First of all, realize that the more valuable the software you want to create, the less likely you are to successfully outsource its development. In other words, if your software
might generate a gazillion dollars of revenue and you're outsourcing its development for a few thousand dollars, then the developer will have very little incentive to perform miracles
for you. How would you feel coding for dollars a software that might make someone else a few million dollars? This is especially true if you're outsourcing the first version of a
software: specs kill creativity because it's only AFTER seeing the coded result of a spec that you realize that such and such functionality should actually be done differently. If
you're creating something new, the spec should be a roadmap to the discovery of the final product, as it's being built. I don't think you can outsource the creative process that goes
into the first build of a new software. On the other hand, if you're porting an existing product to another platform and everything is already figured out, then outsourcing might work.
So in my opinion, don't outsource software development that requires lots of creativity or that's critical to your business. That's why for startups, outsourcing is usually a terrible idea.
Second, in terms of payment, here's the biggest lesson I've learned. At delivery, the contractor should NEVER EVER be paid up more than 50% of the amount due. That way, if at delivery the
outcome is in any way botched, the contractor is still holding 50% of the bag and has some incentive to fix it. If instead the contractor is nearly paid in full at delivery, then he has
little to no incentive to fix any bugs that the software may contain; he might then in fact ask you for more money! So heed this lesson: at delivery, never more than 50% paid up. And if
the contractor doesn't have the resources to float his operation, then he might be facing some financial troubles which may or may not influence the outcome of your project...
Third, if you outsource development, you MUST remain in control of the Q&A. As you know, there are many ways of writing code and some ways might be undesirable shortcuts that may
come back and haunt you later. Be involved in the major architectural decisions and make sure that the code is at all times testable. If you hear "waterfall methodology", run for cover;
if you hear "agile test-driven development" or "source control access", stick around. In other words, only outsource what you could yourself do so that you can supervise and understand
what's happening, in a clear and transparent process.
Hope these help you with your dilemma and good luck with your business.
answered Aug 5 '12 at 21:01