span of control. This all-hands-on-deck attitude is essential in an iterative and agile environment.
The all-hands-on-deck is not at all suggesting that everyone should have a fire-at-will mentality. It is more of a ready, fire, aim concept. Michael Masterson, in his book Ready, Fire, Aim describes the ready, fire, aim formula as having three simple rules:
1. Begin when you are ready - excited by the idea because your gut tells you that it will work.
2. Don't waste time perfecting your product or planning for every contingency, since you can't know what will work until your idea is in action.
3. Only after the idea has proven itself in some way (when you know for sure that it will work) should you make adjustments to improve it.
So, how does the concept of ready, fire, aim apply to iterative and agile software development and iterative and agile project management?
1. Understand your objective and get your bearings - Gain sufficient understanding of the internal strengths, weaknesses, competencies and constraints of the IT organization and on the external side, the political, competitive and environmental impacts upon the IT organization.
2. Plan and execute on your approach - It is typical to adopt the defined (theoretical) modeling approach when the underlying mechanism by which a process operates is reasonably well understood. When the process is too complicated for the defined approach, the empirical approach is the appropriate choice
3. Review how you did and make adjustments - Evaluate and improve the way the team performs
An iterative and agile approach is an integrated and interdependent concept involving four primary elements or links. I like to think of it as a chain, where an inside link is the commercial or operational value, another inside link is the approach and, another inside link is technology. Each inside link is then connected by what iterative and agile software development and iterative and agile project management is really all about - enabling and empowering people.
Human development is at the very core of an iterative and agile approach. It is often overlooked, as people seize on the more tangible aspects of an iterative and agile approach. Software engineers are particularly likely to latch on to methodologies like Extreme Programming, Scrum, Feature Driven Development, Lean Development, Dynamic System Development Method, etc., and think they have captured the essence of an iterative and agile approach.
Of course the methods and techniques are important. But the basic tenet of an iterative and agile approach is that people and their pursuit of providing value to the customer is most important, and, for that reason, management must have a self-organizing team focus.
Managers must buy into that all value-added activities start as part of a self-organizing team; therefore the job of managers is to support the team members. Team members appreciate management involved in their work only when they can see that management is out there to help the team do their jobs, not as part of a command structure, bent on telling them what to do.
My experience has taught me that the most common roadblock to the successful implementation of an iterative and agile approach is the failure on the part of management - and particularly senior level leaders - to understand an iterative agile approach as a simple and comprehensive approach to software development and project management.
Too often company leaders lack the total commitment to and understanding of iterative and agile approaches and are unwilling to be involved in its day-to-day implementation and application. An iterative and agile approach is not simply a set of concepts,