The Good Programmer
These are notes taken from my introductory lightning talk at Codurance which is why it’s a bit rambly. I wanted to talk about what software quality means to me.
Consider the difference between the following statements:
- he is a good cricketer
- he is a good politician
- he is a good king
The best cricketers are usually those with the highest number of runs scored or the number of wickets taken. It is easy to measure goodness when metrics like this are availableThis is why we look for metrics to help us judge the quality of work by salesmen, marketeers, factory workers, etc. Some managers might try to measure programmers in a similar way using, for example LOC. but it also means intangibles, like teaching ability or strategic awareness, are not properly valued.
On the other hand a politician could be assessed in terms of their effectiveness in policy making but more likely in terms of their personal ambition, even if success comes at the expense of others.
The last is closest to an ethical judgement. Are the king’s subjects well off? What were his motives and were they noble? In some ways it’s a judgement combining the cricketer’s stats and the morality of a politician.
These are just three examples but it’s clear that there are different perceptions of goodness in a professional setting, and we haven’t even talked about being a “nice person”.
One of my favourite books is “The Zen of Motorcycle Maintenance” by Robert Pirsig. The main subject of the book is Quality and begins by describing it in terms of motorcycles.
Zen and the Art of Motorcycle Maintenance
He, the author, has a beautiful Harley Davidson which he cherishes and lovingly maintains. His technical knowledge of the machine allows him to take it apart and diagnose any problem. To him this is the mark of Quality.
His friend John Sutherland, on the other hand, has a BMW. He has no idea how it works and takes it to the mechanic to be fixed. His relationship to the machine is purely functional. Nonetheless his enjoyment of the moment, Pirsig observes, is not diminished, and the BMW rarely breaks down anyway.
Pirsig’s initial perception of Quality changes over time taking into account the rational way he approaches the maintenance of his own motorcycle compared to the attitudePirsig calls it romantic but it could also be seen as functional or pragmatic of his friend. His conclusion, as in many things in this life, is that we should strive to combine both perspectives. Quality itself is a judgement making sense only in a given context“Quality is a quality”
So what does this mean for the software professional? It depends. What type of professional do you want to be: the politician or the cricketer? How do you approach your work, like Pirsig’s Harley or Sutherland’s BMW?Most businesses (and managers) treat software as purely functional and expect a BMW. The worst developers aim for BMW but provide an rickety moped. Other developers provide a Harley Davidson which does not fit with the rest of the mopeds in the garage
There is also an ethical question. You only have to look at recent developments in self-driving cars and the internet of things to see the pervasiveness of software in everyday life. The catalog of failures in security is growing every day. How can we reconcile a professional ethic with competing perspectives of quality?
Can we take a step back a recognise that software means different things to different people? If we do then is everyone’s perspective as valid as any other? Can we find an underlying ethic which is common to us all? These are questions that our industry is must tackle and a professional challenge for us all as individuals.