In addition to the first three commonly recurring pitfalls encountered when first faced with the reality of these "unchangeable rules", I identified three additional pitfalls that typically occur when first attempting iterative development. It also has a few more iterative development resources than my previous follow-up blog-entry. Lastly, I expanded the rule-set by one, adding the "quicksilver" rule to the "quicksand" rule as noted below:
The Unchangeable Rules of Software Change
- Rule #0: Change is Inevitable!
- The Requirements/Plans ARE going to change!
- Rule #1: Resistance is Futile!
- There isn't a darn thing you can do to prevent Rule #0.
- Rule #2: Change is like Quicksand -- Fighting it only makes it worse!
- The more you try to deny and defy rule #1 by attempting to prevent rule #0, the worse things will get.
- Rule #3: Change is like Quicksilver -- Tightening your grip makes it slip from your grasp!
- The more you try to deny and defy rule #2 by attempting to precisely predict, or rigidly control change, the more erratic and onerous the result will be.
- Rule #4: Embrace change to control change
- The more flexible and adaptive you are at accommodating change, the more control you will have over your outcomes