

Ask HN: When is outsourcing a good idea? - pyarriv

I am not running a startup or anything like that, I have never even been what you would call "gainfully employed" so far, I'm just finishing my MSc in CS right now and I'll probably work in software engineering after that. However, I am still interested in learning more about the process of developing as a team, splitting up a larger problem into smaller ones which can then be distributed as workloads among the developers, etc. Outsourcing is obviously a part of this.<p>Do any of you have any experience with outsourcing development to, say, India? What kind of tasks are good for outsourcing? I have heard very mixed reports from the few people who were willing/able to shed some light on this subject. Some told me that only rather superficial work is suited for outsourcing - like, generic web development tasks with PHP/JavaScript, some C# GUIs which run on top of databases to manage customers and such. The general sentiment I got was that more specialised tasks (in particular with embedded systems) are generally less suited for outsourcing. For example, does it make sense to outsource low level development like writing drivers in C?<p>I would imagine that complicated code which will be subject to a lot of maintenance is less suited for outsourcing since you usually want the original authors to work on it and getting new people in on it takes more time. You probably don't want to depend on a very specific group of people you outsourced a task to anyways since it's usually more of a short term solution, right?<p>Any input on the subject?
======
phamilton
One advantage to outsourcing is that it forces your to compartmentalize
different portions of the project. For example. Having one group develop the
server side software of your application and another group develop the
frontend, you are forced to provide a solid black box (possibly through a REST
api or something of the sort) to your frontend team. That means documentation
(in some form) and it forces your to stick to good coding practices.

