Product

A budding plant emerging from fertile soil.

Reducing complexity, growing knowledge

Developing products requires a peculiar way of thinking: Rather than executing on an elaborate plan, breaking features down into smaller parts, and organizing large amounts of work, the way to win is to quickly validate our assumptions about the business model, before we even start spending money on plans.

We do this by conducting research (to find out about the the status quo, or to learn about customer preferences, potential markets, or the competition), by running experiments (to find out if our assumptions hold up when meeting potential customers), or by building prototypes (to validate technical feasibility, or to reduce risk, by solving the most difficult technical challenges first).

Our toolbox

We will help to guide and support your product journey by moderating tried and tested methods, which help to find focus, generate ideas, identify assumptions, and turn them into validated knowledge using the fastest ways to get feedback available, such as:

  • EventStorming
  • Impact Mapping
  • Working backwards / PRFAQ
  • Lean Startup
  • Business Model Canvas
  • Value Proposition Canvas
  • Design Sprint
  • User Story Mapping
  • User Test
  • Concierge Product
  • Lo-Fi Product Prototype
  • Proof of Concept / Architectural Prototype

What can we do for you?

Our involvement in these methods can be facilitation, coaching, active consulting, implementation, and/or any fluent combination thereof.

Let's start by having a conversation - and find out together, which approach fits your needs best.

Team

A table full of colorful sticky notes.

E pluribus unum

Today's complex market challenges require lateral thinking and collaborative ways of working: The lone genius in the basement of the early 2000s will be outperformed by cross-functional teams, combining multiple perspectives, synthesizing expertise from many fields and backgrounds into a common result.

Our toolbox

We don't believe in "scaled" agile approaches, top-down management, or any extensive planning upfront. These methods tend to increase, not minimize complexity, and create unproductive overhead that serves no other purpose than sustaining the tool itself.

Instead, we will help to guide and support your teams by enabling them to act, learn, and improve autonomously, using only tried and tested methods that help to find focus, eliminate waste, and continuously improve daily work, team and company results, and ultimately everyone's happiness, such as:

  • Software Teaming (aka "Mob Programming")
  • Agile Retrospectives
  • Team Topologies

What can we do for you?

Our involvement in these methods can be facilitation, coaching, active consulting, implementation, and/or any fluent combination thereof.

Let's start by having a conversation - and find out together, which approach fits your teams' needs best.

Craft

Hands carving an intricate piece out of a wooden block. Both hands are covered in golden dust, the entire scene is glowing.

Toolbox + Talent + Skill

Software done right is malleable, easy to understand, and adapts well to change. Not just to run the first time, but to preserve usefulness and maintainability for months, years, maybe even decades. To embody these qualities, a codebase must be written with care, by developers in command of their craft.

Our toolbox

We will help to guide and support your developers by teaching and coaching tried and tested methods that will make them more efficient, deliver timely, and find and fix errors before they ship.

Your teams will increase automation whenever possible, and practice effectively what can't be automated, using:

  • Continuous Integration
  • Continuous Delivery
  • Test Driven Development
  • Behavior Driven Development
  • Infrastructure as (actual) Code
  • Deployment Pipelines

What can we do for you?

Our involvement in these methods can be facilitation, coaching, active consulting, implementation together with your team, and/or any fluent combination thereof.

Let's start by having a conversation - and find out together, which tools and approaches fits your teams' needs best.

Trainings

EventStorming Deep Dive - Two-Day Training (10-20p)

What is EventStorming?

EventStorming is a workshop format for exploring complex business domains, created by Alberto Brandolini (ca. 2013). It is both an iterative domain modelling and software design technique, and a collaborative learning activity.

What will I learn?

Participants will experience an EventStorming workshop based on a real life scenario. We will “zoom out” at regular intervals to discuss and reflect on a meta level.

They will:

  • Get to know some core concepts of Domain Driven Design
  • Learn how to facilitate an EventStorming workshop
  • Identify common patterns and anti-patterns
  • Acquire tools and techniques to resolve conflicts and keep the group's energy level up
  • Apply concepts from Lean and Theory of Constraints to the domain model: Identify bottlenecks, find cost and value centres
  • Progress from domain modelling to software design, leveraging workshop outcomes to create better architectures
Agenda*:

* EventStorming is a highly dynamic and sometimes surprising format. Because we expect unforeseen things to happen, there isn't a strict schedule or timetable. But we do have a plan.

Day 1:
  1. Introduction to Domain Driven Design: Getting the gist of what's about to happen, and why.
  2. Big Picture Event Storming
    • Getting the combined knowledge in the room onto the wall, and starting to discover the domain
    • Common behaviour patterns and dynamics
    • How to address conflict and find agreement
  3. The Picture That Explains Everything
    • Progressing from agreement to understanding to insights
    • Filling the gaps: Creating a readable, coherent model of the business domain
    • Identifying bounded contexts and processes
    • From actors to personas: What do we know about our users?
Day 2:
  1. A short, but necessary excursion into strategic domain modeling: Identifying building blocks and core concepts
  2. Business Process Modelling
    • Identifying and naming (sub-)processes
    • Making the model executable: Defining complete business rules and read models
  3. Software Modelling
    • Identifying aggregates and creating the blueprint of a domain model implementation
    • Where to cut, when to combine: How bounded contexts should shape our software design
  4. Outlook
    • What happens then? Some suggestions for tactical design
    • What EventStorming can't do: Managing customer expectations
    • How and when should I practise? Becoming an EventStorming facilitator
Target audience:

