Software Quality - Pragmatics

2 minute read

This article continues my series on Software Quality, discussing Vignelli’s pragmatics.

My idea is that we judge quality using the same inbuilt sense of aesthetics as we would a work of art or an everyday object, albeit at quite a high level of abstraction.

The design industry has a lot to say about this kind of thing and no one more so than [[@Massimo Vignelli]], who summarised his core ideas in the Vignelli Canon.

Whatever we do, if not understood, fails to communicate and is wasted effort. – Vignelli

No matter how cleverly we design something, if it is not understood then that design has failed. Software is complex and some decisions will need explanation, but if the design is still not understood then the effort in producing it is wasted.

Complicated, confused designs are very common in our industry. They are often the result of confusion in the minds of their developers, analysts and users. A confused mind will produce a confused product. These projects usually limp along before collapsing, mercifully, under their own weight, but not after many years of very expensive and wasted effort.

We should be careful not to confuse a complex solution with an accidentally complicated one. Some systems are unavoidably complex and what we expect to find there, as in all systems, is a set of core principles that underpin the whole edifice. Without clear, strong and forceful decisions that provide structure to systems, there will be no clarity and plenty of confusion. This is not to say that those decisions are carved in stone. Constantly changing environments and requirements are a fact of life in software and so those decisions will need to be revisited and reworked. However, it is much easier to move from one set of clear and strong design decisions to another, than it is to rework a confused system.

Having clear, strong and forceful decisions is the only pragmatic choice we can make. Allowing ambiguity and confusion is not pragmatic, it is simply sloppy and is the easy way out in the short term.

Vignelli sums it beautifully:

• We like Design to be forceful • We do not like limpy Design • We like Design to be intellectually elegant – that means elegance of the mind, not one of manners, elegance that is the opposite of vulgarity • We like Design to be beyond fashionable modes and temporary fads • We like Design to be as timeless as possible • We despise the culture of obsolescence • We feel the moral imperative of designing things that will last for a long time

This is pragmatism in any field, and no more so than in software.