How to not get the software you want

There is a famous set of drawings that ends with a picture of tire hanging from a tree and the words underneath "What the customer really wanted". It is called the tree swing meme / story. It crops up in many places in project management and software engineering.

Many meanings are taken from this simple diagram including:
  • the problem of Chinese Whispers
  • poor specification
  • the lack of shared understanding

However, above all these individual issues there is one overall truth:

Projects involving groups of people are hard to complete on time and on budget


Knowing this why do we insist on sabotaging projects through poor communication?

Once upon a time in a school system far far away people were taught arcane skills:
  • precis writing - summarising a document to retain the essential meaning
  • logic - writing statements which follow the rules of logic

These two skills seem to have fallen into disuse and as a result when people specify what they want they end up injecting ambiguity into the request without even realising it.

Be precise in as short a form as describes the essentials



Requests and specifications can easily fail to convey meaning effectively by being either:
  • too short; or,
  • too long

Too short



Albert Einstein famously said: “Everything should be made as simple as possible, but no simpler.” This is particularly true for specifications. There eventually comes a point where the shorter expression has lost some important bit of meaning that robs the specification of descriptive power.

Too long



A long description takes time to write and time to read and if it does not improve understanding is wasteful. Worse still the reader may be disinterested in it making their attentiveness less. Taking the time to be brief and precise in the communication enhances the chances of getting the meeting of minds that is required to make a successful project.

Logic



To communicate clearly it is critical to write unambiguous statements. One of the most common errors made is caused by one word answers to complex questions. A simple example is:

Would you prefer A or B? Yes


The statement is literally true if either A or B is true. It just is not useful in communicating what either the person posing the question or the person supplying the answer thought they were doing.

Spending a few more words clarifying the intent would solve this issue.

In conclusion, software is a complex business bringing enough chances of failure. A little care in language can bring understanding together, but carelessness can promote separate understandings and hence not getting what was desired.