Friday 16th July, 2010: Coding Dojo
Last night I facilitated my first ever coding dojo at the second Software Craftsmanship UK meeting, held at Eden Development in Winchester. Initially I was considering setting the group the String Calculator kata, but I decided that it would be fun to try to create my own and came up with the idea of modelling a basic Automated Teller Machine (ATM). This is the kata I set the group:
- Alice, Bob and Clyde have a busy weekend ahead and need to withdraw some cash. Consider how to model a cash machine (ATM)
- Alice has had a hard week working in a factory making iPhone 4 antennas. She’s ready for a Friday night out with the girls and wants to withdraw £80 from her account with a starting balance of £2000. Her PIN is 7643
- Bob is a flashy Investment Banker who’s dating Alice. He wants to buy her a £250 necklace as a surprise. As befits a banker, his account balance is currently a healthy £22,400 and his PIN is 5954
- Clyde is an unsuccessful cyber criminal trying to understand public key cryptography. He wants to withdraw £200 but his account balance is only £100, although he does have a £50 overdraft. His PIN is 1562
Work incrementally on implementing the basic ATM functions of:
- Entering a PIN
- Checking a PIN for validity
- Allowing three attempts to get the PIN correct
- Withdrawing cash (debiting both the customer’s account and the amount of money within the ATM itself)
If you have time then model the ability to do either or both of the following after withdrawing cash:
- Display the remaining account balance
- Print a receipt
Note that the ATM currently contains only £320. It should go out of service should a customer attempt to withdraw more than that amount.
Write the tests for each step first. Note that you will not need to validate that only numeric characters are entered because the ATM only has a numeric keypad!
By majority vote it was decided to implement the kata in Ruby with the tests being written using RSpec. Initially I was worried that this kata was perhaps too simple because at least superfically that’s how it seemed to me when reading it through. However, it turned out to have hidden depths and subtleties that kept ten of us engrossed for nearly two hours! The pairing was done Randori-style in five minute segments and I lost count of how many times we went around the table with different permutations of pilot and co-pilot sat at the laptop.
Although we didn’t manage to complete the whole kata in the time available, it didn’t matter because we had a fun evening with lots of interesting discussion.
- ATM Kata code (Ruby)
Friday 16th July, 2010: Second Meet Up!
Today (!) the 16th of July we will have the second User Group meeting at Eden Development.
The meeting starts from 18:30 and the format will be:
- Introductions
- Dot Voting for lightning talks
- Lightning talks
- Coding Dojo (randori style)
- Pub
If you have prepared a lightning talk and want to present it, don’t hesitate to do so. We will vote for the presentations that we want to hear (if there are sufficient volunteers available).
Friday 14th of May, 2010: First meet up!
Next Friday, the 14th of May, we will have the first User Group meeting at Eden Development.
The format of the meeting will be as follows:
- 18:00 – Introductions
- 18:10 – Dot Voting for lightning talks
- 18:15 – Lightning talks
- 18:45 – Coding Dojo (randori style)
- 20:00 – Pub
If you have prepared a lightning talk and want to present it, don’t hesitate to do so. We will vote for the presentations that we want to hear (if there are sufficient volunteers available).
I also wanted to thank Howard van Rooijen for talking to JetBrains. They have agreed to give us a free license for RubyMine, which we will give away in this first meetup!
Hello world!
As you can see this is just a placeholder for the moment.
I am going to set this up in the course of the next few days and I hope it will contain more information about Software Craftsmanship in general and specially in the UK.
For know you can go an sign the manifesto for software craftsmanship if you like to.

