Sandeep Sood in the comments to my previous blog entry : Importance of Iteration in Process asks a very important question:
How do you use Iterative software development methods, a la Agile Methodologies, in outsourced efforts such as Web 2.0 kinds of software development?
The first roadblock to cross is the cultural difference between a software engineer in a startup company that engages in such development efforts in the U.S and a software engineer with the outsourcing vendor. These cultural differences can be rather stark in India, Israel, Romania or Chile, all different from each other. This should not be underestimated since these groups of engineers in other countries may not have the "same wavelength" of working as software engineers in the U.S. (especially in small startup companies where a lot of these kinds of work is done rapidly with requirements changing daily)! This is what Sandeep was driving at, I am guessing.
That said, there is an explosion of such startups in many other countries, especially in India. So finding engineers to work on such projects may become easier as time goes on and they get experience working on such projects.
Assuming that this roadblock is crossed, in many cases, we still find that the Waterfall Model of software development TAIL is wagging the PRICING MODEL DOG in Outsourced Software Development. Requirements-Design-Development-Testing-Delivery model is chosen and so a Fixed Price Contract. Everything needs to be specified upfront clearly, and any changes go through Change Requests that will be priced individually and tacked on to the original contract.
There are a number of outsourcing service providers that offer "Managed Teams". These are mostly smaller and nimbler vendors that will create a team for you that you manage daily, remotely! You pay for them on a monthly basis for X number of people but it is your responsibility to manage them remotely and guide them in their day to day development activities. A lot more work on your part as the buyer of such services, but may be very suitable for highly iterative development projects.
If anything, I would say that web-based, Browser accessible software development is a lot more easier to create,manage and use than traditional client software. As many of you already may be doing, in such cases the production system, the staging system and the development system servers are separate from each other and all available on the web, whether the developers are here in the U,S or in India. Ideas are tried out on the development system server, tested on the staging system server and once approved for release, put on the production server. So location really becomes a non-issue when software that is hosted on web servers are developed. If anything, time differences may allow two groups of developers contribute "round the clock" to interesting experiments!
Combining the right kind of pricing model can make even highly iterative software development projects feasible for outsourcing. As I said before, the key dependency is , Can you find people with the service provider that can work in the same fashion as you? Trying out new ideas, scrapping those that do not work and adopting those that do.
O wonder! How many goodly creatures are there here! How beautious mankind is! O brave new world! That has such people in’t! – The Tempest – William Shakespeare