Agility is such a positive sounding word. In common usage, agility is synonymous with quickness, lightness, ease of movement, nimbleness—beautiful gymnasts are agile, great basketball players are agile—I feel buoyant just talking about it (Wish my march madness team picks had showed more agility!)
Agility in terms of software development is an approach that addresses rapid change—in requirements or market places or technology. Business has labeled agility through terms like just in time, shortened life cycles, and customer driven. It goes by many names in the software world: lean or extreme (XP) programming, feature-driven development, and Scrum.
As described by Alistair Cockburn (a signee to the original Agile Manifesto) in “Agile software development: the business of innovation”, agile approaches have short iterations—two- to six-weeks. Development teams make constant trade-offs and practice dynamic prioritization, which allows a customer to reprioritize the “features desired in the next cycle, discarding originally planned features and adding new ones.”
According to the Agile Manifesto, projects and project managers must emphasize:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Not all developers work well under the expectations of agile development. Because of the short cycle times, there is a much greater need for constant communication, cooperative work relationships, and strong technical skills.
How Can Project Managers Promote Agility in Their Organization?
- Get people working together into close physical proximity. This is not always possible- just preferred.
- Discourage formal communications such as reports and emails and encourage face-to-face meetings or video conferencing if players are not co-located.
- Build individual competencies.
- Use tools to support interaction.
- Select team members who enjoy working collaboratively rather than alone.
- Have frequent—even daily—quick team meetings (10 to 15 minutes) to discuss what was done yesterday and planned for today.
- Integrate testing into development and consider using automatic testing tools—this is as opposed to the process of finishing a build and then turning it over to QA or test.
- Ensure active user participation.
- Keep teams small. Not tiny- just small.
- Select team members with diversity of experience and approaches to solving problems.
- Monitor the development and the work environment frequently to detect unexpected occurrences before they become problems.
- Create empathetic management—people respond more positively and recover from all kinds of trauma when they encounter empathy. Changing methodology from traditional development process to agile development is a big change to a project or an organization—it can be traumatic. In addition to leading people through this with resilience, management must also be empathetic to the impact of the change.
- Leverage human complexity—support learning about the people on your team—not just their technical prowess, but also their interests, personality types/characteristics. Promote self-knowledge, creative expression, and shared knowledge with teammates. Deep understanding enhances creativity, which is essential for acting when there is little time to prepare.
- Encourage mentoring—constant change and shifting priorities can render even professionals less effective. Mentoring provides guidance and support and helps build relationships. Readiness for change and adaptability can be improved by mentoring.
- Tap into community building efforts, such as communities of practice.
Do you see differences in the capability and personality needs of agile projects? Please share your experiences, comments, and suggestions. And what about the new concept being proposed called “Agile Project Management”? Do you think this will take hold? What is agile project management?