Ask somebody in the building industry to visually communicate the architecture of a building and you’ll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer to communicate the software architecture of a software system using diagrams and you’ll likely get a confused mess of boxes and lines … inconsistent notation (color coding, shapes, line styles, etc.), ambiguous naming, unlabeled relationships, generic terminology, missing technology choices, mixed abstractions, etc.
― Simon Brown
What stands for building architecture remains true for software. You should never engage in a project without passing through a proper phase of design that all stakeholders can understand, contribute to, and agree upon. Building a smart software mental model to effectively support design discussion is a key skill within a team.
Agile methodology has promoted the team as a top-notch unit of value. We craft software as a team. We deliver product as a team. We make decisions as a team. And architecture is no exception. We should design as a team. To achieve this goal, we have no choice except shaping and sharing an ubiquitous software model.
Success in that matter is not an easy task. You need methods and you need tools. Take advantage of the C4 bootcamp to demystify underlying key concepts and learn how to craft highly-valuable architecture materials.