TopCoder—Crowdsourcing Software Long Before Crowdsourcing Got Cool
(Page 2 of 3)
finding really good people, and to do that you have to enable them to make a decent amount of money.”
TopCoder’s story goes back to the late 1990s, when Hughes was leading Tallán, a Connecticut-based developer of e-business software. “Most of the people at Tallán were very competitive, but in a joy-of-programming sense,” says Hughes. “We’d be working on a long project, and just to blow off steam, we would try to code something unrelated and see who could do it better or faster.” CMGI acquired Tallán in 2000, and after Hughes left, he decided to start a new company to see whether the competition model could energize programmers on a broader scale.
For the first couple of years—in observance of a non-compete agreement with CMGI—TopCoder restricted itself to running non-commercial, college-based software competitions. “But at the end of the two years, we said, ‘Let’s figure out if we can actually build real software using this model,’” Hughes says. “That launched us down a long path of figuring out how the software development life cycle could be boiled down into a series of competitions.”
The privately funded company is capable of handing over a large, multi-layered, enterprise-class software system to a client—but it never asks its community of 190,000 programmers and counting to take on a giant problem like this all at once. Instead, it breaks down each project into phases and holds separate competitions for each phase, using the winning submissions from the last phase as the starting material for the next.
Because many clients come to TopCoder without a clear idea of what they want, according to Hughes, the first step in the process is often a “conceptualization” and “specification” contest that helps clients organize their ideas and produce high-level requirements documents. (If clients need help roughing out basic designs or visualizing the look and feel of their applications, there’s a TopCoder Studio area where graphical and user-interface designers can join contests.)
Once the specifications are fixed, the basic components a software system needs are identified through architecture competitions. Then there are more competitions to design and develop each component.
“The modularity of the problems is a hugely important thing,” Harvard’s Lakhani says. “Only an IBM or an Accenture or a WIPRO could come in and try to create an entire ERP system. But if you break it down into small chunks, and create mini-contests around all of these problems, then you can lower the barrier to participating, so individuals or small teams can do it.”
Another part of the “secret sauce” at TopCoder, Lakhani says, is in the way the company integrates the chunks into finished systems. Not surprisingly for a company that takes competition so seriously, this part is largely outsourced as well, through software assembly contests. The company even handles the quality-assurance phase of software development, through application testing contests and so-called “bug races” (literal races to fix small software flaws, with the winners getting $25 to $100).
The general philosophy at TopCoder, according to Hughes, is that “the community is a lot smarter than we are. So what we tend to do is say, ‘Look, here’s what we’re trying to do. What’s the best way to do this?’ What works for them is what works for us.”
That doesn’t mean TopCoder can evade responsibility for software that doesn’t work. Every client project has a platform manager who’s responsible for shepherding the work along, and “ultimately, if a project doesn’t work, it’s going to come down to TopCoder to fix it,” says Hughes. But the fixes, too, are farmed out to the community.
Just who are these contestants? They’re mostly individuals—although occasionally, the company receives submissions from teams, and there are even … Next Page »