Scrum: The Right Process Produces the Right Results
In the last chapter, we found that an empirical process is the correct process for software development. Now, let's see how empiricism works and how we can develop software using it. We'll explore empiricism through the lens of the agile software development process we have developed over the years, which is called Scrum.
Empiricism in Action
In an empirical process, information is gained by observation, rather than prediction. We also know empirical processes are best for complex problems, where there is more that we do not know than we do know. The two requirements in those situations, for an empirical process to work, are the following:
1. Inspection and adaptation: We must frequently inspect where we are so that we can adapt our next steps to optimize the results. The frequency of the inspection and adaptation depends on how much risk we want to take. The greater the unknown, the more quickly we can go off target. The more we go off target, the greater the waste to reorient us, undo the useless work, and start again.
2. Transparency: When we make an inspection, we must be able to assess what we are seeing in the same terms as our goal. If our goal is to develop a system with some features and functionality, then we have to inspect something that is a feature, function, or a discrete subset of either.
If we were using a predictive process, we would lay out the requirements for software that might take years to ...