
For me, it is not a programming language or a framework.
It is a deep understanding of the domain and how the system must work in the context of the users.
Engineering disciplines can help us.



When software is always in a releasable state, we can deliver it to users frequently to gain new knowledge.

DDD allows us to build a domain model that is shared by the team, the business, and even the source code.

The source code contains knowledge about the system and the domain. Clean code reflects this knowledge to us every time we read it.

Refactoring allows us to keep knowledge up to date in the code.

Pair/mob programming spread knowledge among team members, contributing to build a shared understanding.

TDD makes us specify our current knowledge even before we write the code of the system.
