Too Much Quality

by Jacob 8. July 2008 21:22

deluxe doghouse The latest .Net Rocks podcast was from a panel at TechEd 2008 (that I sadly missed while there). Richard Campbell was the moderator and the topic was Software Quality. It was a good, if somewhat one-sided discussion and I recommend giving it a listen if you are so inclined.

I particularly liked Billy Hollis' perspective on quality because it was a perspective that was grounded in both reality and sound business principles. He kept bringing up quality in terms of trade-offs and the others kept trying to waltz around those comments with a more absolutist, almost dogmatic, vision of software quality. I think it was a real shame that Billy Hollis was so out numbered because his points are important if we are to gain the stature we desire as a profession.

The final comments completely got on my nerves. Which is fortunate because it helped crystallize my discomfort with the others.

Billy Hollis started off with this simple statement.

My key insight that I try to communicate is it’s all a matter of trade-offs. And getting to what the user needs is first and quality is defined within that context.

To which Neil Roodyn responded.

I’ll disagree. It’s about quality. You’ve got to get your quality as high as you possibly can. Always. The higher the quality of the software, the higher the quality the software will remain through the development life cycle. So right from iteration zero keep that quality as high as you possibly can.

And Jeffrey Palermo added.

The higher the quality the better. You can’t have too high of quality, you would just say you have too much behavior for the situation.

The thing is that Hollis is right and the other two are not only wrong, but dangerously wrong. Other members of the panel (David Platt and Neelesh Kamkolkar) didn’t support Hollis either, though they weren’t as overt as Roodyn and Palermo.

What Are You Trading?

The thing is that software quality, besides being pretty much impossible to measure, isn’t a first-order good in the first place—i.e. it isn’t valuable in and of itself and delivers what value it adds indirectly. You can make the reality of this simple business fact plain by pointing out how the deciding factor between two competing products is often not quality. Betamax anyone? Rolls-Royce? Sun Microsystems?

People choose software for a lot of different reasons and those reasons are very rarely explicitly the “quality” of the software. Price, availability, familiarity, and usability all play roles in the purchase (or use/approval if internal) of software and these factors need to be kept in mind. It could be that it is better for your company to have software that is harder to maintain but completed two months earlier. I do this all the time because I have lots of projects that are single-use and with a restricted domain.

Software development involves time, money, commitment, and concentration. Spending those valuable resources should be done carefully and be based on actual value to the company. Quality has a cost. Quality doesn’t always have a pay-off. Business people have a term for a cost that doesn’t return a pay-off. That term is usually “good bye”.

Dangerous?

So Palermo and Roodyn are wrong, but why are they dangerous? This comes back to my observations during the dot com bust. I observed the glee in putting IT back in its place. You see, during that whole tech bubble IT got arrogant. Technical folks were wagging the business dog, dictating strategy, policies, spending, and sometimes even remapping the boardroom to their liking. Which would have been fine if the business rules really had changed as some thought. Unfortunately, they hadn’t. This arrogance set the entire profession back because business leaders learned not only of our arrogance, but of our ignorance as well.

We don’t bother learning even basic business principles before we make important, even critical, business decisions. This discussion of quality is an example of just such thinking. Roodyn and Palermo are talking about dictating business resources without any concern for accommodating business realities. Worse, they don’t seem interested in even learning about or exploring the business realities they, of necessity, work under.

As much as we might like the universe to bend to our personal theories and values, the fact of the matter remains that there are a lot of reasons to compromise aesthetical purity when the rubber meets the road. Those reasons don’t simply go away just because they make us uncomfortable. Indeed, how we react to the inevitable trade-offs required will largely determine how much business leaders decide to trust us in the future.

Here’s a helpful exercise. Imagine you are a business leader evaluating which company to hire to solve some software need. As part of your vetting process, you ask two finalists their stance on software quality. The first one answers with “Getting you the things you need is our first priority and quality will be defined in that context.” The second one answers with “Quality is number one. Always. Quality cannot be too high though it could be that you want too much behavior for the situation.” Which would you hire? If you answered the second, it is because of ideological blindness. Actual business leaders will not only tend to go with the first, but will have confidence and trust in doing so.

Are You Agile?

A lot of the value in IT comes from giving businesses flexibility. Processes that used to take indoctrinating a new generation of workers can now turn on a software release. While this is both a blessing and a curse for businesses, it remains a key to our value in IT. Businesses have learned to be wary of our use of resources, however, and with some cause. It is unfortunate that they cannot trust IT, but until we let the needs of the business drive our development I’d say that their trust hasn’t yet been earned. If we really want to be masters of our own fate, we must learn to live in the messy world of business. We can only do so by proving that we will use the flexibility inherent in our profession wisely.

Tags: , , , ,

Programming

Comments


July 10. 2008 23:25
David
Hi Jacob,
On a related note, you might find this thread from the ALT.NET list interesting:

tech.groups.yahoo.com/.../11425

Regards,
David


