Reading path for Agile Coach (Advanced)
It is easy for a team to transition to Lean-Agile software development: Pick a good pilot project, get some training, re-arrange the workspace, learn the process, and maybe use a coach. It has been done thousands of times. It is easy but all too often, there is no benefit for the organization. The goal is not making teams agile but making the business agile. This is a bit harder. Build your transition plan around the business and everyone—customers, business, and teams—will succeed.
A successful transition plan focuses on the complete set of work that is required to turn an idea into a product that customers can use. It will minimize the time and effort required. This requires looking at opportunities in business, management, team agility, and technical practices that will have the greatest impact on removing impediments and improving the flow of work.
Where to start? Where do you want to go?
The starting point for any journey should be to know where you are going. As obvious as it sounds, many organizations we see are not clear about this. They know they want to become more “agile” and much of the literature on Agile focuses on development teams. It seems natural to start introducing Agile in development teams. But making teams more agile is not the correct destination: it is a way station on the true journey of making the business more agile. Business agility focuses on enabling a business to respond quickly to competitors, to internal insights, to changes in industry or technology, and so on. All of your efforts should lead to becoming more and more agile as a total organization.
With business agility as the goal, it is easy to measure progress. One good measure is the elapsed time from when the idea is first developed until it is implemented, delivered, and customers can begin to use it. This is called the “cycle time.” The shorter the cycle time, the better because short cycle times let the business penetrate the market faster and respond to competitive pressures more effectively. The value of this metric is that it focuses on the entire “value stream” for the product. A value stream is the whole set of work that is done to create a product, beginning to end. Ideas arise from interactions with customers who could be external or, in the case of IT, internal to the organization. Business stakeholders and product managers create a list of product enhancements to be built by the development organization and back to the customers (either external or internal for IT organizations).
Product development is just one part of the value stream. If you have good product development but some other step still takes too long or is blocked, then cycle time may be unaffected. Reducing cycle time requires optimizing the whole value stream which is a key focus of Lean. Lean suggests that removing impediments to work (delays which cause waste) improves speed to market while raising quality and lowering cost.
The major impediments to Agility
At Net Objectives, we have helped dozens of companies improve their software development capabilities. Most of these have involved development organizations with 50-300 people and the largest had over 4000. In their transition to Agile, all of these organizations have faced four general kinds of impediments.
Unrefined enhancement requests. The business side does not properly select, size or prioritize their product enhancements. Yearly planning forces stakeholders to ask for too many product enhancements and these tend to be too large. Faced with long delivery cycles, they pile on requirements just to be sure they get what they anticipate they will need. It results in working on too many projects at one time. It virtually ensures that the features have not been properly prioritized relative to each other. This means that some of the features the team is working on are not the most valuable to the business yet, because they were already started, they have to be finished before the team can turn to the next, more valuable feature.
Improper allocation of resources: To manage this crushing workload, teams are often isolated into “silos.” Unfortunately, this dilutes the efficiency of the organization even more. Developers end up waiting for others to start work or to share information. In an attempt to remain productive, they start more projects. But this just adds to their overwhelm, reducing efficiency and causing more delay.
Non-existent teams: Team agility holds the promise of shorter development times: take a statement of need and build a system to meet it and then deliver the software quickly. Unfortunately, true teams often don’t exist and are difficult to form. Just creating them without solving the cause of too many projects may result in a pilot team doing well with the rest of the organization being more overwhelmed than before.
Poor technical practices: Too often, code becomes complex and brittle and hard to maintain over time. With discipline, it doesn’t have to. The proper use of acceptance test-driven development (ATDD), (unit) test-driven development (TDD), design patterns, and refactoring can keep code robust over time. While these techniques have been around for a long time, they are still not in widespread use. And that means there is a lot of poor code.
Start where the problem is
If you want to make a car go faster, where would you start? Maybe you would put in a bigger engine. But what if the problem is in the transmission? Or the parking brake is locked? Or your tires are completely worn through? Of course, you should start where the problem is. The transition to Lean-Agile is no different. Staring with development teams is like starting with the bigger engine—if impediments lie elsewhere, then even if the individual team gets better, overall agility might be less! Even worse, if an Agile pilot project ends up causing headaches for the organization, people will turn against it. Who wants that? And it becomes very hard to try again. Unfortunately, we have seen this many times. It is much better to start where the problems are. Table 1 offers ideas to help you focus on challenge areas.
Table 1. Addressing challenge areas
Start where you can
The good news is that the transition does not require great organizational changes before seeing improvement. You can start where you are. Here are two effective and relatively painless approaches that we have used.
You have many more options available to you today than we had in the past for deciding where to start the transition to Lean-Agile. Increasingly, there are business leaders and management who recognize the need to become an agile organization. They may have been trained in Lean thinking. They have been exposed to the Toyota Production System and the Toyota Product Development System. They are more likely to see the need to develop strategic plans for the transition to Lean-Agile software product development. In our experience, involving leadership to create a top-down vision with a bottom-up implementation is always better. Developing this top-down/bottom-up approach requires careful, strategic thought. Consider using a coach who is experienced in working with senior leadership. Such a coach can bring to bear the experience of others to create a strategic plan that is likely to succeed and will have the proper business justification.
In your transition to Lean-Agile software development, it is critical to keep focused on the goal: Business agility. Creating more agile teams is good but only as it helps the entire value stream deliver product to customers more quickly and sustainably. Work on those changes that will produce the greatest results overall. This involves looking at all four of these critical areas:
In an interview with Agile Collab, Ken Schwaber, co-founder of Scrum, said, “I estimate that 75% of those organizations using Scrum will not succeed in getting the benefits that they hope for from it.” Since Scrum implementations typically start with team agility—just one of the four critical areas – a one in four rate of success is not surprising. It often is a question of doing the wrong thing—not doing the right thing wrong. Keep the larger picture in mind and you will naturally enjoy greater success.
Note: This article is based on the Lean-Agile approach to software development described in Shalloway, Alan, Guy Beaver, and James R. Trott. Lean-Agile Software Development: Achieving Enterprise Agility. Addison-Wesley Professional, 2009.