Presentation: Tweet"Master-builders have rich conceptual models of software design"
How hard is it for an architect to be a master-programmer, or a programmer to be a master-architect? One might assume this is easy because both programmers and architects work with the same materials (software) and have the same goal: the design and construction of quality software. In reality, it is quite hard because programmers and architects focus on different aspects of the same software system, aspects that are intricately interconnected. To be a master-builder means understanding programming and architectural aspects separately and being able to reason through the interconnections.
The essential problem is that while we have good descriptions of individual concepts (e.g., encapsulation, design patterns, code indentation style, application frameworks, modules, layers, typing, callbacks, functional programming, quality attributes, domain modeling, code invariants, architectural styles) we lack a clear understanding of how all those concepts fit together and how they interact on real projects.
Until we can relate all these concepts, programmers and architects will only occasionally succeed in being master-builders. This talk presents a conceptual model that relates many of these design concepts and implementation concerns and is a first step towards a clear description of how they all fit together.