Agile software development techniques need to be complemented by a project management style that accommodates agility, says Sanjiv Augustine of Virginia-based developer CCPace Systems.
This means management techniques should concentrate on leadership, not "command and control" of the team, and on prescribing what should be developed, not how it should be developed.
Agile techniques have conferred significant benefits on the application development scene, but in large part such methods, the popular extreme programming (XP) in particular, still lack an appropriate project management style, he says.
Augustine was speaking at Software Education's 2003 Software Development Conference in Wellington last week, which concentrated on agile development techniques.
Some agile development experts, such as Jim Highsmith and Ken Schwaber, talk about project management to some extent, Augustine says, "but XP has the greatest mindshare; it was developer-centric, a developer-led methodology", and this has meant a significant hole in the project management disciplines that should surround the technique, he says.
"Conventional management techniques such as task breakdown and resource allocation -- particularly when it treats people as interchangeable -- don't work (with agile development). Top-down management doesn't work."
Understanding people are individuals with their own talents, not commodities, and that they should be respected and trusted with a certain amount of autonomy, is consonant with the style of agile development. This involves small, flexible teams rather than a rigid structure, he says.
Augustine lays out six principles for agile project management:
- a guiding vision, shared with and developed by the team
- small flexible teams that swap personnel as necessary -- he calls them "organic" teams
- "light touch" -- delegating technical tasks to teams and leaving them autonomy as to the methods used
- simple rules for development methodology
- open information -- the same information available to everyone, rather than being locked away at various hierarchical levels with subordinates not allowed to know
- "agile vigilance" -- keeping the project balanced between total anarchy and "paralysis by analysis". Agile development thrives on the edge of chaos, Augustine says.
The command and control style of management is productive, he says, "as long as you have the people behind you". Some people prefer to work under tight control, but more and more IT workers today desire autonomy and flexibility. "And they will vote with their feet." There is a strong business case to be made for caring for your people, he says.
Traditional development styles ask users and developers to analyze the whole system in advance. "To outline everything they do at work, and everything they need. Then a specification is drawn up and they're asked to sign it in blood."
Almost inevitably, something is forgotten and change to a rigid specification is difficult.
"Customers don't really know what they need, and they often discover at the end, when the system is presented to them."
A process of progressive refinement, taking back "functional if not fully featured" versions of the system to the users every two weeks or so allows them to realize what they want and suggest change, "or, if it's not working, you can decide you have to cancel."