Last night was the November meetup of the AgileNorth group. It was kindly hosted by the computing department of the University of Central Lancashire, Preston. They provided a sizable room, with great presentation facilities and even sorted out some tea, coffee and cakes!
There were 10 attendees in total (which was double the size of the first meetup that I attended), and the session was run by Murray Tait & David Draper. The topic was "The Game of Life Kata".
So what is a code Kata?
A Kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code Kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. - Dave Thomas
A number of acceptance tests for the rules of the game were provided by Murray and a very bare-bones class that would make up the game itself. The aim was to pair-program the implementation of the game by making the tests pass, and swapping coding partners every 20 minutes or so.
The session went well, with everyone getting stuck in to the design of the game and what rule should be implemented next. Without internet access or a selection of Java in a Nutshell books some aspects of Java caused us to slow down at a number of points during the evening.
It was interesting to see a number of different viewpoints on how far you should implement the feature in question. If the test passes even with a trivial implementation that you know is not a full-blown solution is it ok to leave it at that?
Time passed very quickly and we stopped at one point for quite some time for a valuable discussion about the game board setup and what parts of it we were testing. We pressed on without really resolving the issue and it continued to cause us problems as we got further through the tests. This taught us that as soon as we have a question regarding the requirements we really should down tools and get with the (on-site) customer to get to the issue ironed out.
The end of the session was soon upon us and so we had a 5 minute wrap-up to discuss what we had learnt from the session. Most of that is covered above, but it was also mentioned that although the concept of the problem was simple to understand, due to the acceptance tests using arrays and ints, the implementation was bogged down in for loops, if statements, 1's & -1's rather than allowing us to progress at a higher level (and therefore faster) through the rules and complete the Kata in the time provided (7:00-9:30).
It was decided that we would continue with this Kata at the next meeting, maybe splitting the group into the two 'drivers' at the keyboard implementing the current feature whilst the rest of the group discusses the next step and any design decisions that may need to be made.
I'm looking forward to it already!
Technorati Tags: AgileNorth, Murray Tait, David Draper, Andrew Beacock