Jeff's Blog

Musings about software development, Java, OO, agile, life, whatever.


Monday, July 21, 2008 
A TDD Contest

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.


Comments:
Some ideas:
- setup a project on googlecode.com, where you may easily review check-ins, event score and put some comments next to it
- create a "trunk" folder for each participant
- each participant is required to check in every 5-10 minutes
- with a backup of Continuous Integration you may have some additional validation (would require to provide build scripts)
- advertise on junit.org, testdriven, xp sites.
 
Great thoughts, I like the use of the repository for timing purposes. Thank you.

Any thoughts on how to score things?
 
Post a Comment

Links to this post:

Create a Link



<< Home

RSS Feed (XML)

Archives

February 2004   March 2004   May 2004   September 2004   October 2004   January 2005   February 2005   September 2005   October 2005   November 2005   December 2005   January 2006   February 2006   March 2006   June 2006   August 2006   January 2007   February 2007   March 2007   April 2007   September 2007   October 2007   November 2007   December 2007   January 2008   February 2008   March 2008   April 2008   May 2008   June 2008   July 2008  

This page is powered by Blogger. Isn't yours?