I had this eureka moment while reading an article on Kindergarten learning:
Instead of using whiteboards / Visio to draw our systems design, we instead used physical objects (made of cardboard or a similarly cheap material). Then, in design review, we could visually and interactively demonstrate the interactions between classes and n-tiers. It would be like a 3-D interactive jigsaw puzzle. We could then play out system behavior in more interesting ways and more easily identify issues in the design or confirm the design was correct. If we bound the visual objects to concrete implementations, we could simulate a routine and watch it play out as a 3D model.
This is similar to the way chemists model structures at a molecular level. Once you have visual modeling in place, you can more easily test different scenarios. It’s a paradigm for objective design and becomes completely testable.
Imagine the process of initializing an application and leveraging a DI container to assemble the cross cutting dependencies – logger, security, views, database, configuration.
A design review would then be a game of role play. Each reviewer acting out an actor in the system. Just think how much easier (and fun) to assimilate a system in this way.
I’m left with the curiosity of what would a logger look like physically?