Disciplined Approach to Adopting Agile: Adoption Framework

Part 1

the agile practices it enunciates. The next section presents the third component of the 5 Levels of Agility - the agile practices.

Agile Practices
Agilepractices are concrete activities and practical techniques that are used to develop and manage software projects in a manner consistent with the agile principles. For example, paired programming , user stories, and collaborative planning are all agile practices. Since the agile levels are composed of agile practices (organized along the line of agile principles - see Figure 2), they are considered the basic building block of the SAMI. The attainment of an agile level is achieved only when the agile practices associated with it are adopted.

After surveying the agile methods currently used in the industry, forty distinct agile practices were selected to populate the SAMI. These practices, arranged along the lines of the agile levels and principles are illustrated in  Table 1.

Table 1. The 5 Levels of Agility populated with Agile Practices and Concepts


A set of indicators, or questions, must accompany eachagile practice or concept in the measurement index. The agile coach uses these indicators (or questions) to measure the extent to which the organization is ready to adopt an agile practice or concept. Each indicator is designed to measure a particular organizational characteristic necessary for the successful adoption of the agile practice the indicator is related to. Depending on the question, a manager, developer, or the agile coach is designated to answer it, either subjectively or objectively.

For example, assume the coach wants to determine the extent to which the organization is ready to adopt coding standards (Level 1, Technical Excellence). In this respect, two organizational characteristics that need to be assessed are: (1) to what extent do the developers understand the benefits behind coding standards, and (2) how willing are they to conform to coding standards. Several indicators (or questions) are used to assess each of these characteristics. For example, to assess the second (willingness), the assessor might ask the developers to what extent would they abide by coding standards even when under a time constraint.

The SAMI contains approximately 300 different readiness indicators for the 40 agile practices. The SAMI shown in Table 1 is one instance of the agile measurement index. Can there, however, be alternate instances? Yes, the next section discusses briefly the tailorability of the SAMI.

Tailorability of the SAMI
The SAMI, along with all its levels, practices and indicators, was presented to members of the agile community during the end of 2006. The agile coaches and consultants: AlistairCockburn [1], Mike Cohn [2], Bill Wake [3], and Sanjiv Augustine [4], and others, suggested a reorganization of the agile practices based on experiential successes. For example, Cohn has suggested that user stories be introduced in the first level of agility, because, from his experience, they enhance collaboration and communication between the stakeholders with regard to requirements.

Others suggested that pair programming be in the first level because it helps to establish collaboration within teams. This inability to reach a consensus on the position of agile practice emphasizes an important factor in providing guidance in an agile adoption effort: the adherence to agile principles when establishing the levels is paramount, not the positions of the actual practices within the model.

The intention behind the levels of agility is to provide a framework to guide the adoption process, not to dictate it. We actually encourage coaches to revisit the positions of the practices after each adoption effort to tune them according to their teams' experiences. After all, agile development promotes learning, reflecting, and tuning the process to reflect what actually works; agile

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.