I love competition, and I suspect the majority of programmers do, too. I’ve met only a few very good programmers who weren’t into games or other forms of competition. I’ve also known a few developers whose egos exuded in everything they did, whether or not they’d admit it. These are the kinds who want to argue virtually every point that is made, not that there’s anything wrong with that. (Well, maybe there is–no one wants to feel like every one of their comments is possibly wrong.)
In listening to someone else’s contrarian nature take over, I often sit there and think, “We should just argue our respective positions in code.” Of course, I’m also thinking that “I can code this better than you can.”
The site TopCoder provides a place where money can be put in someone’s big mouth, but it’s not what I’m looking for. TopCoder is more a highly competitive marketplace, a great idea that appeals to my capitalistic nature. But it doesn’t appeal to the ego in me, nor does it appeal to my interest in TDD.
Rather, I’d prefer a competition that offers bragging rights. Not that I need to brag, but I would love some validation to my claims. I think as geeks we all like numbers, and I’d like to know if I am the best, or if I am only the 17th best.
So, a contest. Who is the most effective coder? Here are my thoughts for such a contest:
Devise a problem whose test-driven solution might take about 90 minutes
Insist that the problem be solved using some sort of solution recorder (maybe an IDE plugin); either that, or provide a proctoring mechanism. Unfortunately I’m not sure what the implication and cost of this is.
Award bonus points for early completion; subtract bonus points
Deduct points for deficiencies in solution–e.g. lack of test/code expressiveness, unnecessary duplication, etc.
Score tests using a panel of three or more judges
Could such a contest be used to determine a champion between TDD proponents and the rest of the world?
If I can get enough interest, I’ll happily run such a contest and offer up some kind of prize, although I’d just as soon participate in one. Step one involves getting feedback–are there enough fearless programmers who would participate? How would the judges come to at least some consensus on judging criteria?
Are you the best? Do you have any ideas about how to judge such a competition? Let me know.