The Rework Cycle is a simple, realistic model of software engineering. Here we extend that model to show how interactions with customers increase development complexity. Like the original, this version was derived from simulations using system dynamics.
On the left of the diagram, customers increase scope, adding to the backlog of work to be done, and in all likelihood, pushing out the completion date. On the right, they review the completed work and ask for changes. Both actions can cause outsized variations in development performance.
There are three common reasons for changes:
- We built the wrong thing due to a communication failure between the customer and the development team.
- Work was done as specified, but the customer didn’t know what they needed when they asked for it.
- Work was done as specified, but by the time it was completed, it was obsolete. How much work falls into this category depends on the rate of change in the industry and how quickly we deliver. Failing to keep pace with the competition is a special case.
Each of these concerns can be reduced: The first two through better requirements gathering and, especially prototyping and customer testing; the third by increasing velocity.
Feedback cycles in the process amplify the effects of these changes. Not only is there more work, but more code inevitably means more defects that need to be found and fixed, which increases the work in the original rework cycle. Projected delivery dates will fluctuate more and delivery will likely be later.
I’m struck by the structural similarities between this chart and the one below.
This is Deming’s model of production viewed as a system. In both models you have customers using products and providing feedback that leads to redesign and redevelopment. While one comes from manufacturing and the other from software, they’re similar because responding to customer feedback is one of the deep principles of business success. Unfortunately, most project plans don’t fully account for the dynamics in their forecasts.
Simulations like increase the accuracy of our forecasts and provide greater insight into our process. They’re less common in engineering than in fields like epidemiology and environmental science, but with an increasing interest in data mining that’s about to change.
Soon to come: a model that incorporates basic management policies and decisions.