The Art of Consulting – Designing (Affordability, Flexibility, Maintainability, Elegance)

Share

Designing well means designing something that does the job as simply as possible and is also easily used by its intended users. Good design also means:

  • Affordability
  • Maintainability
  • Flexibility
  • Elegance

Affordability and maintainability usually go together, and both are often related to simplicity and pragmatism. A good design will do as much of the job as it is sensible to do, as simply as possible, for as long as possible.

In the physical world there’s usually a trade off between high quality of materials (and consequently a long life) and cost. Choosing how well to build something is a matter of cash flow, the pattern of expected return on investment, required lifespan and available resources to invest.

For most people who need to go from A to B, this is a better choice…

small car

than this…

big car

And something like this…

goldfish

is easier to maintain than this…

showdog

In the abstract world of software design, maintainability also requires that know-how persists in your supplier or your workforce. Bear that in mind. Sometimes all the money in the world won’t buy the knowledge that the original designer had.

Flexibility is a more difficult concept. Good design will enable adaptation as requirements change. But anticipating the future, which flexibility requires, is always tricky.

Suppose you are designing an invoicing system and it must be completely flexible, then you must choose a word processing tool such as Word (not in fact a ‘system’ at all), though this comes at the cost of there being no constraints and controls on what a user might do.

Flexibility is expensive. I am a designer of a software package for Professional Services Management and Expense Management (see systems@work). This software must work for many kinds of companies so I must design it to be flexible. This costs a lot more overall than it would if I were designing just for one organisation, even if I designed a certain level of flexibility for that organisation. But even so, our software will sometimes hit a brick wall of impossible requirements and we can’t always do everything that a client might want. Sometimes, if this is a showstopper, we lose the deal.

Judging just how much flexibility is needed in good design is an art. It comes with experience, but you must take account of this. Not to do so can mean  enormous expense when requirements unavoidably change.

Finally, elegance. This is an insubstantial concept, and perhaps, if all other principles are adhered to, elegance simply emerges. The most efficient, pragmatic, simple, maintainable, affordable and flexible design may also turn out to be the most elegant. But, for sure, elegance involves art. It is a matter of aesthetics and it is as difficult to prescribe as it is to write music as well as Mozart did.

See also:

The Art of Consulting

The Art of Consulting – What’s the Role of the Consultant?

The Art of Consulting – Impartial, Honest and Independent

The Art of Consulting – The Essential Skills

The Art of Consulting – Listening

The Art of Consulting – What’s a Good Question?

The Art of Consulting – Representation and Analysis

The Art of Consulting – Writing Simply

The Art of Consulting – Designing (Completeness & Simplicity)

The Art of Consulting – Designing (Pragmatism)

Good Design is Timeless

There are no absolutes in good architectural design. Personal taste differs from one individual to another. Some like simple austere forms, modernist and functional, and some like exuberant decoration, from the gothic to art nouveau. Some like both, as I do, preference depending on the day and my mood.

But when it comes to software design decoration has no place. Simplicity, elegant or not, is the most fundamental design principle, in combination with readability. There should be no more moving parts than are necessary (which paraphrases 14th Century William of Ockham’s Law of Parsimony), but it’s equally important that function should not be obscured by the reduction of code to its logical minimum. ‘Clever’ code is dangerous if it doesn’t easily reveal its purpose.

So good software design is more like functionalist/modernist design than any other, simple and easy to navigate, and good functional design is timeless.

Take the Bata House in Wenceslas Square in Prague, built in the late 1920s. It became the model for thousands of shops and department stores, and if you look at it today it looks as new and fresh and perfect as it ever did. You would not think it is nearly one hundred years old.

294px-Bata_Stores_Wenceslas_2005

And take Roma Termini, the main railway station in Rome. I remember arriving in Rome in the mid 1960s, after a long journey over sea and land from Victoria Station in London. The brilliant white walls were dazzling in the Italian summer sun, and the station was visible from miles away as we crawled to a full stop several hours late. It made an impression on me then, and it still impresses. Look at how well this cluttered hall is designed, how simple and light the long glass panel looks, not actually supporting the cantilevered roof. Perfect.

roma termini

The same aesthetic is ‘visible’ in software, and particularly in the financial package we sell – SunSystems. Its principles haven’t changed in 25 years. It’s simple, elegant, easy to understand, powerful and functionally fit for purpose.

William of Ockham would have loved all three of these artefacts.