Have you heard of Domain Driven Design? Not well known in the Python world, it's an influential development approach that aims to 'tackle complexity in the heart of software'. If you're working on complex problems, watch this talk: it may change the way you think!
I’ve been writing code for 25 years. Over that time I’ve been through a few, rare, exhilarating paradigm shifts where my thinking as a developer suddenly changed. One was early on, when I suddenly understood object oriented programming. Test driven development was another. And then, six years ago, I read Eric Evan’s 2003 book Domain Driven Design.
The book opened up for me a whole new way of thinking about the practice of software development. It is focused not on traditional technical concerns we’re used to reading about, but on the conceptual world of modelling. It views an application’s domain model as one of its most important assets, and presents a wealth of wisdom about how to orient our thinking, code and working practices around that model.
But, for some reason, these ideas are not well known in the Python community.
I now work on a highly complex project: Kraken, a Python monolith of tens of thousands of modules, serving energy and utility companies in a variety of countries. Domain Driven Design has, for me, been an invaluable influence.
In this talk I outline the key ideas of Domain Driven Design, ideas that are beyond any one language, technology or architecture. I’ll also ground it with some practical examples of how it can look in Python. Are you looking for your next paradigm shift? Perhaps this could be it!
Picture by Mark Hawkins for PyCon UK.