Quality Software Management
In this four volume book on software management, Gerald Weinberg defines three fundamental abilities to manage software organizations:
First, the ability to understand complex situations so that the software manager can plan, observe, and act to keep the project going. This ability comes from adopting a Systems Thinking approach (volume 1).
Second, the ability to observe and measure what is happening (volume 2).
Third, the ability to act appropriately in difficult interpersonal situations, or Congruent Action (volume 3).
The fourth volume explains how to use the tools presented in the previous volumes to change the culture of an organization.
Volume 1: Systems Thinking
Weinberg starts by reminding us that quality is about value to some person and is therefore relative. Controlling quality is important to control the value of the software efforts.
Quality is not just about conforming to requirements. Requirements cannot be certain. Making software is a design problem.
The level of quality depends on the culture of the organization.
Weinberg presents 6 patterns of organization (models):
- Pattern 0: Oblivious
- There is no organization. The user writes her own software. They don't even realize they're doing software development.
- Pattern 1: Variable
- The focus is on the individual programmer. Management is not seen as a tool to improve software quality. It is variable because programmers's abilities are variable.
- Pattern 2: Routine
- The organization puts procedures in place in order to decrease the variability of the previous pattern. They're not always followed because not everyone understand the rationale behind them. Silver bullets and other magical tools are looked for. See cargo cult.
- Pattern 3: Steering
- In this pattern managers make decision based on their observation (feedback loop).
- Pattern 4: Anticipating
- The manager tries to avoid reacting to events by anticipating them.
- Pattern 5: Congruent
- Everyone is constantly involved in improving the organization's processes.
Each pattern is governed by its way of thinking and communicating. If a manager decides to transition from one pattern to another, she will have to change the way of thinking inside the organization. Unfortunately, cultures are self-sustaining patterns.
Before deciding whether the organization is in the right pattern, we need to understand the forces acting on the organization.
- Organizational demands
- Software decisions will be made based on the economic models of the organization: how is the software increasing profits or decreasing costs?
- Customer demands
- What level of quality is expected?
- Problem demands
- Some problems are more complex than others and will require more investment in research and development.
This move to more open patterns requires trust, otherwise, the organization cannot handle the increase of information.
The job of the software manager should be to act as a controller (cybernetic model). Patterns 0 and 1 do not have a controller. Patterns 2 has one but is missing the observation phase and therefore is lacking the feedback loop.
Pattern 4 applies feedback control not only to the product but to the process as well.
Pattern 5 applies the feedback control to the organization's culture (context).