For the past several weekends, I have been entrenched in the truly terrible task of stripping wallpaper and getting the walls ready for painting. I'm probably about as far from being a violent person as you can be without actually being a pacifist, but were Jean-Michel Papillon still alive today, I'd probably beat him to death for inventing wallpaper.

The painting itself doesn't bother me. I spent an entire summer of my college years painting the walls in a high school. No, it wasn't a penitential mandate from the state, and yes it really was a three-quarters time second job that I got paid for.

Back to the point, as we were just finishing up the first coat of primer, my wife asked me if we should bother doing a second coat of primer on the walls. My immediate answer was yes. We weren't going to skimp on the primer.

This doesn't date back from my brief brush (no pun intended) with a career as a painter. My answer came from the knowledge that to do a good job required at leat two coats of primer, and anything less and it would just be shoddy work.

This past weekend, I went to get a haircut and on the way back I passed a car dealership. Now, I look at cars whenever I pass a used car dealership. I'm not sure why. I have no intentions of pulling in, but I still like to look as I drive by. It occurred to me while I was looking how happy I was that I traded in my old car about a year and a half ago. I had been driving a 1997 Saab 900S, which after eight years was really on its last limb. I had only owned it for five of those eight years. Now don't get me wrong. I loved the car when it was running well.

The key of course, is when it was running well. It didn't always run well. In fact, it seemed like every time I turned around I had to sink a lot more money into it. From the year after I bought it to the time I got rid of it, I spent on average about $2,000 per year in addition to car payments fixing it. The serpentine belt, the alternator, rotors, etc. If it was expensive, it broke on my car at one point or another.

Eventually in December of 2004, I traded it in for a 2002 Honda Accord. One of the key factors in my decision of what to purchase next was how expensive the new car was going to be to fix, and how often I would have to fix it. This entire train of thought came about because of the used car dealership that I saw, and the train ended with "I'm glad I bought a Honda. I haven't had anything go wrong with it since I bought it."

This happened as I was drawing near the end of Moon River Milestones v1.1.0 development, and it got me thinking about quality in software products.

Hypothesis: Would people pay a premium for quality?My immediate reaction to this question was yes. I mean, who pays more for software with a lot of bugs in it? For that matter, who in their right mind pays more for anything with more defects in it? Well, read the latest Consumer Reports for car ratings. The BMW 7 Series of used cars from 1998-2005 is ranked as one of the Bad Bets. So is the Lincoln Navigator, Mercedes-Benz CLK, and a couple of Jaguars, all of which are pretty high on the price list.

I will concede that quality and price are not the only considerations people make when purchasing a new car. But there should at least be some correlation between price and quality right? Who in their right mind doesn't value quality!

Well, let me beat up on the car industry a bit more. Recently, GM announced a restructuring plan to hopefully save them billions of dollars. Looking at their Wikipedia entry shows the plants that they will be closing. Let's put this next to the J.D. Power and Associates listing of the Assembly Plant Awards for highest quality. Notice anything?

It would appear that the Oshawa #2 Ontario Canada plant is going to be closed, and the Oshawa #1, Ontario plant is going to be scaled back to eliminate the 3rd shift entirely. Interestingly enough, both of these plants are on the J.D. Power and Associates lists for outstanding quality listed as the number one and number two plants.

Perhaps its just my overly cynical view of public companies and thier quest for increasing their stock prices at any expense, but wouldn't you want to increase production at these facilities to compensate for the ones that are producing garbage?

Apparently not. Somehow, their marketing and sales forces are going to overcome the fact that they're selling crap to the consumer by hiding behind a limited warranty.

"Hey, if you want me to take a dump in a box and mark it guaranteed, I will. I got spare time."

From the movie Tommy Boy

On the other hand, you have companies like Hyundai offering outstanding warranties on their cars that would have seemed insane 20 years ago. They can do this for only one of two reasons. Either their cars are genuinely good and can last until the end of the warranty, or they are made so cheaply that they can fix all of them, and still make a profit. Take a wild stab in the dark at which of those two companies are growing, and which is shrinking? I'm willing to bet that part of it is due to quality. In fact, Hyundai has bet their reputation as a car company on their quality and you know what? They're beating GM at it. True or not is a different story, but they've proclaimed their quality to the world, and the world is listening.

But these examples are cars, not software. The fact of the matter is, that my entire argument relating cars to software is fundamentally flawed. It's unfortunate that I realize this now, after writing over 1,000 words on the topic. I'm probably lucky in the respect that writing helps me think things through. That's why I write a lot of things down. In the end, it boils down to much less than I originally wrote. Most of what I write down I end up throwing away because it sucks. But the journey does tend to yield a lot of good results.

The fundamental flaw in my argument is that software and cars are like apples and oranges. You can't effectively compare them on a general basis. All cars have a common purpose. They get you from point A to point B. There's a lot of other features as well, but they all basically do the same sort of thing. That's why the differences are features. That's not the case with software because software functionality varies widely between applications. It accomplishes something. But beyond that, there's very little you can generalize about. It solves a problem maybe? I don't know how well games fit into that category unless you count boredom as a genuine problem. And if that's the case, then you're either a games developer or in college and should be studying instead of playing Quake.

