/ModellingFromFirstPrinciples

The material for the "Modelling From First Principles" workshop

Apache License 2.0Apache-2.0

Modelling From First Principles

The material for the "Modelling From First Principles" workshop

Description

First principles are the origins, main concepts or assumptions that cannot be deduced from anything else. Reasoning from first principles is best described by Elon Musk: "You boil things down to the most fundamental truths and say, 'What are we sure is true?' ... and then reason up from there." This contrasts with reasoning by analogy, "where we are doing this because it’s like something else that was done or it is like what other people are doing."

Reasoning from first principles takes more of mental energy, but it is the key to radical innovations beyond small incremental evolutions, and it offers many other implementation benefits too. It is particularly relevant for domain modelling in DDD, especially on a core domain that we need to understand deeper, breaking free from the legacy thinking.

Join Cyrille Martraire for a whole day where you will learn how to deconstruct domain models until you reach their substantial first principles. As on a real project, we'll start from piles of feature requests, and we'll crunch them through code refactoring and critical analysis until we identify the domain insights that will lead to a smarter modelling in code.

You will learn

The training covers the following learning points through practice:

  • How to turn hardcoded business logic into dynamic adaptive behaviour
  • How to upgrade maintenance-heavy configuration lists into zero-maintenance criteria
  • How to reverse a formula into its component terms, leading to fewer code, more flexible design and a better separation of concerns
  • How to deconstruct a possibly large set of workflows into the few first principles that generate them
  • How modelling from first principles relates to Bounded Contexts
  • How domain modelling patterns help accelerate discovery of the first principles
  • How code refactorings, drawing domain-specific notations, domain language and language structure can suggest deeper business insights
  • How splitting the roles of specifying vs. implementing leads to sub-optimal results
  • How strategic planning of features can dramatically accelerate discovery of the first principles too
  • And how this powerful approach can turn boring business specs into a dangerously seductive game