There are two things that agile software development does really well. Unfortunately, they are widely misunderstood or even ignored.
- Keep things simple.
- Manage risk.
Let’s examine these a bit. Simpler is better because people can only remember so much. If you have to refer to the rule book every time a decision needs to be made, you’re doomed. People won’t take the time to refer to the rule book. They’ll wing it. Chaos will result.
I was an advocate for the Rational (now IBM) Unified Process some years ago. There were many things I liked about it though I have always maintained that it was too complex. It presented a process intricate enough to handle the world’s largest software project. That’s fine, but my projects tended to be fairly small forcing me to select the aspects of RUP that I thought were appropriate. Too much work.
RUP was intimidating and hard to master. We need systems that are simple and consistent. The rules should not change from project to project. Everyone should be able to master the rules quickly.
The second point is more complex. Risk is rather nebulous. It’s a bit like buying life insurance. You know there is a risk of dying but it’s hard to relate to it.
Likewise, you know that many traps and pitfalls await any software development team but it’s hard to visualize them until risk turns into consequence. By then, it is too late.
Agile techniques teach us to leverage the experience of the entire team not only individuals. Just as many hands make light work, many minds make better decisions. Better decisions result in less risk.
We also learn to postpone decisions until we need to make them. The goal is to have as much information as possible by the time the decision must be made. Having more information drives better decisions. See a pattern?
We need to admit that we don’t have all the answers up front. And even if we did, the situation will change before all the decisions can be implemented.
Agile development makes the software development process simpler and less risky — at the expense of senior management command and control. Seems like a worthwhile trade-off to me.