Software Design : making sculptures or a 3d print
Volumes have been filled over art, science, engineering of software design. I was explaining to someone and came up with this analogy, and they seemed to actually like it ! ( Of course, my home ground being design of a small distributed system, however i’m sure this can extend to higher or lower scale as well )
Look at a artist making a painting, or a sculptor making a sculpture. For a long time in the making, it’ll just seem like brush strokes or clay blobs or chisels being applied in a seemingly unorganized manner. The artist will make a few mistakes, go back and cover them up, improvizing on the way.
On the other hand, look at a 3d print being done or a photo-copying in action. Pixel by pixel , or drop by drop, the x, y and z planes will start fillingup, with perfect precision, and no need of going back to correct !
I’ve been through various projects and found that the reciepie that works, is this. At a very low level, the machine approach is needed. Make solid blocks, which you don’t have to go back and fix. There are the ‘implementation’ of the famous ‘policy up, implementation down’ approach, and also referred to as decision-less code. I’ld even say any change at this level is a bug, and not neccesarily a feature.
However, on the higher level, the artist approach makes for a very flexible and growth-enabled software.
While anyone would to move in a role, which only allows me to do artist level design, the overall software quality really comes from the machine level ( it’s where the tyre hits the road ), and that’s where, all the fun of programming lies!