By Michael Keening
Software can become quite a jungle. What type of tools do we use in the real world, and can we use these ideas for software as well? With a Cognitive map we make a birdseye view which is top-down. Based on some properties, you know where you are on the map. Another theory is cognitive landmarks. Instead of a birdseye view, you take snapshots, and navigate based on these landmarks in your mind. Humans cannot really describe what and how we think. Experiments on rats show that they navigate via landmarks.. Humans also navigate best using landmarks. So, how can this help us design better architectures? We need alternatives for architectural cartography. How about landmark snapshots, telling stories and living in our architecture?
First on cognitive landmarks. What could these be in our architecture? A first observation is that patterns are landmarks. For example, in layers one on top of the other has some meaning that everybody uses, even in gesturing (data is stored down here). Another landmark could be to show people where their contribution fits in the overall picture. Heatmaps are also a form of landmarks. Views should create relatable reference points.
Next on leaving traces. A trace is a visible mark left by the passage of a person or animal. Signs are good examples of traces, but also the footpath itself. Architects leave traces as well. For example in the code, but also in naming, comments (the why, not the what), tests, version history and domain-centric design. Those are examples of natural traces, that – with a little good will – are easy to employ.
Another technique he proposes are ADRs. an Architecture Decision Record is a short text file in a format similar to an Alexandrian pattern that descirbes a set of forces and a single decision in response to those forces (Michael Nygard) (Keeling, 2018). Training the developers with ADRs made people in the project more involved in the design (and hopefully that leads to fewer flaws).
Another aid is story telling. This means that they use the whiteboard a lot. Really a lot. They sketch, take turns, and follow traces. Another remark is that arhcitecture oral history collapses without a team to keep it alive. So, one should keep the history alive!
Living in your architecture. For example, having an open office space with designated teams, you can observe who are meeting together, talking together. That’s one way to make architecture real. Other ideas would be to make it tangible, e.g., like physical atoms in chemistry you can use, or 3D print the architecture. How about using VR to learn and experience an architecture? A good call for ArchitectureCity 🙂