Emmanuel Genard

Software is invisible and unvisualizable

“Software is invisible and unvisualizable.” (Frederick P. Brooks, Mythical Man-Month, No Silver Buller)

The Unified Modeling Language(UML) has 14 diagram types. The C4 model contains 4 types. There are data flow diagrams, flowcharts, customer journey maps, mind maps, value stream mapping, cloud architecture diagrams, entity relationship diagrams. If you go into Domain-Driven Design, there is event storming which produces a visualization. If you go old-school object-oriented you might have done Class Responsibility Collaborator cards. And there is always the free-form diagram that you come up with on the fly when trying to explain something. All these diagram types were developed after Brook’s published “No Silver Bullet” in 1986. He is still right. Software is invisible and unvisualizable.

I could take one feature of some software I’m working and produce all 14 UML diagrams for it. I give another programmer these diagrams and they would not understand the software. They would still need to spend time reading and tinkering with the code to understand the software. They certainly could not make any changes based on the diagrams.

Software is ideas. Through the ideas of arithmetic and accounting put into code, the number in my bank account goes up and down.

Software is an encoded thought process. The calculations that would have done by an accountant or bank teller are encoded into instructions for a machine and the number in my bank account goes up and down.

A software diagram is looking at dead butterflies behind a pane of glass. Understanding software is having a butterfly land and linger on your index finger.

Published: 2024-03-25

Last Edited: 2024-03-25