Tag Archives: qa

Joel Spolsky’s recent talk at Yale has some interesting bits on software quality.

He claims that über-geeks tend to focus on defining quality strictly as conforming to requirements (à la Crosby), and thus try to write automated specs for the whole program. Now, trying to write complete specs becomes the “software engineering equivalent of a perpetual motion machine”, since if your specs are complete, they describe the whole program accurately, and could be thus used to generate the actual program somehow - after all, your specs will end up being as detailed as the program itself. (btw, I love any blog entry with the terms “perpetual motion machine” and “crackpot” in it)

Naturally, the concept of “complete specs” is unrealistic and is there just for the argument’s sake (let’s just strive for “enough specs” instead.) Also, any sane definition of software quality goes beyond “literally adhering to specs.” Different stakeholders have different perspectives on quality. General product quality concepts that originate from the manufacturing industry tend to view specifications as the producer’s “path to victory.” Adhering to them should be enough to produce a high-quality product - from the manufacturer’s point of view. The value perceived by customer can be different, and consists of different attributes such as price, performance and reliability. The ultimate validation of quality is always customer satisfaction.

Although all generic product quality concepts don’t necessarily translate to software quality, there are recurrent themes on both sides: customer is king!

So, things got a bit busy a while back, and my blogging activity took on a steep decline. The thesis is progressing just fine, I’ve been delving deep into a bunch of interesting history behind the theory and practice of the concept of continuous quality. Craig Larman’s talk on Lean Thinking and the Toyota Production System at the recent Agile Finland conference got me interested in how some of the quality control measures Toyota engineers implemented some 50 years ago have influenced the QA activities we see in (agile) software projects today. Fascinating stuff.

Two books worth recommending: The Toyota Way outlines and explains the principles and practices behind the Toyota Production System, and lessons Toyota learned from prior work by the renown US quality consultant W. Edwards Deming. The Poppendiecks’ book on Lean Software Development ties the Lean principles all together with software development.

Having done the necessary paperwork earlier this week, my thesis is now officially underway. I’m currently sketching the table of contents to get a feel of how to organize things. Apart from a brief 2-page introduction, I haven’t done any actual writing yet, but I’m hoping to put in a couple of pages on general software QA theory and practice during this week — yeah, the easy stuff first. Also, I have a preliminary schedule in the works. The deadline I thought of at first seems a little unrealistic at the moment, but I’m trying to keep things agile and re-evaluate my progress as often as possible.