TDD as if you meant it Turku, Finland
Because of my plane connection from Bucharest to Turku which was not so great, the trip lasts around 12 hours all in all, I needed to stay from Friday to Tuesday next week in Turku. So why not trying to organize an event shorter than the coderetreat, for two hours in the evening like I did a lot of times in Bucharest. Aki was really receptive to my idea and in a matter of hours he found a host, and announced the event to the local community.
Ten people arrived in time for the event at 18:45 the local hour. The event started with me explaining the rules of TDD as if you meant it. I used these slides for session. During the intro I focus on three main points derived from the question “Why would we write code in this way?”: it reveals the true nature of TDD, you can generate pure emergent design by using it, and you get fastest feedback than TDD. For me the true nature of TDD consists in fact of emergent design and fast feedback.
The beauty of emergent design comes from three elements: thinking about behaviours, thinking about the order of implementing those behaviours and refactoring soon and often. By behaviours I mean thinking of what are the inputs of the system when I need it to give me some outputs. This is what I call a state behaviour. His brother, the collaboration behaviour, that I define by the interaction between two abstractions: one is calling the other with some input data. After I think about around seven behaviours I start using my experience to order the behaviours in an order that will permit me to have and incremental approach, in baby steps. These small increments will permit me to be able to refactor often, which will distil the behaviours into abstractions that respect the Single Responsibility Principle.
For these two hour sessions I tend to use Tic-Tac-Toe as a problem because it is so simple to explain. We can divide the rules in two layers: playing rules, winning rules. Playing rules: X plays first, 0 plays second. The winning rules: draw or we can have a winner on either a row, column or diagonal with same token.
Since the Socrates Conference I do these sessions using the following format: intro, pomodorro, 5 min chatting with the audience, pomodorro, 5 min chatting with the audience, pomodorro, retrospective of the event.
During the interludes the attendees had really nice ideas: “When you write code like TDD as if you meant it you need to understand better the problem”, “It’s hard to change a class that exists, when you do TDD as if you meant it it’s so easy to change your mind”, “The surprise is that TDD as if you meant it can get you somewhere, it’s not just a learning technique for TDD”.
At the end of the event I was happy that everyone was tired and felt they learned something.
Many thanks to Ecom for hosting this event. Thanks again to Aki for making it possible. Of course many thanks to the attendees that came late in the evening to blow their minds on a strange technique like TDD as if you meant it.
Special thanks to Mozaic Works, the company I work at, for supporting me on doing this trip to Finland.