In modern software development many Agile methodologies are used by IT companies to improve their development process.
Complex projects are driven by uncertainty by default, and as complexity increases, classical central control and dispatching systems break down.
Some might try to make the control system work by applying more rigor, and indeed that works for a while. But the people who prevail are those who figure out how to change to a system of independent agents operating under an appropriate set of rules.
The more complex the system, the more likely it is that central control systems (e.g. classical Waterfall approach) will break down. This is the reason companies decentralize and governments deregulate—relinquishing control to independent agents is a time- honored approach to dealing with complexity.
Again, complexity plays a role here. When a system is simple, it’s not so hard to know in advance what to do. But when we are dealing with a market economy that changes all the time and with technology that won’t stand still, learning through short cycles of discovery is the tried-and-true problem-solving approach.
Scrum is used by CRUEL to manage complexity and handle uncertainty.
Scrum is a management framework for incremental product development using one or more cross-functional, self-organizing teams of about seven people each.
Scrum uses fixed-length iterations, called Sprints, which are typically two weeks long. The most interesting aspect of Scrum is that teams attempt to build a potentially shippable (properly tested) product increment every iteration.
It is a strong alternative to classical Waterfall approach: scrum’s incremental, iterative approach trades the traditional phases of "waterfall" development for the ability to develop a subset of high-value features first, incorporating feedback sooner.