Comment Outstanding results with an Open Source approach (Score 3) 167
We have been getting outstanding results from our partners in Russia and India.
I think that many of the deals offered by overseas development shops are a bad idea. Some shops will offer to do fixed-price work that is very expensive and time-consuming to specify and test. Others will rent a mass of undifferentiated (and poorly trained) bodies for long-term projects.
We have gotten good results using a very different approach. We make our overseas development partners into an integral part of our development team with daily communications.
Managing one of these projects is like managing an open source development project. The team communicates over the Internet on a daily basis. Code is checked in every day. There is extensive peer review and feedback every day. There are daily builds and stable builds that are shared. There is a stack of bugs and issues.
Most importantly, there is no us and them. Instead, there is one unified team that happens to be geographically distributed. It turns out that a lot of "them" are very talented.
Can you violate Brook's law this way, getting faster results and more features by adding more coders? Sure you can, in the same way that open source projects get huge scalability. You just need to do it at the right stage in the project. I can think of a few simple rules that make this scalability happen:
* Make a good object oriented architecture with defined places to plug in.
* Do the architecture and initial builds with a small pioneering team. This way, when you scale up the development team, the new people are starting with something that works.
* Build every day.
* Make all of the source code and API's available to everyone. That way, people can fix problems and keep going, instead of spending days on workarounds.
I would recommend the following deal structure to get best results:
* Maintain a personal relationship with the management of the development shop. This is easier if you work with a small shop, which I certainly recommend.
* Screen the individuals working on the project using resumes and interviews. Good programmers are much better than bad programmers. Make sure you get the good ones. Many Indian shops will offer a (bad) deal where you get a generic developer (unnamed), and they can substitute less experienced people at will. Do NOT let them get away with this. Select and keep individuals. As always, offering good, interesting work will help you do this.
* Pay for person/weeks, rather than for hours (subject to petty disputes) or for fixed-price deliveries (these are very expensive to specify and test).
* Offer a long-term commitment. This should get you a discount and access to the best engineers. Stable cash flow is very important for software development companies that want to lock in a base of revenue and then grow on top of it. Trade them the steady cash flow for access to the best talent at good rates.
* Make them work for referrals. Offer to promote them to other customers if they do a good job.
I think that many of the deals offered by overseas development shops are a bad idea. Some shops will offer to do fixed-price work that is very expensive and time-consuming to specify and test. Others will rent a mass of undifferentiated (and poorly trained) bodies for long-term projects.
We have gotten good results using a very different approach. We make our overseas development partners into an integral part of our development team with daily communications.
Managing one of these projects is like managing an open source development project. The team communicates over the Internet on a daily basis. Code is checked in every day. There is extensive peer review and feedback every day. There are daily builds and stable builds that are shared. There is a stack of bugs and issues.
Most importantly, there is no us and them. Instead, there is one unified team that happens to be geographically distributed. It turns out that a lot of "them" are very talented.
Can you violate Brook's law this way, getting faster results and more features by adding more coders? Sure you can, in the same way that open source projects get huge scalability. You just need to do it at the right stage in the project. I can think of a few simple rules that make this scalability happen:
* Make a good object oriented architecture with defined places to plug in.
* Do the architecture and initial builds with a small pioneering team. This way, when you scale up the development team, the new people are starting with something that works.
* Build every day.
* Make all of the source code and API's available to everyone. That way, people can fix problems and keep going, instead of spending days on workarounds.
I would recommend the following deal structure to get best results:
* Maintain a personal relationship with the management of the development shop. This is easier if you work with a small shop, which I certainly recommend.
* Screen the individuals working on the project using resumes and interviews. Good programmers are much better than bad programmers. Make sure you get the good ones. Many Indian shops will offer a (bad) deal where you get a generic developer (unnamed), and they can substitute less experienced people at will. Do NOT let them get away with this. Select and keep individuals. As always, offering good, interesting work will help you do this.
* Pay for person/weeks, rather than for hours (subject to petty disputes) or for fixed-price deliveries (these are very expensive to specify and test).
* Offer a long-term commitment. This should get you a discount and access to the best engineers. Stable cash flow is very important for software development companies that want to lock in a base of revenue and then grow on top of it. Trade them the steady cash flow for access to the best talent at good rates.
* Make them work for referrals. Offer to promote them to other customers if they do a good job.