Wikipedia defines crowdsourcing as:
The act of taking a task traditionally performed by an employee or contractor, and outsourcing it to an undefined, generally large group of people, in the form of an open call. For example, the public may be invited to develop a new technology, carry out a design task, refine an algorithm or help capture, systematize or analyze large amounts of data.
Although it has had some success I wonder can it work for developing large, complex applications like many of the financial applications I work on for a living. I can see it working for fairly generic applications (e.g. many webapps), but complexity takes a lot of managing. Many of the finance companies would also be reluctant to make requirements publicly available, exposing their intellectual property to their competitors.
However, a large chunk of any application is plumbing code. This article on crowdsourcing demonstrates how one company opened up about half of an application to crowdsourcing and is committed to do th rest of the integration work:
In Baltimore-based Constellation Energy's case, the $19.3 billion energy company didn't stage a completely open call; rather, it worked with TopCoder , a Connecticut-based company that stages regular coding competitions, ranks developers who compete and then makes this talent available to businesses that need systems built, also through a competition-based model. TopCoder currently has about 130,000 members from more than 200 countries.
A TopCoder project manager assessed the needs of Constellation Energy's commodities group, broke up the system design into dozens of small components and released about half of those component requirements to member developers, who could send in their best coding effort. (Constellation decided to build some of the components in-house.)
Submissions -- which continue to roll in -- are rated using a standardized scorecard, and winners are rewarded anywhere from $500 to close to $2,000. When all the components are complete, TopCoder will work with Constellation to integrate them into a functional system.
It will be interesting to see how this project turns out.
I had a client a couple of years ago that was not happy with the quality of code coming back from an outsourcing vendor and had the idea that he would set up a team in NY to integrate (and fix!) code coming back from this vendor, but I don't see why this integration team couldn't integrate the best code from a few competing vendors!