The more I study software design, the more I believe that the key to making the entire field better is to develop a comprehensive model of the key concepts in software architecture (and design) and develop ways of teaching it. Everything else is the “school of hard knocks”.
I’ve referred to this model as the conceptual model of software architecture. A strongly related idea, and one that I’m shocked is not taught directly in most CS undergrad programs, is the idea that developers use models to solve hard problems. I call this model-minded development. The conceptual model of software architecture is one such model.
I gave a talk to the Princeton chapter of the ACM on Model Minded Development.
Many slides have no text, so you’ll want to go to the Full slide deck with speaker notes.
The common denominator here is that software developers are expected to keep in mind many abstract yet complex models that constrain the code they write. In some ways these constraints are a burden and in other ways they are light that illuminates a path forward.
I discussed an idea called Model Minded Development that generalizes across DDD, Design Patterns, architecture, TDD, and coding styles. The defining characteristic of senior software developers is their facility with Model Minded Development and it enables them to operate at an advanced level.
I gave talks at the GOTO Copenhagen and GOTO Amsterdam conferences in 2012. A few folks at the conferences called it “the dandelion talk” because there is an example in the middle of my conceptual model of how to get rid of dandelions in your yard. Of course the real idea is that conceptual models of architecture can help you become a better software engineer – the difference between the 20-year-old version of yourself and the older, master-builder version of yourself. This is perhaps my favorite of all the talks I’ve given, so I hope that you enjoy it too.
GOTO Copenhagen talk on conceptual models of software architecture (Opens on InfoQ website; no easily embeddable video – but going to their site gives you both the video and the slides)
subscribe via RSS