In the past few months, I’ve read most of Weinberg’s Quality Software Management series. There are four books in this series:
1. Systems Thinking
2. First Order Measurement
3. Congruent Action
4. Anticipating Change
I first heard of this series several years ago, and I had a couple reactions. The first was to be intimidated. Wow, four volumes about software quality. I bet they’re full of charts and graphs and statistics, because that’s what it takes to make quality software, right? And I bet they’re deathly dull, too. (Boehm’s Software Engineering Economics is like this.) As it turns out, Weinberg’s series is far from intimidating and is in fact quite accessible. It’s mostly about people and teams and how they interact. Software is almost incidental. There are graphs and diagrams, but they’re all pretty qualitative. That is, they don’t show numbers. They show trends and relationships. For example, as the complexity of a problem increases, the effort required to solve the problem increases exponentially, not linearly. It doesn’t matter what the exact numbers are; it’s the shape of the curve that counts.
My second reaction was about the ambiguity in the title. Are these books about management techniques that lead to high-quality software, or about high-quality management in software projects? Weinberg addresses this issue at the very beginning of volume 1. The answer is: both. In order to produce high quality software, the quality of management must be improved. The way this is done is to consider software projects as systems of people, which leads into the heart of the subject matter of the first volume.
I stalled out reading volume 4. What I read of it is very good, and it’s a logical continuation of the preceding volumes. But it’s too advanced for me and my projects. We’re still stuck working on stuff that’s covered in the first couple volumes. We’re set up in a particular way, and stuff manages to get done after a fashion. But I don’t actually believe that people consciously understand how their actions affect the system. Basically they’re reacting to situations as they come up, and dare I say, their reactions are often not congruent.