Software quality is a business decision

quality-blocks1

A recent twitter conversation I had with Ron Jeffries regarding quality in software development spurred me to write this post. Thanks for the inspiration, Ron.

I believe that quality in software development is predominantly a business decision. For clarification purposes;
(1) I use the word ‘business’ here largely to mean an organisation’s management team, and
(2) I use the word ‘decision’ because in my mind software quality requires “the act of or need for making up one’s mind”.

Firstly, how is quality in software development defined? The answer to this question is not as simple as one might think. Of the various definitions out there, the following words of Mr Jerry Weinberg in this post resonate with me and the way I perceive the meaning of software quality:-
“A definition of quality is always political and emotional, because it always involves a series of decisions about whose opinions count, and how much they count relative to one another.”
And further:-
“Crosby’s definition: “Quality is meeting requirements.” Unless your requirements come directly from heaven (as some developers seem to think), a more precise statement would be:- “Quality is meeting some person’s requirements.” For each different person, the same product will generally have different “quality””.

If software quality is not rudimentary to define, how can we actually achieve it? To me, this is a fascinating question and I’m quite certain people have differing opinions on it. However, below is a brief discussion on what I think we may need in order to produce software that meets our overall users’ requirements, ie. software of high quality.

A skilled workforce. People want to master things from sports to music to the latest cool new version of their favourite programming language. Developers want to write good clean code. We need to enable them to do so. At the very least we should probably try and get out of their way while they attempt to master something themselves.

Motivated people. Hopefully we all agree that the days of believing knowledge workers are motivated by material things and/or monetary rewards are long gone, so specifically; we need people that are intrinsically motivated by a strong sense of purpose. What were the forces at play that brought people together to write software like Firefox, Linux and the Apache Web Server in their spare time? We should make deliberate attempts to harness the power of these forces and purpose is key.

Self organisation. Boundaries in self organisation are important but people should generally be afforded the opportunity to organise themselves around a piece of work. If we already have highly skilled and motivated people, we shouldn’t dictate how they need to go about doing their work either. Nurturing an environment that promotes autonomy and a sense of agency is a great way to keep people engaged, too.

Theory Y management. People are not inherently lazy and they don’t need to be put under undue pressure to perform their jobs. Measuring people against targets, periodically reviewing their performance, dangling incentive scheme carrots in front of them and putting them in their little job profile boxes are management tools that are way past their bedtime. None of this malarkey helps to improve the effectiveness of our organisations. We should also acknowledge that our organisations are networks of interconnected human beings and that they are complex systems. Let’s think in terms of synergy and drop those stubborn command and control mindsets.

How regularly are product development teams overly constrained in their technology or design and architectural choices? How regularly do poorly structured organisations (ie. silo’d or divisionalized) impact on quality due to eg. frequent handovers being required? How regularly are product development teams forced to use predefined methods, methodologies or processes? How regularly are knowledge workers subjected to theory X mindsets and management tools that are highly effective at rendering people ineffective? How many organisations release software on quality as opposed to on schedule?

In order to produce software of high quality the business must create an environment that supports and enables it. It’s a mindset. It’s a culture.

Writing good clean code is extremely important, but it’s not half the story.

Quality is a business decision.

Thanks for reading,
Mark

Further reading:-
The Cynefin framework (see section on software quality).

About these ads

About Mark Nilsen

My name is Mark Nilsen. Thanks for stopping by! My love for computers began with a Commodore 64, before I was 10 years of age. While studying towards a Commerce degree majoring in Industrial Psychology and Information Systems, I found myself far more interested in playing international sport, and in computer systems and computer programming. Currently, my professional life involves building software, optimizing processes and attempting to create and maintain highly effective, motivated teams. More recently, systems thinking and organisational cultures and mindsets have fascinated me (and frustrated me, but mostly fascinated me!). I believe effectiveness trumps efficiency, every time.
This entry was posted in Software Quality and tagged , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s