When trying to reach
a moving target, making a good plan is extremely hard, while planning and executing
small steps within
short inspect-adapt loops is extremely easier.
The faster the target is moving, the more
increasing inspect-adapt frequency is beneficial/advantageous/profitable over
perfecting the plan.
After all it is not possible to adapt the reality to a plan, it works better to adapt the plan to the reality. Here 2 stories:
Speed of Iteration Beats Quality and how
Paul MacCready won a million dollars prize
When trying to deal with
unknowns & uncertainty & disagreement, making a good forecast is extremely hard. When dealing with change that is outside our area of control and influence is impossible. Indeed
learning from feedback and
making informed decisions is extremely easier.
The more certainty or agreement is far, the more increasing
feedback sources and inspection is beneficial/advantageous/profitable over
perfecting the forecast.
After all it is not possible to adapt the reality to a forecast, it works better to adapt the forecast to the reality. Here is another true story:
Moving Fast at Scale.
How much, in your day-to-day experience, software requirements are a moving target far from certainty and agreement?
Here follow the 7 fundamental principles of software in software engineering:
- The Uncertainty Principle in Software Engineering (UPSE) [1]:
Uncertainty is inherent and inevitable in software development processes and products
Sometime referred as Ziv's law:
- Humphrey law [2]:
For a new software system, the requirements will not be completely known until after the users have used it.
- Wegner’s lemma [3]:
It is not possible to completely specify an interactive system
- Langdon’s lemma [4]:
Software evolves more rapidly as it approaches chaotic regions
- From the Lehman's laws of software evolution [5]:
E-type programs embedded in the real world become part of it, changing it and evolve in concert.
- From Wicked problems definition [6]:
A problem is not understood until after you have developed a solution.
- The Cone of Uncertainty [7]:
The actual effort or scope can be 4 times or 1/4 of the first estimates.
Two more stories where there principles reveal themselves:
- Dear Customer
The Truth About IT Projects
-
Every project initially is based on unvalidated assumptions that are presented as requirements
[1] H. Ziv and D.J. Richardson, May 1996. See
http://www.ics.uci.edu/~ziv/papers/icse97.ps
[2] Watts S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, 1995.
See
http://en.wikipedia.org/wiki/Watts_Humphrey
[3] Peter Wegner, Why interaction is more powerful than algorithms, Comm. of the ACM, May 1997.
See
http://www.cs.brown.edu/people/pw/papers/ficacm.ps
[4] W. B. Langdon. See also
http://www.cs.ucl.ac.uk/staff/W.Langdon/
[5] Meir M. Lehman and Laszlo Belady, 1974-1996. See
http://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution
[6] Horst Rittel and Melvin Webber, Jeff Conklin, 1967-2008. See
http://en.wikipedia.org/wiki/Wicked_problems and
http://www.cognexus.org/wpf/wickedproblems.pdf
[7] McConnell, 2006. See
http://en.wikipedia.org/wiki/Cone_of_Uncertainty