Five flipcharts stand side by side in a conference room with blue carpet. The sheets are covered with handwritten notes, keywords and small sketches in many different colours. A man in a light blue shirt stands in front of the fourth one, looking at the results.
The results of the World Café.

Last week I travelled to Soltau, Germany to attend SoCraTes 2014, the fourth edition of the International Software Craftsmanship and Testing Conference. It was my first SoCraTes and will definitely not have been my last as I am already looking forward to next year's edition.

Thursday

SoCraTes started late in the afternoon on Thursday using the World Café format. This is a structured conversational process in which groups of people discuss a topic at several tables. Individuals switch tables periodically and are introduced to the previous discussion at their new table by a table host. I ended up being a table host and enjoyed the three discussions, 25 minutes each, that we had at "my" table.

Thursday concluded for me with a fun session of Forbidden Island. While playing this cooperative board game we discovered that its objective is very similar to software development projects. I had already observed the same for a card game the year before. As the game progresses, more and more island tiles sink and the pace increases, and the players have to keep the island from sinking while collecting treasures. We quickly compared the rising water level to technical debt. After the game we decided to propose a session on adapting the game to our domain of software development.

A man with a microphone stands in front of pin boards that are covered with colourful sticky notes, arranged in a grid of time slots and rooms. Other participants stand around him and listen.
The Market Place, where participants propose their sessions and schedule them.

Friday

Friday and Saturday were organized using the Open Space format. Pierluigi Pugliese "opened the space" and then participants started to propose sessions and schedule them to avoid conflicts. I really wanted to attend "The Super-Tasty DDD Workshop" in the first time slot, but by the time I got to the room it was already packed. I floated around the other sessions instead and ended up in a tent outside where microservices were discussed. Afterwards I joined a discussion roundtable where participants shared their experience with regard to apprenticeship. The shift from the "Junior Developer" versus "Senior Developer" terminology towards "Apprentice" and "Craftsman" that was discussed appeals to me. In the next slot I joined Doug Bradbury, one of the initial signatories of the Manifesto for Software Craftsmanship, who reflected on the discussion that led to the manifesto as well as on how its ideas can be applied and interpreted.

In the next time slot I learned Zendo, a game of inductive logic in which a master creates a rule for structures, called koans, and the students try to discover that rule by building and studying koans which follow or break it. After we understood the game we tried to implement an algorithm for the inductive logic using test-driven development. Unfortunately I had to leave the session before we actually got to programming. My last session before dinner was the "Is TDD dead?" discussion. It was kicked off by participants role-playing David Heinemeier Hansson and Kent Beck having their discussion. Since I had followed that discussion, I did not learn anything new in this session, but it was still entertaining. After dinner I hosted the "Release of Doom" session where we discussed how we can adapt "Forbidden Island" to have a software development theme. Of course we did not finish what we set out to do, but we want to keep in touch and continue thinking about this idea. Maybe we have something to show for it at next year's SoCraTes.

A wide-angle photo of a room in which about twenty people sit on chairs, on tables and on the floor, facing a projection screen.
A session in one of the rooms.

Saturday

Saturday started for me with a very interesting session on Bottom-Up TDD and Specification by Example. Adi Bolboaca started with a summary of the two major styles of Test-Driven Development: Classicist TDD, also known as the Chicago School of TDD, and Mockist TDD, also known as the London School of TDD. With Classicist TDD, tests can touch the outside world, test state, use stubs, and the code is written bottom-up. With Mockist TDD, tests test in isolation, test collaboration, use mocks, and the code is written top-down. And when you apply Domain-Driven Design then you start neither at the top nor at the bottom, but rather in the middle. After this introduction, Adi continued with a step-by-step example of "Test-Driven Development as if you meant it". In this variation of Test-Driven Development you write exactly one failing test, make that test pass by writing production code in the test, and then later apply refactoring patterns to move the production code from the test class to a production class.

Next up for me was "Legacy Code by Example" where Aki Salmi walked us through a legacy code base that he recently "inherited". He showed us the refactoring that he had already done. The session quickly turned into an interesting discussion on how to best deal with legacy code. The final session that I attended before I had to leave was on using Docker and Vagrant to configure and provision the ELK stack (Elasticsearch, Logstash, Kibana). Eberhard Wolff did a great job in this session interweaving the topics in such a way that you could learn the basics of both. Even after leaving the venue, though, SoCraTes continued for me. Almost ten other participants left the conference around the same time as me and we all ended up on the same train to Hannover. What would otherwise have been a rather boring train ride turned into an interesting discussion of various topics.

A wide-angle photo of the inside of a train carriage with yellow poles, in which several people sit with laptops and mobile phones.
SoCraTes continued on the train to Hannover.

Conclusion

SoCraTes was an amazing event that lasted 48 hours, during which almost 150 people collaborated and shared ideas. It is run as a non-profit, low-cost event by the community of all German-speaking Software Craftsmanship groups. I would like to congratulate everyone involved, especially Nicole Rauch, Benjamin Reitzammer and Pierluigi Pugliese, on a job well done. Thank you!