OOP Is Not For Everyone

Object-oriented programming has been around for decades and has done a great deal for software development. So why do people keep complaining about it?

Transactional Events Made Easy with Spring

How to publish events transactionally with RabbitMQ and Spring’s ApplicationEventPublisher.

OOP Is Still Cool in 2022

Object-oriented programming might not be perfect but it is still the best we have.

Keep Options Open

Keeping options open is one of the most useful principles of Clean Architecture. Let’s dive deeper with code examples in Java and Spring framework.

How Cohesion and Coupling Correlate

Cohesion done right reduces the coupling and complexity of systems.

The Interface Segregation Principle with Lambdas

How to implement the ISP using simple functions to reduce coupling and complexity at the same time.

You Aren’t Gonna Need Microservices

Do you really need a cluster of pods, service mesh, and stream-processing platform right now?

What Is a Repository

Which purpose has a Repository? To which layer does it belong to? And how to implement it correctly?

Domain Collections

Collection, List and Set are terms very familiar to developers but hardly used by business experts. Therefore, they should not be part of the domain (API).

Events vs. Commands in DDD

There are situations where events and commands seem to be a good solution for a problem. Where to use events and where are commands the best fit?