Back when I was in high school in 2001, one of my computer science classmates introduced me to TopCoder, and there was something about it that I instantly loved. I was very competitive back then both in sports, and in the classroom, and the ability to compete in 45 minute algorithm programming contests felt like the perfect competition for someone who was experiencing a new found love for computer science. The way that a competition worked was that TopCoder would present everybody with three programming problems (easy, medium, and hard), and everyone would work for 45 minutes to submit solutions. If your solution was correct, you’d get points based upon how quickly you submitted, and your ranking would move up or down accordingly compared to other people on the site.
As someone who was young, and very new to computer science, the best I ever did back then was average. I’d occasionally be in the running for a cash prize of some sort, and I’d also occasionally deal with looks of shock and disbelief when I’d tell my buddies that I was staying home on a Friday night to participate in a “programming competition.” It was well worth it though, as nothing taught me more about algorithms and programming during those early years than working through TopCoder problem statements. As I moved on to college, and begun moving away from TopCoder’s compiled languages more towards agile practices and scripting languages, I stopped competing in the competitions frequently. Though I always had an interest in what the company was up to.
Fast forward to 2010. The company not only has algorithm programming competitions, but there are also design competitions, software development competitions, and categories for testing suites and marathon matches. They’ve turned themselves into a crowdsourcing platform where sponsors can submit components that they’d like designed, built, tested, and they attach bounties to each task. Competitors submit their best efforts, and the companies pay the winners the prize in exchange for using the components.
I haven’t used the new platform enough to how well this ends up working out for programmers, designers, and the sponsors, but it appears that in the world of big-co, big-money, long-dev-cycle, and compiled languages, Topcoder may be an easy and efficient way for a project manager to outsource a small project that they don’t have the time or ability to deal with on their fixed in-house team.
It’s a shame that this model doesn’t quite carry over to the agile development world. When team members have to wear many hats, and you don’t have the luxury of a multi-month plan/design/architect/build/test cycle, it’s difficult to crowdsource your components. Sites like 99designs, elance, and odesk can help fill empty needs, albeit at a pretty high cost of uncertainty about what you’re going to get for your money. I’d love to see a startup build a TopCoder style crowdsourcing service targeted towards agile startups with a rating system that startups can trust, and a high quality community of available freelance hackers.
Am I asking for a lot? Maybe. But wouldn’t it be useful?