Friday, March 24th, 2017
In the past, software development was based on predictive methodologies (waterfall). With that approach, every project started by creating a plan, and developers were then expected and managed to follow the plan exactly, regardless of the realities they encountered.
At present, the best approach is based on empirical (agile) methodologies. With this approach, plans are created just in time. A goal is established and then, the team moves toward that goal, iteration by iteration.
With empirical models, the plan is modified as needed based on experience, tailored and optimized to to the realities that are encountered. The project is complete when the return on investment is optimized. That may be earlier than we expected: a project may be ended after two iterations if, for instance, we discover that the goal is unattainable at a reasonable cost. In that case, that is a success – a successful avoidance of more wasted money.
Empiricism does not create certainty; it makes one aware of the possibilities.
Every iteration, we estimate how many requirements we believe we can turn into an increment. This is an estimate, a forecast; it is not a guarantee or certainty. During the iteration, a team member might become ill, some of the technology might not work,… ; this is complexity in action. At the end of the iteration, we empirically inspect how much functionality was developed. It might be more or less than forecasted. However, we know what was developed and can make decisions about what to do next based on the results.
Summing-up: Empiricism is the art of the possible, doing the best we can with what we have.
These Notes have been taken from:
- The book Software in 30 days, by Jeff Sutherland and Ken Schwaber.