Friday evening I had the chance to attend a coding dojo on test driven development at JDuchess Netherlands @Amsterdam. A coding dojo is an event where a group of developers solves together a given coding challenge (that means the "dojo kata"). The challenge is met step by step splitting up the problem into into smaller pieces. Each step is solved by a pair of programmers who have to write down their code directly in front of the audience. The tricky part is that you only have several minutes to write down your code so you really have to hurry up but it's really a great method to teach self-confidence in front of other programmers, team programming, communication and to learn from each other - and of course it really makes fun, believe me :-)
Going on with Test-driven development:
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new code to acceptable standards.
The goal is not to write clean and final application code but to get working test-cases (in this case we used JUnit).
I have to admit that in the beginning, it was not easy for me to change my point of view regarding this whole test-driven challenge thing and instead concentrating just on a very short (5 minutes!) development cycle. The challenge was also not about writing the final super-perfect application-code but more about prototyping, diving into the problem(s), developping the algorithms and of course - having your JUnit test-cases in the end.
Well, we ended up with our test-cases (including some comments for our male participants... ;-) ) and committed that now we should do a refactoring (next time...) to set up the application. Alltogether it was a great experience and I'm very content to having learned so much on Coding Dojo, Test-Driven development, Scrums and of course bowling ;-)
Btw: The event was sponsored by JTeam and being in their office it was very interesting to see how how Scrum (a methode of agile development) is practised in real-life projects. The JTeam and other participants were really kind in explaining all the scrum posters, post-its and ideas to me as well as providing me with information on Scrum and Software Development. I think that I'm becoming a - just like a friend of mine said some days ago - "self-confessed agilist", too. :-)