July 11. 2008 00:12
Paul W. Homer
I definitely think it is a matter of trade-offs. It is one of those things you learn very quickly first hand, if you ever get the chance.

A misguided quest to achieve perfect quality burns poorly through limited resources. It is going to go out with bugs no matter what you do, it is only a matter of how many and where they are located. You have to choose, so choose wisely, don't get stuck in a dogmatic trench focusing on trivialities.

Get the core things correct, then setup a processes for handling the other problems quickly. That's the best you can do if you're based on our modern shaky foundations.

Paul.
http://theprogrammersparadox.blogspot.com


 Jeff Santini 
July 11. 2008 09:59
Jeff Santini
Quality is another one of those words that can mean different things to different people, much like the word agile is used since marketing got ahold of it.  You might as well say "bebobopi" is the most important aspect of software development.  What in the heck does quality mean in the absence of a context.  And luckily, you mention the only context that matters -- serving the business.

I would add another aspect to the software/quality relationship and that is quality of the delivery process.  Sometimes, throw away code is what you need, and sometimes you can assume you are laying the foundation of a 10 year code base.  At the worst of times you can know you are maintaining an app in the middle or at the end of its 10 year lifetime.  

Each of these situations force different trade-offs in your code which might be discussed in terms of quality.  But regardless of the "quality" of your code, there are still quicker, slower, more/less risky, more/less predictable ways to deliver that code.  In this context the rubber is closer to the road.  the quality of a body of code could be discussed in terms of cohesion, testability, or completeness, none of which deliver direct value to the customer, but delivery processes can really only be judged on how well(quickly and predictably) they deliver working software to the client.  So this is an area where I would agree with the dogmatic guys.  But of course, your ability to maintain a high quality delivery process is by maintaining flexibility.  Since most delivery environments differ the approach to delivery may differ as well.  Keep your mind open to learning new software delivery techniques and you will increase the quality of your delivery capabilities.

P.S. I interviewed once with Billy Hollis back in my youth in Nashville.  I found him very impressive as a teacher and interviewer.


 Mike 
July 11. 2008 15:06
Mike
I don't know if you intended this, but I just thought the image you included in your post is pretty appropriate.  I can hear Hollis saying, "Yes, that's a very high quality dog house, but last I checked, dogs don't really care about 'Spanish Cedar shutters'"


July 11. 2008 19:13
Jacob
Good comments and some good points.

Jeff: Deployment has always been a hidden gotcha for software. Continuous Deployment officianados have some interesting points that I haven't really parsed much and they deal with some of what you mention.

@Mike: of course I meant the image to correspond!


 Bill Bennett 
July 13. 2008 18:20
Bill Bennett
I agree that unlimited quality is neither attainable nor a good use of resources.

However, 100% of software produced today has unacceptable quality. Yes, 100%. The quality today is similar to the quality of aircraft in 1910.

When software works as we expect, then we can ease off a bit. But that day is  far far away.

As an example, this comment board works pretty crappy.


July 14. 2008 04:37
LKM
They seem to be talking about different things. Hollis talks about the quality of the shipped software, the others seem to talk about code quality. I agree that you can't wait for the software to be flawless, but I also agree that you must never trade maintainable code for an earlier shipping date.


 Frank 
July 21. 2008 16:25
Frank
Finally got around to listening to the podcast...I think they needed to start off the discussion with defining what the term 'quality' was going to mean within this discussion.  It means a lot of different things to different people and is a whole set of attributes which vary from project to project.  


August 13. 2008 07:57
Matthew Martin
I think you've hit upon the case where people inject their personality (obsessive compulsive personality) into software development.  I suppose similar observations could be made for other personality types, avoidants, sociopaths, etc


August 20. 2008 06:09
Witold Rugowski
You have touched important issue with Your observation. Ultimate quality Smile has strong press among developers right now, but why I constantly find very poorly written applications (I'm freelancer and often take projects over smbd else) ?

So maybe we should think about this as a call for most developers to improve quality, not to reach perfection each time? Since right now quality seems to be very easily traded for low price ;)




August 20. 2008 18:37
Jacob
@Witold: You have a point, and a good one. I'd certainly like to see software development quality improve. It's the extreme as given by Jeffrey Polermo and Neil Roodyn that I can't support. I certainly take pains to increase the quality of my own work (in all stages of development) and hope others do the same.


June 12. 2009 10:23
learning software
you can never have too much quality - however you can find ways to get better and faster, if you can achieve that, you may not worry about having too much quality


July 19. 2009 07:14
club penguin cheats
Hollis talks about the quality of the shipped software, the others seem to talk about code quality. I agree that you can't wait for the software to be flawless, but I also agree that you must never trade maintainable code for an earlier shipping date.

Information

    Calendar

    <<  February 2012  >>
    MoTuWeThFrSaSu
    303112345
    6789101112
    13141516171819
    20212223242526
    2728291234
    567891011

    View posts in large calendar
    Disclaimer
    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2012 Scruffy-looking Cat Herder