Compared to traditional development approaches, within iterative and agile software development, manager needs to play a different role. I am sharing my personal experience as a software engineer who started out in the traditional way of software development, and along the way discovered a much better way—iterative and agile software development and iterative and agile project management.
I will describe what it is like to infuse this philosophy, in hopes that anyone attempting to change the culture of an existing organization towards iterative and agile software development and iterative and agile project management, can benefit from my experience and observations. In particular, I intend to focus on the role of management in an iterative and agile environment.
In 1980, I took my hot-off-the-press BSCS diploma and went to work for McDonald Douglas, now Boeing, in their Information Technology (IT) department. My career in the software development industry progressed as I worked my way through as Programmer, Programmer Analyst, Systems Analyst, Data Base Administrator, Business Analyst, Project Manager and Development Manager. During my 20+ year's experience, I became acutely aware that our industry was in trouble. We were stuck doing things the same old way or always looking for a "silver bullet" that would miraculously solve all our problems, and that way was not getting the job done. We couldn't respond to the changing market. Worst of all, the people working in IT couldn't make things better, even though they had plenty of good ideas, because they were bogged down by the rigid, traditional structures.
So I went on a journey in pursuit of better means to harness the energy and talents of good software developers, looking specifically for ways to enable them to perform up to their potential and as a result of their efforts deliver commercial or operational value. What I discovered is iterative and agile software development and iterative and agile project management and became a practitioner.
In my opinion, the key to the successful implementation of iterative and agile software development and iterative and agile project management is the total commitment on the part of everyone to make it work. By that I mean, all levels of the organization, from team members to the senior managers. They all have to be aware of the fundamentals of an iterative and agile approach and have to make their best efforts to practice and improve them day-by-day. The key is working smart by applying Simple Means to Accomplish the Right Things (SMARTTM). I'll come back to this point later.
One of the fundamental elements of working smart is that everyone must be fully committed to the "customer-first" philosophy. Typically, organizations envision the customer only in terms of the person who purchases the final product at the end of the process. An iterative and agile approach has a different view.
Essentially, each succeeding process or workstation or end-user or department is the customer. One needs to work very hard to ensure that all team members and all departments realize their dual role: they are at once the customers of the previous work and the suppliers to the next endeavor downstream.
For this concept to flourish there must be no artificial barriers walling off one area from another or one department from another. Rather, the entire organization shares problems and must work together to ensure that a solution is found. Therefore, it is critical for the successful implementation of an iterative and agile approach that all managers support this idea and aggressively seek to solve problems, even if they are not directly within their
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, techniques and methods, which can be implemented by command and control. Rather, it is a fully integrated management and software development philosophy and approach which must be practiced throughout the organization from top to bottom and consistently.
Another common reason iterative and agile software development adoption fails is that organizations try to implement disparate elements instead of a common and interrelated set of key concepts. Each element of such an approach will only fully blossom if grown in an environment that contains and nourishes the philosophies and managerial practices needed to support it. I liken this to a greenhouse, where just the right combination of soil, light, temperature, humidity, water and nutrients allow plants to grow and flourish. If any one of these elements is removed, the plants will weaken and eventually die.
An iterative and agile approach is an interlocking set of three underlying elements: the philosophical underpinnings, the managerial culture and the technical tools. The philosophical underpinnings include a self-organizing team, customer-first focus, emphasis on people first, a commitment to continuous improvement, and a belief that harmony with the environment is of critical importance. The managerial culture for an iterative and agile approach is rooted in several factors, including developing and sustaining a sense of trust, a commitment to involving those affected by first, teamwork, equal and fair treatment for all, and finally, fact-based decision making and long-term
All of these facets of an iterative and agile approach - the philosophical mindset, the managerial culture and the technical tools - must be in place and in practice for an iterative and agile approach to truly flourish and provide customer value, the high-quality, high-productivity results it is capable of producing.
What have I learned from my experiences as a practitioner can I pass along to you? First, I have learned that the human dimension is the single most important element for success. Management has no more critical role than motivating and engaging large numbers of people to work together toward a common goal. Defining and explaining what that goal is, sharing a path to achieving it, motivating people to take the journey with you, and assisting them by removing obstacles - these are management's reason for being.
What I've realized is that our greatest challenge is to lead teams not through the power of will or dictate, but rather through example, through coaching and through understanding and helping others to achieve their goals. This, I truly believe, is the role of management in a healthy, thriving, iterative and agile work environment.
About the Author
Russell Pannone is the Founder of We Be Agile and the Agile Lean Phoenix User Group, as well as the Agile-Lean Adoption Lead. With almost 30 years of system-software development and delivery experience, my focus is on working side-by-side with folks on real projects helping them deliver valuable system-software to production early and often, giving those I collaborate with the best opportunity to beat the competition to market, realize revenue and discover insights that we can use to help us improve.