Showing posts with label Code Craftsmanship. Show all posts
Showing posts with label Code Craftsmanship. Show all posts

Wednesday, October 22, 2025

The Hidden Architecture of Words — Ubiquitous Language Uncovered

Over the past weeks, I’ve been diving into one of the cornerstones of Domain-Driven Design — Ubiquitous Language. It’s not just about naming things right. It’s about creating a shared language that bridges business and technology, reduces misunderstandings, and makes complex systems easier to reason about.

To make the idea practical, I’ve prepared a short series that walks through it step by step — from understanding what Ubiquitous Language really is, to finding it in your domain, and finally applying it in action.

Wednesday, October 15, 2025

Thursday, October 9, 2025

Speaking Many Languages in One System

Last time I explained what Ubiquitous Language is, why it is crucial to use it, and how it can support software evolution and maintenance. Today, I would like to share several approaches that can help you define the boundaries of domains within your application.

Tuesday, October 7, 2025

Beyond the Mess: A Complete Look at Event Storming Big Picture

Over the past months, I’ve been exploring one of my favorite collaborative techniques – Event Storming Big Picture. It’s a powerful way to untangle complexity, discover hidden assumptions, and build a shared understanding across business and tech. Instead of explaining everything in one go, I decided to create a series of posts that walk you through the practice step by step.

Tuesday, August 26, 2025

Ubiquitous Language - Boundaries, Words, and the Hidden Cost of Ignoring Them

Today, we begin a detailed exploration of Domain-Driven Design (DDD) patterns — moving from theory into practical examples. In my view, the most powerful and important pattern is Ubiquitous Language. We will examine not only how to use it, but also how to protect it and ensure it evolves alongside the application throughout its lifecycle.

Thursday, August 21, 2025

The Two Faces of DDD: Strategy vs. Tactics

In today's post, I will explain what Domain-Driven Design (DDD) is, what groups of patterns it includes, how they differ, and how they can help improve your application's quality. 


What is it?

Domain-Driven Design is a collection of patterns that help you align your software more closely with the business it is intended to support. These patterns focus on reflecting domain knowledge - including its language, rules, and constraints - directly within your application. By doing so, they simplify and enhance collaboration with domain experts and stakeholders.

Wednesday, August 13, 2025

Understanding the Problem and Solution Spaces

Last time, we briefly explored various types of boundaries that should be considered when making architectural decisions for your application. Today, I want to share insights about the Problem and Solution Spaces.

This understanding will support you in defining more effective boundaries — both at the level of services and within the code itself.

Tuesday, August 5, 2025

The Secret Geometry Behind Your Architecture

In software architecture, we often talk about boundaries — and for good reason. Boundaries provide valuable insight into various aspects of our systems: cohesion, dependencies, complexity, and more.

Today, I want to walk you through several types of boundaries that should be considered when designing software architecture. Broadly speaking, they fall into two categories:

  • Knowledge-specific: These are shaped by business knowledge, requirements, and policies.

  • Technical: These are defined by technical constraints and non-functional requirements.

Wednesday, July 30, 2025

From Event Storming to Microservices: A Living Repository

For the past year, I've been quietly crafting something I’ve wanted for a long time—a repository that brings together many of the architectural and development practices I teach, use, and often write about. It’s not a demo for a talk. It’s not a throwaway “hello world.” It’s a living thing: full of decisions, trade-offs, experiments, and structure.

📦 Explore the repository

Inside, you’ll find examples of using:

  • Saga, Outbox, Event Sourcing, and CQRS (within services and between them),

  • EDA, Ports and Adapters, Strategic & Tactical DDD, Event Storming on all three levels,

  • Plus CI, static analysis, testing strategies, ADR, and even some AI usage.

I’ve started also writing blog posts to explain how and why I approached certain problems the way I did — all of them are or will be also linked in the Readme.md. But it will take time to describe everything. If you’re curious, you don’t have to wait. Just dive in.

