The Software Quality V

A software development project is often, if not usually, complicated by many moving parts. Let’s make some sense of all that.

There have been more than a few software development process models proposed over the past 50 years.  From the engineering-/architecture-based, (much-scorned) waterfall model to the present-day “agile” process.  One thing is certain … something else will eventually come down the road … and it will be presented as the final, absolute  best possible solution to the software development process woes beleaguering software projects.  And it won’t be any of those things.  But it will solve some problems (and introduce some new ones).

What can we say is pretty universally true about software development?  Well, we know a few things for sure

  • First, we need to know what we are building before we build it.  Not necessarily the ultimate end – like an architect’s rendition of a proposed building – but we do need to know what we are building next.
  • For what we are about to build … we need to have an idea of how we are going to build it.  And if we have more than 1 person working on it … they had better have the same idea of how the thing is going to be built … or you end up like this:  ___ —-  (railroad tracks that don’t marry)
  • While building it, we need to do the construction with high quality materials (that is, code … the statements that are written need to be written well – both correct and understandable).
  • Finally, when the parts are all put together, everything works together to do what we intended to do in the first place … assuming that hasn’t changed along the way …

Agile and waterfall don’t differ from each other in that requirements precede design, precedes code, precedes integration … they differ more in the fact that waterfall attempts to build the whole building while agile – with the whole building in mind – worries more about building a floor (or a room) at a time.

Where does quality fit into this picture?  At each stage of the process … there are quality tasks/activities that pair up with each of the engineering/development steps.  The usual picture is a V with the two sides of the V representing the activities of development and quality

After the introduction of the computer “terminal” which is already an archaic term – so … after punched cards … software development has always looked like “typing” (now called “keyboarding”). And it looks like anybody can do it. As you know, if you have ever tried to write (well) even a short essay … There is a big difference between writing and typing.  There is an even bigger difference between coding and writing … and typing.

Quality is Free

Originally published in 1979, Philip Crosby’s book “Quality is Free” is a seminal work in quality – especially manufacturing quality.  The premise of the book is that defects – poor quality – often causes re-work which is expensive. 

I’m sure we have all seen it … a road gets torn up (for months) and new infrastructure is embedded under the roadway … and then it is paved over … and construction is finally over.  And then here they come back again … tear up a part of the road that had just been replaced … and put something else in … or fix something.  If it had been planned properly… or the workmanship hadn’t been shoddy … then it would have all been taken care of the first time the road was torn up.  Re-doing it cost somebody (probably us) much more then doing it right in the first place would have cost.

With respect to software, as one of the reviewer of Crosby’s book puts it: “Very good read, but I’m not sure how well it translates outside of manufacturing – the software world is not like a production line: requirements are fuzzy, the designers are also the builders, and defects often arise from emergent complexity.” Fair enough.  However, re-work in software is much more expensive than getting it right in the first place.  That is not to argue for a “waterfall” development process (more about that later) … but just to observe that adding – or correcting – a feature after it is developed is much more expensive than developing it correctly in the first place.  Studies have shown that correcting errors after the software is fielded is 30x more expensive than doing it right in the first place.

So, quality is free – in software – when the entire lifecycle of the software product is considered.  The lifetime cost of software is heavily weighted to the lifetime maintenance of the software (we’ll define exactly what that means in a later post).  Consider that there is still software running today that was written 40 years ago.

The confounding factor – and a subject of yet another, later post – is how to decide how much focus to put on quality when you have no idea whether the software will survive in the marketplace.  How do we balance the cost of quality when building a “minimum viable product?”

What is Quality in Software?

As you might imagine, software quality assurance is the application of quality principles to software.  So starting back at the beginning … what do we mean by “quality?”

Many definitions suffer from being self-referential: “… the act or process of confirming that a firm’s quality requirements are being met.”  And those that aren’t may be too 

specific – or focused – on a particular industry.

Quality, by definition, moves from characteristic … to essential character … to superiority of kind; excellence

1a. An inherent or distinguishing characteristic; a property: the medicinal qualities of a plant.

b. A personal trait, especially a character trait: “The most vital quality a soldier can possess is self-confidence” (George S. Patton).

2. Essential character; nature: “The quality of mercy is not strain’d” (Shakespeare).

3a. Superiority of kind: an intellect of unquestioned quality

b. Degree or grade of excellence: yard goods of low quality.

And it is that final definition that works for software.  But still what does it mean for something to be “superior” or “excellent?” We all have an idea of what quality – especially high quality – is in the sense of a degree of excellence.  We especially sense its lack, when it is missing.  Which it often is in software, but I get ahead of myself …

