For the third time, I had the pleasure to visit the SoCraTes unconference in Soltau this year. This has become a trip that I’m looking forward to pretty much the whole year. The setup is just too perfect: plenty of open-minded, friendly, and intelligent people, sharing a comfortable location for a few days. And everybody loves talking about software and related topics, all in a very relaxed manner.
The unconference starts on Thursday evening with a meet and greet, followed by three rounds of short discussion sessions in the World Café format. It’s a nice way of getting to know some of the attendees and what their interests and expectations are.
Friday and Saturday are the core of the event and happen in the form of an OpenSpace. In case you are not familiar with this concept: it means that there is no pre-defined schedule with speakers and presentations, as known from traditional conferences. Instead the attendees will collaborate and fill the available one-hour time slots with sessions. Those might be about any subject that a participant wants to speak about. Also the format can be whatever she thinks is appropriate – whether it is a presentation, a discussion round or a hands-on workshop.
The range of topics was very broad, ranging from technical things like programming languages like Clojure or Haskell, over more conceptual things like clean architecture and DDD, to completely different stuff like psychological safety or music theory. It was tough to choose where to go–after all, there were over 150 sessions. For the first time, the schedule was also available digitally in the form of a web app. A big thanks to the organizers who managed to enter all the sessions into the app nearly in real time.
I certainly can’t list everything that I learned or discussed at SoCraTes, but I’ll give at least some of my personal highlights: the first one has to be the
fish shell. I’ve been using
zsh for many years now, with a lot of customization, and was pretty pleased with it. But Jan actually convinced me to finally give
fish a try in a very entertaining hands-on session. I’m using it for almost three weeks now and have migrated to
fish on most of the machines I am working on – even under Windows, thanks to WSL.
Talking of command line / keyboard driven tools: of course, there were Vim sessions¹! Daniel and myself gave a beginner’s introduction to show the basics. At a „show & tell“ session later, various people presented their setups/tricks/plugins, which really showed what a powerful tool Vim can be.
Besides those hands-on events, I joined some interesting discussion rounds. In one of them we argued about the costs of reuse. When does it make more sense to implement something yourself then to rely on frameworks or libraries? I also learned about Consumer Driven Contracts, a promising concept to share responsibilities between clients and servers. A problem that becomes especially important when dealing with multiple services working together (did somebody say „microservices“?)
Sunday was reserved for longer workshops, traditionally including code retreat. A code retreat is a series of programming sessions, where you do pair programming to work on a coding kata (examples). After each session, you throw away everything and start from scratch. But usually you choose a new partner and work with a different constraint to keep things interesting.
The given constraints were very cool. We had a session with an enforced time limit of two minutes. If all your tests are green before the time runs out, you can commit. Otherwise you have to revert to the last commit and start over. My partner and I needed quite some rounds before we noticed that we had to discuss and agree on an idea, no matter how long it takes. Afterwards you can get it done quickly within the harsh two minute limit.
One constraint that I already knew from other code retreats was „strictly no talking“. I actually really like this style, but you certainly have to be accustomed with pair programming and the TDD workflow. One good pattern for this constraint is to guide your partner by writing a new red test and then switch roles. Hopefully she got the idea and can add an appropriate implementation. Of course, you can cheat a bit and „talk“ in
The last constraint we tried was pretty challenging: no return statements. This sounds crazy at first (and it is!) and how you deal with this depends a lot on your programming language. We used C# and at first tried abusing the type system, which did not work out. Finally we came up with a sort-of working solution based on delegates and events.
SoCraTes was once again an amazing experience, and I didn’t even mention the fun side activities that happened in the evenings or just in parallel during the day. There was a ton of board and card games, sports, fancy coffee brewing and a lot more.
Some final notes: if you like events in the open space format, you can think about coming to SWEC, the Software Engineering Camp, taking place for the second time in Erlangen this November. (Disclaimer: I’m part of the orga team.) You should also mark 23 to 26 August 2018 in your calendar – this is the date for the next SoCraTes. I’ll be there for sure!
¹ Rumor has it that Emacs sessions happened, but those shall not be mentioned.