I was interested in a couple of workshops on this year's Webcamp Zagreb but had only time for one half-day. Being me, I chose the TDD one.
This morning I went to the workshop by Pim Elshoff: "TDD, DDD & Teamwork". I spent the morning working in an ad-hoc team of four - talking, listening & learning interesting stuff from Pim Elshoff & workshop attendees.
I had three goals for the workshop:
- Learn what Pim has to say about TDD, DDD & Teamwork (duh)
- See how the workshop is structured, if I ever organise one myself
- Get the feel of the crowd's interest in the subject matter, because I'll probably do some TDD talks/sessions again this autumn and later
At first it seemed to me that covering 3 very complex subjects in one half-day workshop was unrealistic. However, Pim is very good at covering the essential and giving just enough information & context to provide a glimpse into these intricate worlds.
He explains just enough to keep the workshop going without wasting precious time by going into depth. On the other hand, he gives enough context to let us know there is much more exploration to be done.
It was a pleasure watching a simple start with TDD coalesce with the topic of Teamwork (using Mob programming, no less) & then bring it all together with DDD.
The title is a slight modification of chronology as Teamwork is introduced before DDD but the title is "more marketable" as the author quips, i.e. its easier to read this way and makes one more interested in attending.
Test-driven development (the author mostly uses the more accurate term "design") is given a crash-course of a few slides and we are thrust into action with (intentionally) haphazardly written user stories.
Translate the story into a test. Make it pass. Clean up. The next "user story" is published, etc.
The need for teamwork is accentuated by having the people in teams not communicate at all with each other, just doing it all by themselves, 10 minutes on the keyboard per each dev.
For the second part, Pim turns the collaboration rules upside down by shortly explaining pair & mob programming. When we try it we immediately see the benefits of Teamwork - constant communication about tests, code & the domain...
...Which quite naturally leads to the third part where Pim explains a small byte of DDD and its concepts. It is clear what it solves, because the problem has been (intentionally) created in the previous part of the workshop, much like the Teamwork problem was. In this way attendees are presented with examples of the practices and their benefits. Practice is always easier to learn from than theory.
The workshop was in PHP. I hadn't known that since the workshop description didn't mention it but I knew from before that technology is almost never a problem.
Indeed, in this workshop it presents almost no obstacle, since the test-running preparation is well documented & simply set up using Docker. Also of help were my team mates, two of which are working with PHP in their daily jobs.
This is an excellent workshop valuable to both total newbies & somewhat experienced TDD-ers and/or DDD-ers.
I'm not too keen on the complete DDD concept myself (Pim is an excellent explainer, but I'm a tough cookie to crack). However, I will definitely steal many of his gimmicks for my following talks, coding sessions and maybe a workshop in the near future.
If you would be interested in any of that, follow me on Twitter & LinkedIn or just pay attention to Zagreb-based meet-ups (especially Tech-Sauna & Agile Croatia) at some of which I'll probably drop in during autumn.
I will also be attending the Webcamp conference talks this Friday & Saturday so be sure to catch me there & we can chat about geeky stuff. (To catch me just look for a guy wearing a gray Softwaresauna hoodie... :))
Lastly, a big thanks to Pim on an excellent job & also thanks to all the workshop attendees for being engaged & participating in interesting discussions.