Some comments from drinko's dilemma got me thinking... is there any way that outsourcing can be made to work, consistently?
What about a competent lead developer who designs the application and writes the unit tests, but outsources the small implementation details and bug scourging/research to outside developers?
For those of you who have had good experiences outsourcing, was there any such pattern?
"What about a competent lead developer who designs the application and writes the unit tests, but outsources the small implementation details and bug scourging/research to outside developers?"
This won't work. You can't really write unit tests separate from the implementation. The implementation and unit tests feed off each other.
"is there any way that outsourcing can be made to work, consistently?"
Here is what has worked, in my experience.
(1) Have a fixed bid AND milestone driven (where "milestone" is used loosely to indicate a "chunk" of business value and takes between a week to a month to code) project. Pay per milestone. At best you lose a couple of weeks worth of money.
(2) Hire a good developer in India/China/wherever. Work with him on the project with loose milestones. Talk for at least 20 minutes everyday (skype, etc). Once you gell, ask him to reccomend another, equally good developer. Build the team slowly.