What has not been declared dead already? Test Driven Development was buried years ago. Still, it continues to spread. Of course, Agile is dead as well. But even traditional companies come into contact with Scrum. The dead continue to live, but declaring something dead is always good for a snappy headline. In that sense, witness how I destroy epics as an agile practice.

What are epics?

The term is vague. This has advantages. Epics are more for communication than specification. The vagueness makes them versatile. But there is a risk of misunderstandings. I stick to Mike Cohn’s definition:

A Scrum epic is a…


Clean Architecture is a term coined by Robert C. Martin. The main idea:
Entities and use cases are independent of frameworks, UI, the database, and external services.

A Clean Architecture style has a positive effect on maintainability:

  • We can test domain entities and use cases without a framework, UI, and infrastructure.
  • Technology decisions can change without affecting domain code. And vice versa. It is even possible to switch to a new framework with limited effort.

My goal is to flatten the learning curve and reduce the effort to implement a Clean Architecture. …


Diagrams as code is a term used for storing the source of a diagram image as a text file. Examples include architecture diagrams, or diagrams showing a system’s behavior or design.

A generator tool like PlantUML then generates an image from the text. According to the ThoughtWorks Technology Radar, a key benefit is that you can use version control on the text files.

In this article, I will present an approach that takes the term diagrams as code literally. I will show you how to generate diagrams from source code.

Represent the diagrams as models in Java source code. And…


I’ve started a new side project. The goal is to drastically simplify the development of message-driven microservices.

Event sourcing is used as the standard persistence mechanism. In the future, I also plan to implement service integration using Kafka.

The project is called Being. It’s based on the Lagom framework.

Here’s the link to the Being project.

Please leave a comment what you think, or chat with me on Gitter.

I appreciate feedback.


Photo by Kaleidico on Unsplash

I just published a new side project of mine, for creating modular monoliths.

It’s very early stage. Not more than an outline. I’m curious what you think about it, please leave me a note in the comments.

Each module is contained in its own Gradle project. Apart from main and connector, the modules have no dependencies.

This modular style of development potentially has the following benefits:

  • The modules mark team boundaries. Each team can work on its own data and behavior, hardly affected by the work of other teams. That can reduce the time to market of development teams.
  • Isolating…


A few days ago, one of my students showed me his code. He had written an AWS lambda function that scrapes a web site and posts contents to Discord. He was unhappy because he couldn’t test the contents of the messages being posted. He said that there wasn’t a mocking framework for the external services.

I told him that he doesn’t need a mocking framework. He just needs to use Dependency Injection (DI). DI enables you to:

  • test business logic isolated from external services and frameworks
  • switch services, technologies and frameworks more easily

Dependency Injection is at the heart of…


I just released version v2.0 of the requirements as code library.

Using it, you can create a single behavior that receives messages from the calling code. The behavior then dispatches the messages to an appropriate message handler. Which handler is appropriate is defined in a behavior model.

In the following example, a user sends a request with the user name (“Joe”). The system greets the user with “Hello, Joe.”

Since the behavior is the central point of control for all functions, you can inject and configure the dependencies of all functions through it. …


Man walking on the moon

Jackson is a powerful library for processing JSON. It’s the default library used by the Spring Framework. It’s very flexible and configurable. The standard way of configuring it is using annotations in the classes to be processed.

In this post, I will explain how to use the Moonwlker library that I created. It’s a facade to Jackson, and provides a builder API to configure Jackson. That way, you can get rid of anotations in your classes. I will also show you how to integrate Moonwlker into Spring Boot applications.

Before we dive into code examples, why would you want to…


Hi folks. I hope you’re doing good and staying healthy.

I just wanted to let you know that I did a major update of the GitHub frontpage of my long term side project, requirements as code.
My goal has been to improve the description of what the project is about, to clearly describe the proposed application design, and to give concrete code examples to try out.

You can find the project here.

I’d be glad if you check it out. Comments & questions are welcome.
If you want to have a direct conversation, don’t hesitate: bertil@requirementsascode.org
Thanks!


Got a bit of time on your hands, and you’re wondering how to use it effectively?

I explain the fundamentals of agile software development and Scrum. How it works and the pitfalls to avoid when getting started.

Watch my online video now on Skillshare:

Agile coach and developer. Follow me on Twitter: https://twitter.com/BertilMuth

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store