XP Days Germany

Coding Tournament (Lasse Koskela, Markus Hjort)

The coding tournament is a fun-oriented social even where teams of brave delegates are presented with a task involving a simple, yet challenging multiplayer game. The teams will develop a game bot that interfaces with a game server provided by the organizers. The bots can be implemented using either Java or Ruby as the organizers will provide client libraries for those two programming languages.
While the ultimate goal of the tournament is to have fun, participants are encouraged to use this occasion as a chance to experiment with engineering practices such as test-driven development and pair programming. In the grand finale of the the event, the actual tournament is carried out by playing the teams' bots against each other on a projector while the teams and their supporters cheer ferociously.
Participation requires registering beforehand. Each team must consist of at least 2 people and the team must have a laptop with a network connection. The best team(s) will be awarded with fame, street credibility and possibly some other small prizes.
The game and coding challenge we have developed for the tournament is based on the card game known as Indian Poker.
The rules of the game are simple. A game of Indian Poker start by the dealer dealing a single card to each player. At the same time, each player raises the card to their forehead, but not so they can see it. The card is placed face-out on their forehead so that each player can see everybody else's card but their own. The first two players left from the dealer are forced to place "blind" bets while the rest can decide whether to fold (without paying) or to pay the bet based on how strong they imagine their own card will fare against what they're seeing on the opponents' foreheads. Players can also decide to raise which means everyone else will have to either pay the raise, re-raise, or fold out from the game. After a maximum of three raises, whoever has the highest card collects the pot. In the case of several cards with equal rank, the pot is split even.
The teams' bots will be communicating with the server over a network connection. The game logic is driven and controlled by the server and game activities are visualized on the projector through the server's user interface, including an audio narrative by a quasi-intelligent computer commentator. In the name of entertainment, the server introduces deliberate delays for players' actions in an attempt to simulate "think time".
Inspired by The First International RoShamBo Programming Competition we have organized similar tournaments internally at Reaktor Innovations. It worked very well with people cheering ferociously while the bots played against each other, eventually leading to the Coding Tournament session described by this submission getting organized as an activity at the XP2006 conference.

About the speaker

Markus Hjort Software architect at Reaktor Innovations, Markus has been in industry over seven years with experience from various technologies including J2EE, Microsoft, and Symbian platforms. He has always actively participated in process and methodology improvement. A certified Scrum Master and a member of Agile Alliance with extensive experience on agile methods, Markus kick-started the local Coding Dojo events in 2005.

Markus Hjort Methodology specialist at Reaktor Innovations, Lasse entered the IT industry 7 years ago and has since held roles varying from development to project management and training to consulting, dipping his toes to sales every once in a while. He started promoting agile methods in Finland in 2002, ramped up the local Agile Seminars in 2005, and is finally in the process of putting in the finishing touches for his book on test-driven development for Manning Publications.