If you think something’s missing — or you think I got something wrong — tell me. Let’s talk. That’s how we all get better!




Tuesday, July 29, 2025

After the Big Picture: Turning Insights into Action

Now that you understand what Big Picture Event Storming is, how to facilitate it, and how to overcome common challenges as a facilitator, I believe the series of articles we’ve explored — walking through its steps and possibilities — demonstrate that the knowledge gained by everyone involved truly justifies the time invested in the workshop.

That said, the objective is to cover various stages of developing a Training Center application, to illustrate how techniques like Event Storming, microservices, event-driven architecture, sagas, and many others can work synergistically to improve product quality, architecture, and code. So the natural next question is: what comes after the Big Picture?

Wednesday, July 23, 2025

Big Challenges of Event Storming Big Picture

Event Storming is a powerful technique that helps you learn a lot, but I always emphasize — both in my daily work and in the trainings I conductc — that you need to ensure there is a return on investment in everything you do. That’s why I want to remind you of a few things you should keep in mind as a workshop facilitator, so you don’t end up with just an entertaining session that delivers little value.

Thursday, July 17, 2025

So… Which Event Goes First?

How to start?

Last time, we walked through the "enforcing timeline" step of Big Picture Event Storming. To begin, we need to choose the first event — but a simple "Let's start" is easier said than done. Let’s explore a few different approaches for deciding which event (or events) we should start with, along with their respective pros and cons.

All approaches can be divided into two categories:

  • Close collaboration — everyone works together all the time.

  • Working in silos — people work alone or in smaller groups and merge their outcomes later.

Monday, July 7, 2025

Event Storming Big Picture — How to enforce the Timeline?

We have completed the first step of our workshop. The chaotic exploration and following discussion allowed us to visualize a wealth of information: events, hot spots, and opportunities. We are starting to align our understanding of concepts and terminology.

Before moving to the next step — enforcing the timeline — let’s briefly revisit what we have produced so far:

You may also want to remind yourself of the high-level requirements.

Now that we know where we stand, let’s see how we can use the outcome from the previous sessions.

Thursday, June 20, 2024

Taming the Storm: How Chaotic Exploration Shapes Big Picture Event Storming

Having delved into the intricacies of event storming, its various types, and effective workshop facilitation, it’s now time to embark on our first practical example.

Thursday, June 13, 2024

Navigating the Storm: A Guide to Big Picture Event Storming

To grasp a comprehensive overview of our business arena, we will conduct a Big Picture Event Storming workshop. This will acquaint us with the domain, providing sufficient knowledge to make several key architectural decisions, such as delineating the preliminary boundaries of our services.

Today, we delve into the intricacies of the Big Picture Workshop. Armed with this understanding, we will embark on a thorough exploration of the workshop’s application to the Training Center domain starting next week.


Wednesday, June 5, 2024

Event Storming Workshops: Tips and Tricks

Event storming is a powerful technique for collaborative domain exploration, but like any tool, it’s not a one-size-fits-all solution. In this article, we’ll delve into practical tips and tricks to make your event storming sessions more effective and productive.

Thursday, May 30, 2024

Event Storming Workshops: A Closer Look at Different Approaches

Armed with the knowledge from our previous article on workshop preparation, we’re ready to shift our focus shifts to a crucial aspect of Event Storming: the diverse workshops it recommends. 


Monday, May 20, 2024

Setting the Stage: Preparing for Your Event Storming Workshop

Now that you’re familiar with Event Storming and its benefits, it’s the perfect moment to delve into the "How" - the practical aspects of conducting an Event Storming workshop.

Thursday, May 16, 2024

Elevating Your Code Craftsmanship: Questions and Answers

Recently, I shared the idea of a series of posts designed to guide you through the construction of the Training Center, utilizing a microservices architecture. If you missed it, you can catch up here.

I’m excited to delve a bit deeper into this topic today.