Believe Defect Free Code is Possible
Did you ever read one of those articles where the writer had instant credibility? I recently stumbled upon one when I was looking to get my web site indexed on dmoz.org. The article is titled “Nine Steps to Delivering Defect-Free Software” by Terence M. Colligan. When I read the article I knew he isn’t just writing about somebody else’s experience because it mirrored my own experiences when I was writing software myself. In the article he identifies nine traits contributing to defect free code.
-
“Believe Defect-Free Software is Possible.” It seems as though some people in the business have given up in delivering high quality. They take it as a given that high quality is not possible. I can’t tell you how often I’ve seen products shipped on a date. I’ve read one blogger on this topic advocate that quality is a trade-off relaxed to achieve other priorities. I don’t agree.
-
“Think Defect-Free Software is Important.” If you want to deliver more features to market quicker, start delivering higher quality. Low quality is a drag on productivity.
-
“Commit to Delivering Defect-Free Software.” To commit to delivering defect-free software you need quality release criteria. I plan to explore this deeper in a future article.
-
“Design Your Code for Simplicity and Reliability.” Yes, big up front design pays big dividends. If your desire is a high quality product, you cannot skip this practice.
-
“Trace Every Line of Code When Written.” It sounds tedious and laborious, and it is, but that’s life. Do this if you desire high quality.
-
“Review Code by Programmer Peers.” This will find a great deal of design and implementation flaws. When done well, peer reviews are extremely effective, but it is often difficult for peers to invest enough time in the review to reap the dividends.
-
“Build Automated QA into Your Code.” This will add up front overhead to your project, but it will ultimately save time.
-
“Build and Test Daily.” I hit upon this some in my article “No Pain, No Gain.” This is a great practice.
-
“Use Automated Checking Wherever Possible.” It’s also a good idea to set some standards for what compiler or lint warnings must be fixed before releasing software to the build.
I’ve experienced all of these practices to varying degrees, and they are all indispensable in attaining the goal of delivering defect free software. Most importantly, you have to believe defect-free code is possible and you have to want to achieve it to be successful. Those are the two most important characteristics for defect-free success. Give the article a read and start believing and wanting. Defect-free software is possible if only more software managers would believe in the ideal and want to achieve it. Low quality software is always a management problem.





(No Ratings Yet)
Long, long ago I had to motivate a newly formed team to produce quality software. In those days when an application crashed so did the entire PC, and developers just accepted rebooting their PC as a necessary part of each user’s work day. We were building a financial terminal for Wall Street and loss of the service, even for a few minutes because our application crashed, could mean significant financial loss for the client if the market moved during the outage. The client would then curse at our field technicians and throw out our product in favor of a competitor. A young developer sitting at their desk far from Wall Street could never fully appreciate that. Back then none of us owned a single share of stock. Instead I told them to think of their application as they do their refrigerator. How would they feel if when they got home from work their refrigerator had shut down, their frozen food thawed, and all they had to do to fix it was to push a little button to restart it. They understood that simple analogy and to this day some 20 years later some team members still remember trying to make their code as solid as as their refrigerator. Quality starts and ends with management support.
We take for granted the high quality in so many of the products we rely upon in our daily lives, but if they had the quality of many of the software products we use every day, we’d never tolerate it. I’ve always wondered why software seemingly gets a free pass.
In the early days of the internet, like most everyone else, I wanted to see Netscape succeed, and I used their software exclusively for web browsing, but it would always crash. One day I became so terribly frustrated that I started to use Internet Explorer. It never crashed. From then on, I never went back. Low quality has a price when there are alternatives. High quality software is easily a market differentiator and one easy way for companies to secure a competitive edge, but for some reason, most leaders of companies miss it.
Thanks for commenting Lenny. Lenny was the director of the product that inspired the article “No Pain, No Gain.” With Lenny managing, there was no doubt that quality was important and he was willing to take the pain for the gain. If you’re looking to build great, high quality products, Lenny’s one of the top guys for the job.
Although I don’t believe in totally “bug” free software, I believe high quality software can be reached practically. I have seen so many quality software produced by good developer with quality in mind. They simply put effort into explore the potential problems that can dream of and put in place logics to handle it. It is also a basic norm that the unexpected should be handled graciously. This lead to the robustness of products, i.e. quality.
However, today’s attitude has changed totally. Don’t do anything that has not been asked. If the product has a warranty period of 10 days, don’t make it work for more than 10 days. It is because the company want customers to buy another one after the warranty period.
Therefore, if you have asked a feature or capability to handle an exception, don’t expect the product can.
Leave a comment!
EMAIL
Subscribe
Visitors
Polls
Categories
Blogroll
Tag Cloud
Agile Analysis BDUF Certifications CMMI Critique Debate Defect Free Design Estimating Ethics excellence Future good enough Hiring Leadership LOC Management Methodology Metrics Outsourcing Popular Process Product Management Project Project Management Project Tracking Quality Recruiting Refactoring Requirements Schedule Scrum Skills Stable Test Strategy Tracking Traditional Upfront Video Waterfall wrap-up XP