DbC: Design by Coding

In the agile world of minimal up-front design and lightning-fast delivery, you need to design and code simultaneously, while incrementally creating a coherent and robust system architecture.

DbC (Design by Coding) is a architectural-level design technique that lets you build a coherent domain-centric architecture incrementally as a system evolves. It extends the techniques of TDD and BDD (Test- and Behavior-Driven Development) to the architectural level, starting with user stories and ending up with an optimal and minimal implementation of that story.

In DbC, you create the code and develop the architecture simultaneously. The result is a coherent minimal system ideal for Agile development environments or any development process that doesn't rely on large up-front design. Moreover, the resulting system architecture is well suited for an agile environment in that it's easy to make changes to it as new requirements arise.

Though DbC seems simple on its surface, to do it well, you need to thoroughly understand the heuristics required to arrive at a good design. You also need to change the way you think about an object. That shift in thinking is, in fact, the greatest challenge.

This hands-on class covers both the theory and practice of DbC. We'll cover the theory in the morning, looking in depth at the rules you have to apply to achieve a good outcome and at why those rules work. Over the course of an afternoon, we'll then put that theory into practice. We take a user story through to an implementation, working in whatever language or environment that you find comfortable. You will come away from this class with a solid grasp of how to actually do DbC in the real world.

Find a short (10 minute) introduction on the video page. (There a lot more to actually doing it that you can get in 10 minutes, though.)