Automobiles are a great way to discuss quality differences.   There are many examples of pretty crummy (Yugo, I’m looking at you …) to blah to meh to good (Lexus) to great (Lamborghini) vehicles … but we can all tell – often just by looking, but always by driving – where a vehicle fits on that spectrum. Often, but not always, the shoddiest goods are the cheapest – or, at least, less expensive.  Some people – like me – are willing to pay more (within reason) for higher quality products.  Why?  Well, because they are often more serviceable – a better fit for their purpose.  Or they last longer.  Or they perform and/or look better while doing it.  Note that only some of that can be measured … lasting longer, for example.  Whereas “looking better” is usually a matter of taste. 

Note: In my ‘verse it is not important what other people think of me based on what I own or use … I am more interested in the intrinsic quality of the product rather than “keeping up appearances.”  Others’ mileage most certainly varies …

Applying all this to software – my industry and, hence, my particular focus – is pretty straightforward in some of those cases – for example, fitness for use.  How well software does what it is supposed to do – if it is supposed to compute a value, does it do so accurately (so that it is correct) and reliably (so that it can repeat the calculation with the same accuracy over and over again). The more complex the system, the more challenging it is to assess IT quality.  There may be things it does well and things it does poorly so that the question then becomes one of racking and stacking the relative importance of those things it does.  And, yes, different people differ on what is more/less important.

Drawing a Blank; Sketching an Empty

Undisturbed snow

The blank page sometimes resists mightily the pen. Almost, the pristine surface – unmarred, unstained – is like a field of fresh snowfall that wants, above all, to remain untrodden.

What thought is worthy enough to disturb the peace and order of the tabula rasa? Like mindful speech, writing should improve the blank page. Most doesn’t.

There is an impulse to distraction – like a very mild l’appel du vide. It is a call to immerse the consciousness in a sea of banality (the internet). Like most bad impulses, if resisted then this, too, shall fade. With time (and adamant rejection), this impulse will join other such on the ash heap of thwarted, disordered, escapist tendencies.

Distraction wins when there is no better habit at the ready.

The better habit that should be always available is the habit of stillness. And stillness is that pristine surface of an undisturbed soul resisting, placidly, being marred.

Listening Through the Noise

Signal to Noise Still Life

The shouting match that is the current incarnation of the internet leads us to the unavoidable question: why listen better when the signal to noise ratio is so bad? I am using “listen” figuratively here … online we “listen” to others by reading … but the principle holds.

I might want to back up and explain what a signal-to-noise-ratio is …

Well, it compares the level of a desired signal to the level of background noise. Too much noise drowns out the signal. Kinda like trying to listen to an AM radio station (remember those?) during an electrical storm. Or trying to have a conversation in one of those God-forsaken conference centers that infest all of our major cities.

Most often, signal-to-noise ratio (SNR or S/N in the technical literature) is used to describe the quality of radio broadcast – or narrowcast – transmissions. It is also used to describe how clean the sound is in audio equipment. Or the picture in video.

The amount of useful content available online is amazing. Unfortunately, it is often buried under a mountain of relatively useless, repetitious SEO-enhanced drivel. Search engines try to cut through the fog of noise for us, but there are no guarantees that what ends up on the first page of a search is anything like what would be most useful.

Spending time/energy to learn to “listen” better seems a waste when the quality of the content is low – or drowned out by nonsense.

Actually, it is precisely now that better listening is needed.

Arguably, the internet would be markedly improved if people spent more time “listening” and less time “talking.” A groundswell in that direction would automatically reduce the amount of noise in the environment.

Be the signal, not the noise.

More anon …

Listening

I have been doing a lot of thinking about listening lately. Both literal and figurative. It seems to me that we don’t do very much of it. Neither literally nor figuratively.

That is not (only) because there is little worth listening to … the signal-to-noise ratio on the internet continues its decay. Its accelerating decay – which just means that everybody shouts louder to be ignored by more people.

But there are things worth hearing; worth listening to. Even on the internet.

Finding them is proving to be more and more challenging, but that is where aggregators and curators come in … find one whose taste mirrors your own and you will have a better experience online.

The Conversation: Pierre-Auguste Renoir [Public domain]
Conversation

Importantly, from a marketing perspective, according to Seth Godin (among others), listening is a crucial skill. In fact, it is more important to listen well than to shout – no matter how eloquently – into the maelstrom that is the contemporary internet. If you listen well to the people that you hope to serve then you will know what problems they need to have solved. You will also know what they have tried before and what has worked and what has not. You will know better what to offer and what they will be willing to accept. And how they will value your offer.

Interesting, then, is the fact that most of us have never been taught to listen well. We aim to fix that.

More anon …

Let’s Get Started

A new blog is like starting a new book. It is more than just a blank sheet of paper – a tabula rasa – an empty notebook with an unlimited number of pages. A new blog is an opportunity to

This blog is intended to be a forum for the ideas that I find provocative or, rather, evocative … and a forum for thoughts on solutions to problems faced by my readers. The former, I will generate; the latter can only be in response to your thoughts. So … if you have a problem, challenge, or issue that may benefit from a different (if not dispassionate) point of view, then send it via the contact page or post it in the comments below.

Thanks for joining me.

More anon …