SPA Conference session: Softwarewolves

One-line description:In this side-track/tutorial, we are looking for the programming practices that are most effective at producing business value.
 
Session format: programming competition [read about the different session types]
 
Abstract:We want to engage in a fun way with our craft, celebrating our own skills and learning from others.
This session provides you with the opportunity to step back and look critically at how you develop software. You may be able to improve
* the strategic choices you make, i.e. where do you choose to expend effort?
* your choice of technology stack. Is my favorite language a help or hindrance when competing in the marketplace?
* development practices.

We’ll form small groups of up to3 people around programming languages to develop bots to play the well-known 'werewolves' AKA 'mafia' party game (http://en.wikipedia.org/wiki/Mafia_(party_game)). The bots score points in the competition according to the business value of the user stories they implement. At regular intervals, the capabilities of each team's bots are demonstrated, practices are evaluated and new user stories are made available.

We run this as a competition because it’s fun, but also because, although imperfect, our scoring gives a first approximation of your effectiveness and gives you feedback on whether changes you make are for the better or worse.
 
Audience background:This is a session for developers, so coding skills are needed. You also need a computer with your favorite developer toolset and possibly some reference material like handbooks.
 
Benefits of participating:* opportunity to showcase your development practices
* opportunity to showcase your favorite technology stack
* learn about other participants' development practices and technology stack
* assess relative effectiveness of development practices and technology stacks
* reflect on the way you prioritize your development
* weigh up whether to pay technical debt or realize business value
 
Materials provided:* user stories to be implemented,
* an XMPP bot that organizes games,
* an XMPP narrator bot to lead games,
* XMPP bots to fill up otherwise sparsely populated games,
* in order to provide a low-entry threshold: implementations of basic bots in most languages to provide a low-threshold starting point.
 
Process:Participants are free to choose to work on their own or together with others to implement player bots, but teams are encouraged. Coaches are available for assistance throughout.

We provide a bot with well-known XMPP JID to be contacted by bots and humans alike to indicate willingness to play. The well-known bot sets up a chatroom and starts a game moderator and additional bots to complement the players.
We also provide a bare-bones implementation of a bot in every language that is likely to be picked up in this competition. These bare-bones bots can participate in the game, but they do not score any business value. Participants can use them as a starting point for their own development. However, they have a high technical debt.
Business value is attached to user stories that specify additional features. There is the initial set of user stories, but as the game progresses, more user stories become available and existing stories may be changed. We aim to mimic market conditions with the way user stories emerge.

Development is organized in iterations. There are always more stories available than can be implemented, so teams have to choose what to expend their effort on. After each time-box, participants can demonstrate new bot capabilities and improve their score. Subsequently, a retrospective is held. In the retrospective, teams do not only examine what went well and what did not go so well in their own development, they also examine the other teams’ choices and practices and compare them with their own. They may decide to adopt some of the practices of their competitors.
 
Detailed timetable:00:00 - 00:15 welcome and introduction
00:15 - 00:30 forming teams. Teams need to minimally agree on the language they will use.
00:30 - 01:15 iteration 1
01:15 - 01:30 demo and retrospective
01:30 - 01:45 break
01:45 - 02:30 iteration 2
02:30 - 02:45 demo and retrospective
02:45 - 02:45 lunch
02:45 - 03:30 iteration 3
03:30 - 03:45 demo and retrospective
03:45 - 04:00 break
04:00 - 04:45 iteration 4
04:45 - 05:00 demo and retrospective
05:00 - 05:15 break
05:15 - 06:00 demo, final scoring and prize giving
06:00 - 07:00 retrospective

We are currently not sure whether we should run this as a side-track, parallel to the main conference, or as a tutorial.
In the former case, xx should be chosen so that demo's and retrospectives coincide with breaks. n should in that case be chosen so that the final demo takes place in the last half day of the conference.
Running the session as a tutorial might be more straightforward. The timetable above assumes a tutorial.
 
Outputs:a werewolf-game-playing ecosystem of bots. The game could be kept going after the conference.
 
History:this competition has evolved from sessions run at Agile Open Benelux in 2011 and XP Days Benelux 2011 and 2012.
 
Presenters
1. Johan Peeters
Johan Peeters bvba
2. Alexander Helleboogh
ArchiWise
3. Nelis Bouck