There's plenty of software out there that I think is absolute crap, but still sells like hotcakes. And I don't mean crap in the sense of the functionality of the software because some of it could be really useful. I mean crap terms of the quality, such as software that is useful, but crashes every third click on the gui, and those sorts of things. It's positively insane how poor some types of software work, yet it still ends up on lots of computers. Don't believe me? There's software that is distributed by Dell which uses some sort of watchdog to detect when the hardware is locked up. When it detects a lockup, it reboots the system.

At the core, it sounds pretty simple. Quite useful in fact, especially for web servers. It stops working, so the hardware reboots the machine to get your website back up and running without any user intervention. In practice, it's not nearly on par with where it should be. I've been told by people who have this software that they disable it on most of their servers because of its flaws. Isn't that Petarded? It's sole function is to detect a hardware lockup and reboot. How complicated can it be? What flaws could it possibly have that are that bad?

It turns out that the flaw is that the hardware watchdog blue screens the machine quite regularly. Ummm.... yea. Just be thankful that this software doesn't run the power steering in your car yet. They might want to focus on quality, don't you think?

Quality sells, but not in the way that you think.If you asked me whether or not I would buy another Saab, I would likely tell you no. I liked my car, but it was the flaws that I remember more than how enjoyable the car was. My Honda has been running without anything more than regular oil changes and minimal maintenance for a year and a half now. Currently, it is 4 years old and running strong. Would I buy another Honda? Most likely. Would I recommend one to my friends? Of course.

Go back and reread that, because there are two very important things in there. The first is, would I buy another. The second, is would I recommend one to my friends. More importantly are my answers to the questions. I think these are key principles that really do apply to software.

If someone is willing to buy more of your product because they like it, then I believe that they are just as likely to recommend it to people they know. Perhaps not actively as an evangelist, but if a friend said they had problem xyz and your product solves that problem, this particular someone would recommend it to his friend because it works to his satisfaction. Even better is when your product is so far above and beyond that of every competitor that these customers become evangelists and do your marketing for you.

When a company spouts off lots of rhetoric about how great their software is, how it will solve all your problems, make you breakfast in bed, etc, we take that with a grain of salt. Marketers lie. All of them. Seth Godin says so, not to mention there's a website that says this too, so it must be true.

But when you hear how great something is from your colleagues, classmates, friends, drinking buddies or whomever, you take it a little more seriously. It becomes more credible somehow because you trust those people. Maybe not with your life, but in a pinch, who would you trust to save your hide, your best drinking buddy, or the guy hocking the software that in addition to its original purpose, makes breakfast in bed? It's not a hard decision.

Having current customers buy more of your software is a great concept because you already have a business relationship with them. You are a known entity. Customer evangelists are the single greatest accomplishment a company can achieve because your product is good, and your customers love you for it. Apple has lots of these. It's a long, hard road though. So, how do you get there?

Focus on Quality.If you make a conscious effort to focus on the quality of your software, you will probably see less of an immediate impact on your sales than if you implemented new features. I would venture so far as to say that I am sure of that. Quality doesn't happen overnight. It takes a lot of time, effort, and a commitment to quality. In time, assuming you had a decent product that was desired in the market to begin with, those efforts will likely pay off tenfold.

For a smaller company, focusing on quality can be really hard to do, especially for new products. A version 1.x product typically doesn't have nearly as many features as the well established competitors do. It doesn't have the established customer base and steady revenue which would provide the company a position where they can focus on quality. In fact, the smaller the number of developers in the company, the harder it is to focus on quality because of time constraints. Their time must be divided among bug fixes, new features, customer technical problems, one or more products, and a host of other commitments.

It gets worse as time goes on and your business grows. More customers means more support calls, and more technical problems. Unless you focused on quality from day one, as the number of customers rise, so will the support calls. The only way to fight this is to make your code virtually indestructable, and that means focusing on quality.

Focusing on quality will reduce bug counts at the cost of longer development cycles and fewer new features. By talking to your current customers, you can find their pain points in your own software. Perhaps some of the menus are too confusing. When you learn this, fix it! This will allow you to fix the software, reducing the number of support calls from current customers while increasing the number of sales. The net result is the company receives more money for the same number (or fewer) support calls. This frees up your time for other things, such as implementing new features, intensifying the quality of your product, or working on other products.

Conclusion:While it's hard to say with absolute certainty whether people would actually pay a premium for software that is guaranteed to be of a higher quality, the fact remains that most people (who don't run public companies) value quality. Quality isn't just a word. It's a commitment. And if you think otherwise as you attempt to address it within your own organization, you're going to fail.

You can't pay lip service to quality because it shows. People notice. No amount of lying from your marketers is going to tell someone that your software will rock their world when it crashes twice a day. Polishing an application to look great is related to quality, but not quite the same thing. Buggy software that looks great is still garbage. The code has to work flawlessly every time, and when it doesn't, you need to know about it. This is where customer feedback forms come in.

When you focus on quality from day one, you set a prescedent for the future, that poor quality is not to be tolerated. Nothing less than perfection is acceptable. This doesn't mean you can't make mistakes. It simply means that you don't let bugs go unchallenged. Anything more complicated than a Hello World! program is likely to have bugs. Heck, I've misspelled the word Hello in a Hello World! program before because I was typing too fast. Finding bugs or customer problems and allowing them to persist for too long is when you start running into problems.

In my next article, I'll be examining many different ways that you can improve the quality of your products.