Usually people with a background in business analysis, software design, architecture, or group facilitation. Running the workshop requires both people skills and analytic thinking — EventStorming itself is really for everyone: The activities are very intuitive and require no prior training.

Hands touching and grabbing colorful sticky notes on a table top.

From DDD to Serverless (Three- to Five-Day Training, 10-20p)

What happens next?

So, you did EventStorming, and you have a solid idea of what your domain model should look like - now what?

What will I learn?

Participants will experience the journey from domain model to cloud native implementation, based on a real life scenario. We will touch on important steps and methods, explore and "fast forward" through an actual code base, discuss organizational change, architectural trade-offs, and see it grow organically - from a naïve first prototype to a fully functional distributed application, running in the cloud.

They will:

  • Apply well-tested and proven methods to collaboratively design and explore a non-trivial software system
  • Get acquainted with Conway's Law and the principles of Flow - and apply changes to an organization to align the development process with the business
  • See the same system grow more complex, as the workshop progresses - including the consequences of earlier choices
  • Learn to test-drive business logic, technical artifacts, and infrastructure as code
  • Deploy and run the resulting distributed system in the cloud, fully automated.
Agenda*:

* The real journey of the company we will emulate would take 6-12 months. We don't have that much time, and therefore we won't explore everything to the fullest detail. Because classes are different, and some parts may be more interesting than others, we expect unforeseen things to happen, and there isn't a strict schedule or timetable. This agenda is merely a proposal.

Day 1:
  1. BDD, Example Mapping, and implementing the domain core
    • Making the model come to life with simple code
    • Working test first, from real world business examples
    • Getting early and efficient customer feedback
Day 2:
  1. Evolving the core architecture to fit your needs
    • Using fractality to plan the system's evolution
    • Establishing context boundaries
    • Gaining control of dependencies across the organization
    • Splitting the monolith into separate modules
Day 3:
  1. Journey to the cloud
    • Designing an event-driven system
    • Deployment containers and right-sizing
    • Establishing automated deployment pipelines
Day 4/5 (optional):
  1. Advanced topics
    • Database selection and schema design
    • CQRS and Event-Sourcing
    • Security and governance
Target audience:

Usually people with a background in UI/UX, software design, architecture, and development (or combinations thereof). We will work as (a) group(s), using Software Teaming (aka "Mob Programming") starting from pre-built examples. This is a learning workshop: We will adapt the agenda to the group's strengths and growth areas, as best suits everyone's needs.

Speaking

Tobias Goeschel speaking at KanDDDinsky 2024. He smiles and wears a headset microphone and a KanDDDinsky badge and lanyard.

Upcoming public speaking engagements

  • How to Train Your Domain Model - KanDDDinsky, Berlin - Oct. 22-23, 2025

Past public speaking engagements

  • Domain Prototyping - SoCraTes Training Day, Soltau - July 17, 2025
  • How to Train Your Domain Model - DDD Europe, Antwerp - June 4-6, 2025
  • Teaching DDD (Workshop) - ExploreDDD, Denver - April 16-17, 2025
  • From DDD to Serverless in a Day (Workshop) - OOP, Munich - February 3-6, 2025

Community

The hands of many people of different gender, age, and skin color, each holding some earth with a budding plant.

Fostering solidarity and belonging

We know that no company is an island, and consequently, we engage in and support community activities, particularly in the Software Crafters community, the Domain Driven Design community, and any community that cares about diversity, equity, and inclusion.
We care. And we think everyone should.

If you are a not-for-profit organisation, or a company with a public code of conduct that explicitly supports diversity, equity, and inclusion, or if you are running a project for the public benefit in the aforementioned community spaces, or with similar goals in mind, we will give you up to 30% discount - or even work for free (when the cause is just that important).

Let's have a chat, and discuss how we can help!

Our DNA

As consultants, we work in a wide variety of projects for different customers, with an even greater variety of people and personalities involved.

How exactly we find good decisions, and make them work, depends greatly on context. However, these decisions are guided by core values and principles, which embody the spirit and mindset of Core Domain Consulting:

1. We are both individuals and company envoys.

We never betray our individual identity in favor of representing CDC, nor do we pursue our individual ideas over the good of the company. We always find a healthy balance between the two.

2. We are accountable.

We celebrate our wins, and always stand up for our mistakes. We never shift blame onto others.

3. We are trustworthy.

We always speak the truth, even if it's hard, and never keep important information from our customers and stakeholders.

4. We are dependable.

We always keep our promises, and never promise what we know we can't keep.

5. We are helpful.

We always measure our own success by how well we help our customers succeed. Our first and foremost concern is providing customer value.

6. We are team players.

We value and respect our teammates, whether they are CDC colleagues, or from other companies. We always verify our own assumptions by consulting with the team. We practice team coding techniques, such as peer reviews, pair programming, or Software Teaming, wherever possible.

We overcome challenges together, by helping each other out. We win by combining our strengths. We shine by making our teammates shine.

7. We are relentless.

We are never content with the status quo. We always strive to be a better version of ourselves, tomorrow.

8. We are sustainable.

We are mindful of our capacity and energy reserves. We never jeopardize project success by overcommitment and overwork. We always pace ourselves to a workload, which can be sustained indefinitely.

9. We will be right (in the end).

We strive to be true knowledge leaders: We never pretend to know things we don't. We always back our opinions with verifiable information - from our own experience, or from trusted sources. When we’re wrong, we acknowledge and correct our errors.

10. We are learners.

We never assume to have all the answers. We always learn from our mistakes, and allow others the space to learn from theirs. We always keep an open mind, and never stop looking for ways to improve our craft.