- 1.1 Software Crisis
- 1.2 People Impact on Productivity
- 1.3 Agile Contributions to Development Productivity
- 1.4 Magic Bullets
- 1.5 Development Constraints
1.5 Development Constraints
There is a model of software development as seen from the project-control point of view. This model has only four variables:
- Cost
- Schedule
- Quality
- Scope
The shareholders (users, customers, etc.—all external to the development) are allowed to set three of the four variables; the value of the fourth variable will be determined by the other three.
Some managers attempt to constrain all four variables, which is not possible unless the constraints can all be achieved without penalizing the other constraints. When one attempts to set all four, the first visible failure is a decrease in product quality. Cost and schedule will then increase in spite of our most determined efforts to control them. If we choose to control cost and schedule, quality and/or scope become dependent variables.
The values for these attributes cannot be set arbitrarily. For any given project, the range of each value is constrained. If any one of the values is outside the reasonable range, the project is out of control. For example, if the scope (size) is fixed, there is a minimum development time that must be satisfied to maintain that scope. Increasing funding (increasing the development staff) to decrease the minimum development time further will actually increase the development time while increasing the project cost, because of the increased communication and management load.
Software management/estimating tools allow us to make the four variables more visible so that we can compare the result of controlling any or all of the four variables (look at them as constraints) and their effect on the product.
Greg Mikkelsen, a former colleague from Raytheon Corporation, told me, “When it comes to definitions we rarely differentiate between management and leadership. Managers follow a set of principles and processes and report on results, and leaders take those principles and processes and motivate for excellence. Often the difference between successful and unsuccessful projects (un-precedented or not) is the type of management/leaders a project has.” I like to differentiate managers and leaders as sheepherders and shepherds, respectively. I am going to devote much of the following chapters to Mikkelsen’s rational observation.