Scrum is not the be-all and end-all process for software and product development. As many of you have noticed, it is barely a process, only a framework. You have to provide all the development, management, product management, and people practices.
So, what does Scrum provide? It provides a labeled- environment within which complex development can be successfully managed (where the unknown is greater than the known). Scrum provides containers that allow teams to focus on one aspect of a complex problem at a time. The containers are short-time boxes so that risk can be managed.
Scrum can be replaced or superseded by anything that also supports its underlying principles:
1. Self-organization – people doing complex work are much more effective organizing themselves and the work than someone who isn’t doing the work.
2. Bottom-up intelligence – figuring out how to do work is a management activity best performed by the people doing the work, since the work is unpredictable, with many twists and turns.
3. Empiricism – it is hard to plan what you don’t know, so we instead see what has been accomplished, and then figure out what to do next. We do this frequently to control risk and determine the best path to our goal.
4. Transparency – we periodically have to know what is actually happening to make effective empirical decisions.
As stated in bible of process control (“Process Dynamics, Modeling, and Control”, Ogunnaike and Ray, Oxford University Press, 1994) , there is no bad process. However, sometimes processes are applied to inappropriate situations. Scrum is an empirical process built on lean principles. It is most appropriate for optimizing complex work.
I welcome anyone who comes up with the next great process, one that does all of the above even better than Scrum. I’m still waiting.