(Click) Have you seen this one?
The benefits of agility
- The right product - The customer is continuously involved in the project, ensuring that valuable software is being built and prioritizing the work. In addition, the customer accepts or provides critical feedback on each increment of the product that is produced. With this level of involvement by the customer, there is no way that the wrong product can be built.
- Quality - Agility always includes a strong focus on the quality of what is built. This includes not only the customer's acceptance testing, but also many technical quality practices. Properly functioning Agile teams produce high-quality software.
- Schedule and budget - Time-boxing of an Agile project means that its schedule and budget are rarely "over-run" If things don't work out as planned, the low-priority features can be skipped or cut short. If an Agile project does need to extend its time-box it would be with their customer's and management's full concurrence.
- Early warning - Because an Agile project is essentially a series of short mini-projects, problems become apparent very early, when they can be dealt with before it is too late.
- Adapting to change - Change is a fact of business. An Agile project can adapt to changes in the business environment, within the organization, or with the customer much more effectively than a traditional project.
Today, the mainstream software industry has a "poor track record" when it comes to delivering working software on time and within budget. It is widely reported that 80% of all software projects fail. This doesn't have to be the case. Agile project management seeks to avoid the typical pitfalls that can derail a project.
One of several reasons why agile techniques are so effective, is that they reduce the feedback cycle between the generation of an idea (perhaps a requirement or a design strategy) and the realization of that idea. This not only minimizes the risk of misunderstanding, it also reduces the cost of addressing any mistakes.
What is Agile
- Learning and adaptation - Traditional approaches expect that we can foresee how the project will unfold with reasonable precision. The Agile approach accepts that there are many things we cannot anticipate, so it is structured to allow us to first learn about those unknowns and then adapt to what we learn.
- Collaboration - The Agile approach places high value on all stakeholders collaborating continuously, including the programmers and their customers.
- Customer focus - The customer is the central focus of an Agile project and is actively involved throughout.
- Lean principles - The principles that have been proven by Lean Manufacturing are embodied in Agility, especially concepts like "Just Enough" and "Just in Time."
- Progressive requirements elaboration - We expect to learn about the system requirements as the project progresses, so trying to nail them down in a full-blown specification at the beginning of the project doesn't make sense. Agile projects establish a roadmap and elaborate the details as they are needed.
- Incremental delivery - The best way to ensure we are building the right system is to regularly get feedback from our customer. Agility always includes incremental delivery of the product to the customer - at least for acceptance testing.
- Iterative planning and adaptation - Agile projects place a high value on planning. They engage in planning at various levels of detail and engage in it regularly. Again, this is driven by the fact that we cannot foresee everything that is important, so we must adapt our plans as we learn.