Dr. Dobb's Journal - June 2008 - (Page 18) d06lead_p4db.qxp 4/11/08 8:28 AM Page 18 Strategic Vision THERE MUST BE CONTEST Pick a platform or a language and there’s a contest for users of that platform or language: Java, C++, Ruby, Haskell, Mathematica TopCodersCoding the best way to build software that is component based: component competitions.” Competition, Messinger points out, is happening all the time among programmers. But TopCoder is one of only a few companies actually building commercial software through a competition model. And it’s a real contest, or a steady succession of contests, with winners and losers. In TopCoder’s competitions, only the first- and second-place finishers win money for their work, although there are several additional ways to win cash, including awards for reliability and for consistently good performance even if it doesn’t win the big prizes. Plus, “there are no penalties for signing up for a component and then not delivering it,” AleaActaEst points out. “This way if life gets in the way we do not have to worry about broken promises.” That doesn’t often happen for him, one suspects. “The whole idea is that knowing that you are competing against some of the best makes you try harder, makes you try longer, makes you try smarter…There is nothing in my opinion better than a competition to make sure that you get it done.” something known as Digital Run points, which pay per quarter for the top designers or developers who compete and deliver components.” TopCoder’s Director of Communications Jim McKeown says that every programmer who participates gets something for the effort, even if it’s only an education. This is because the entire process, including the reviewers’ criteria, is highly transparent. AleaActaEst confirms that this is not just PR spin: “There is one amazing aspect of the TopCoder process that I really like: transparency and availability of winner’s designs to peruse. The ability to look at the winner’s design and learn from it is quite amazing. Imagine, especially for the newer technologies, that you have a full example of a working component…invaluable for anybody who wants to learn.” Win or lose, it seems like it’s a win-win-win for the competitors, TopCoder, and TopCoder’s clients. Argolite: “I would say it is akin to having an interview on the job, where if it does not pan out for an individual, there is no cost to TopCoder or their clients, since there will be someone that will succeed in providing a good product. Instead of wasting resources on advertising, interviewing, and then potetially seeing a resource not pan out, anyone is welcome to try to prove his/her worth.” Last year, TopCoder was granted a patent for their contest-based approach as a method of developing software. Getting in the Game The object of this competition is not to be mean to the losers but to find a winner. —Simon Cowell Contests as a Career The artillery department gave the specs for a new weapon. We had to improve on it or be eliminated from the contest. —Mikhail Kalashnikov TopCoder’s first competition was a 90-minute algorithm test, measuring speed and accuracy. Today, they run several kinds of competitions—design contests, development contests in which every competitor writes the same code and the reviewers write test cases against that code, and assembly contests that produce full component-based applications. TopCoder’s contests generally take a week. A dedicated individual, participating part-time, can do one or two designs a week, AleaActaEst says, which could put up to $3200 in your pocket in a good month. TopCoder calibrates the awards in the contests to ensure, in argolite’s words, “not only [that] someone will participate, but that the quality of the competition will be high.” A competition may involve five or six competitors, meaning that you really do have to do your best to get one of the top spots, but it’s not like winning the lottery: A talented programmer can count on racking up wins. Move up to full-time competing and the payoff ramps up. “Some of the top designers could make something like 40,000–80,000 per quarter. This is a combination of actual design winnings, reliability bonuses, and 18 Dr. Dobb’s Journal l www.ddj.com l June 2008 TopCoder is one model for using contests for serious business purposes, but there are others. Microsoft regularly screens potential employees through various contests and challenges. Its Imagine Cup winners get up to $33,000 and a trip to India to compete in the finals. Google’s Code Jam has even higher awards, but in both of these contests the more likely payoff is that when you’ve finished and done a good job, you have significantly increased your chances of being hired by the sponsoring company. So how do you learn more about programming contests? The websites for TopCoder (www.topcoder.com), Google Code Jam (www .google.com/codejam), Imagine Cup (imaginecup.com), the ACM International Collegiate Programming Contest (icpc.baylor.edu/ icpc), the American Computer Science League for High School student competitors (www.acsl.org), and the International Olympiad in Informatics (www.ioinformatics.org) are good starting points. Also, the Algorithmist maintains a calendar of contests (www.algorithmist .com/index.php/Programming_Contest_Calendar); Ahmed Shamsul Arefin has written a book, Art of Programming Contest, to help students prepare for the ACM International Collegiate Programming Contest; and this year Andrew Trotman and Chris Handley published the paper “Programming Contest Strategy” (www.cs.otago.ac.nz/ postgrads/andrew/2006-4.pdf). One last point: Despite what I’ve said here about money and contests as a software-development model, the core of the experience is just plain competitive fun. Or in AleaActaEst’s words: “This is beyond fun. This is uber-fantastic fun.” DDJ http://www.topcoder.com http://www.google.com/codejam http://www.imaginecup.com http://www.google.com/codejam http://icpc.baylor.edu/icpc http://icpc.baylor.edu/icpc http://www.acsl.org http://www.ioinformatics.org http://www.algorithmist.com/index.php/Programming_Contest_Calendar http://www.algorithmist.com/index.php/Programming_Contest_Calendar http://www.ddj.com
Table of Contents Feed for the Digital Edition of Dr. Dobb's Journal - June 2008 Dr. Dobb's Journal - June 2008 Contents Friday Night Fish Fry Alia Vox Developer Diaries There Must Be Contest Conversations Building a Test Harness for RTOS QT and Windows CE Software to Hardware Parallelization Performance Portable C++ Effective Concurrency The Agile Edge Swaine's Flames Dr. Dobb's Journal - June 2008 Dr. Dobb's Journal - June 2008 - Dr. Dobb's Journal - June 2008 (Page Cover1) Dr. Dobb's Journal - June 2008 - Dr. Dobb's Journal - June 2008 (Page Cover2) Dr. Dobb's Journal - June 2008 - Dr. Dobb's Journal - June 2008 (Page 1) Dr. Dobb's Journal - June 2008 - Dr. Dobb's Journal - June 2008 (Page 2) Dr. Dobb's Journal - June 2008 - Dr. Dobb's Journal - June 2008 (Page 3) Dr. Dobb's Journal - June 2008 - Contents (Page 4) Dr. Dobb's Journal - June 2008 - Contents (Page 5) Dr. Dobb's Journal - June 2008 - Friday Night Fish Fry (Page 6) Dr. Dobb's Journal - June 2008 - Friday Night Fish Fry (Page 7) Dr. Dobb's Journal - June 2008 - Friday Night Fish Fry (Page 8) Dr. Dobb's Journal - June 2008 - Friday Night Fish Fry (Page 9) Dr. Dobb's Journal - June 2008 - Alia Vox (Page 10) Dr. Dobb's Journal - June 2008 - Alia Vox (Page 11) Dr. Dobb's Journal - June 2008 - Alia Vox (Page 12) Dr. Dobb's Journal - June 2008 - Alia Vox (Page 13) Dr. Dobb's Journal - June 2008 - Developer Diaries (Page 14) Dr. Dobb's Journal - June 2008 - Developer Diaries (Page 15) Dr. Dobb's Journal - June 2008 - There Must Be Contest (Page 16) Dr. Dobb's Journal - June 2008 - There Must Be Contest (Page 17) Dr. Dobb's Journal - June 2008 - There Must Be Contest (Page 18) Dr. Dobb's Journal - June 2008 - There Must Be Contest (Page 19) Dr. Dobb's Journal - June 2008 - Conversations (Page 20) Dr. Dobb's Journal - June 2008 - Conversations (Page 21) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 22) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 23) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 24) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page IBM-1) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page IMB-2) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 25) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 26) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 27) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 28) Dr. Dobb's Journal - June 2008 - Building a Test Harness for RTOS (Page 29) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 30) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 31) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 32) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 33) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 34) Dr. Dobb's Journal - June 2008 - QT and Windows CE (Page 35) Dr. Dobb's Journal - June 2008 - Software to Hardware Parallelization (Page 36) Dr. Dobb's Journal - June 2008 - Software to Hardware Parallelization (Page 37) Dr. Dobb's Journal - June 2008 - Software to Hardware Parallelization (Page 38) Dr. Dobb's Journal - June 2008 - Software to Hardware Parallelization (Page 39) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 40) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 41) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 42) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 43) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 44) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 45) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 46) Dr. Dobb's Journal - June 2008 - Performance Portable C++ (Page 47) Dr. Dobb's Journal - June 2008 - Effective Concurrency (Page 48) Dr. Dobb's Journal - June 2008 - Effective Concurrency (Page 49) Dr. Dobb's Journal - June 2008 - Effective Concurrency (Page 50) Dr. Dobb's Journal - June 2008 - Effective Concurrency (Page 51) Dr. Dobb's Journal - June 2008 - The Agile Edge (Page 52) Dr. Dobb's Journal - June 2008 - The Agile Edge (Page 53) Dr. Dobb's Journal - June 2008 - The Agile Edge (Page 54) Dr. Dobb's Journal - June 2008 - The Agile Edge (Page 55) Dr. Dobb's Journal - June 2008 - Swaine's Flames (Page 56) Dr. Dobb's Journal - June 2008 - Swaine's Flames (Page Cover3) Dr. Dobb's Journal - June 2008 - Swaine's Flames (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.