Agile process maturity can be understood in many different ways. The most obvious measure of agile process maturity could be in terms of the degree to which the practices adhere to the Agile Manifesto and the Agile Principles. In some ways this could be understood almost in terms of a "purity" measure. In order for this measure to be valid we need to operationalize these principles. So how Agile are you?
Do you make satisfying the customer through early and continuous delivery of valuable software your highest priority? Does your Agile ALM process harness change for the customer's competitive advantage and welcome changing requirements, even late in development? Your delivery cycle should favor shorter iterations, with delivering working software frequently, from a couple of weeks to a couple of months. Developers and business people should be working together daily throughout the project. Projects are built around motivated individuals and they are provided the environment and support they need and trusted to get the job done. Information is best conveyed face-to-face and working software is the primary measure of progress.
The Agile ALM should help all of the stakeholders to maintain a constant pace indefinitely in what is known as sustainable development.The Agile ALM should help all of the stakeholders to maintain a constant pace indefinitely in what is known as sustainable development.
There is also continuous attention to technical excellence and good design, including a focus on simplicity - the art of maximizing the amount of work not done. Self-organizing teams produce the best architectures, requirements, and designs. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. These principles have formed the basis of Agile development for many years now. In order to understand them, you need to consider how to operationalize and implement these principles in practice. Then we will see how they fit into and, of course, facilitate the Agile ALM.
Applying the Principles
Implementing the Agile ALM requires that you understand the Agile values and principles and, more importantly, understand how to utilize them in practical terms. Technology projects require a deep understanding of exactly what the system should do and also how it should work. These are important details that are typically expressed in terms of requirements. There are many different types of requirements from system level response time to functional usage including navigation. Many professionals use Epics and Stories to describe requirements in high-level terms. Writing and maintaining requirements document is often less than fruitful with most requirements document out of date even before they have been approved by the user. Agile takes a pragmatic approach to requirements management that focuses on working software instead of writing requirements documents that are often of limited value.
One very effective way to manage requirements is to supplement them with well written test cases and test scripts. Test cases often contain exactly the same information that you might expect in a requirements document.
Recognition by the Agile Community
Another indication of agile process maturity would be acceptance by the agile community and that can be quite a challenge to achieve.
I will be writing more about Agile process maturity in the near future, but I would like to get your input too. How would you define and measure Agile process maturity?
More articles by this author