This August 2022 the SoCraTes conference for software craft and testing took place in beautiful Soltau, Germany. Contrary to the previous SoCraTes conference this one was in person, live and not at all remote. As an experiment the organizers offered a “foundation day” the day before the official conference. kreuzwerker was invited to host a workshop session on Trunk-Based Development.
Together with “how to get started with TDD“ our workshop kicked off the conference and allowed us to get to know the people and their technical background a little bit better. People starting their career in tech, as well as managers running entire software development departments were present - quite a challenge for an interactive workshop such as ours.
We presented the concept of a CI/CD pipeline and moved on to the three ways of DevOps, emphasizing that human interaction is key to a successful team collaboration. The biggest part of the workshop was a discussion on typical challenges software development teams face and how trunk-based development could alleviate some of the pain points.
What is trunk-based Development: Software teams doing Trunk-Based Development merge small batches of changes continuously into the main branch avoiding the so-called “merge-hell”. Combined with a proper CI/CD Pipeline this approach enables a team to improve their performance on the DORA metrics and value delivery overall.
We concluded the workshop with concrete actions a software development team can do to successfully apply trunk-based development:
- Develop in Small Batches
- Keep Code Current
- Always Commit to Green
- Prioritize Code Reviews over Other Work
- Powering through Broken Builds
The unconference experience
The SoCraTes’s way of organizing the conference was novel to me: Everything was self organized using the OpenSpace technique.
We started the conference with an empty schedule and after approximately one hour the participants themselves created a conference agenda with more than 80 sessions; including a morning sports program and many evening sessions with Salsa dancing as well as board games. Every evening after 5pm the participants gathered in the main room and a quick recap was held and the evening sessions began. The complete schedule can be found here.
An OpenSpace conference such as SoCraTes runs on four principles and one law. The principles are:
- Whoever comes are the right people
- Whenever it starts is the right time
- Whatever happens is the only thing that could have happened
- When it’s over, it’s over
and the law states:
If at any time you find that you are neither learning nor contributing, […] move to some place more to your liking.
This created a unique atmosphere and attendee’s willingness to experiment with new technologies, approaches and engage in unplanned discussions. It was not uncommon to get held up on your way to the coffee machine and end up writing Katas in a language you have never used before for the rest of the evening.
I was personally amazed to witness more than 150 people self-organize a conference with such a diverse selection of topics and high quality.
Software Craft and Testing
During the conference, I attended multiple sessions ranging from discussions, to presentations to hands-on coding.
Use of C4 model
Simon Brown’s c4 model is well known to be used to give an architectural overview of a given software and its integrations. In this session Markus gave a short introduction to the model and walked through the individual layers. During the presentation a lively discussion ensued among the attendees on whether the architecture should leak domain concepts or not. The case was made that the high level system context diagram will most likely look very similar between different projects. In the end most software systems have external integrations. We agreed that c4 is a tool and should be used in the right context and is not the silver bullet. And that good textual descriptions differentiate the projects in the end.
Mermaid - PR - Adding test using using C4
I am a great believer in documenting concepts using diagrams. For my personal projects I mostly use PlantUML and was eager to learn about different tools such as mermaid.js. Mermaid.js supports the c4 model as an experimental feature. In Danial’s session we extended an existing pull-request with more tests in order to get the experimental c4 support production ready. It was my first mob programming session in a very long time and I quite enjoyed it.
Ensemble Exploratory Testing
In Lisi’s session I learned that the term “ensemble” is much more descriptive than the term “mob”. She introduced me to the concept of ensemble testing. After the intro we were presented with an unknown API and started probing the API, noting down our observations, comments and expectations. After around 30 minutes we explored most of the API surface and found a considerable amount of irregularities and potential security risks. I recommend this approach to any team that is faced with integrating a new API and to teams that want to make sure their own APIs are well documented and behave as expected.
Unit test antipattern
Shortly before I took the train back to Berlin, I attended Birgit’s presentation on unit test antipatterns. Experimenting with a different way of presenting, Birgit used storytelling to guide the audience through some common antipatterns. The audience shared their own experience and we were not able to conclude whether a unit test is still a unit test if it reads test data from a file.
SoCraTes 2022 was the first conference I attended in person after the lockdowns; the experience will have a special place in my heart. Despite or maybe because of the seemingly chaotic nature of the event, the hosted sessions were engaging and quite informative. If you are interested in Software Craftship or Testing topics, I highly recommend the conference. It was definitely not my last SoCraTes.