Achieving Business Agility at Small to Mid-Scale (online book)
Most organizations face similar challenges even when the organizations have different types of products and services. The reason for this is the tendency for optimization of teams over optimizing to realize value over the entire value stream. Before looking for solutions to these challenges, you must first understand what these challenges are.
Because most organizations are organized in similar ways, it should not be surprising that most organizations have similar problems. The most common ones are:
Well-defined business and product backlogs
We need a business backlog is a list of items to create and realize value in the approximate order of implementation and delivery. In the early stage this backlog likely contains coarse descriptions of what is to be created.
Challenges in business and product backlogs
Most companies create a program backlog that is a list of the main value-added items to create. These are usually high-level descriptions and stated in business terms.
The business backlog typically contains items that will be built by more than one team. Its backlog items need to be split up into smaller pieces so that they can be distributed to the teams that will work on them. As they are decomposed, more detail will be added. We only need to refine those items that will be worked on in the near term. These smaller chunks of value should be organized into a list sequenced in the approximate order of implementation. These items may require more than one team in order to both implement them and/or to manifest value from them.
Challenge: Product backlog not properly organized. When more than one business stakeholder is involved it is difficult to get agreement on what is truly important. Many of the challenges downstream (conflicting and unclear priorities) stem from this.
Challenge: Chunks of work too big. The size of items on the product backlogs are almost always bigger than they need to be. This is due to the focus on getting things finished as well as it is easier to get things approved at the beginning of a project that later when it likely has to go through some change control board.
Challenge: Unclear requirements. Requirements need to be refined. The common method of providing a high level set of requirements and having the technology group figure out the details does not work very well.
Building software in an efficient manner
This means having the right capacity for the most important work to be done. Having the right capacity means we have all the right amounts of the right skills. When certain individuals’ skills or experience are in higher demand than they can manifest then they will be constraints to other individuals and teams.
We need our teams to work together in such a way that the highest items of business value are created quickly. In general, items of lower value should not slow down the release of items of higher value.
Challenges in implementation
The items from the program backlog must be built by the team. This implementation work is done by one or more teams.
Challenge: Some people are constraints. People do not want to be constraints. The problem is that some people are needed by many different teams. There is just not enough of them to go around.
Challenge: Insufficient collaboration across teams. Teams tend to optimize themselves. This local optimization does not help throughput but works against it. Many a company has had success at the team level only to find that they can’t figure out how the teams should work together.
Challenge: High technical debt. Technical debt is when code has been implemented in a manner that makes it both difficult and risky to change. Many symptoms of this is something that appears to be a simple change creates catastrophic side effects. Even when these side effects are avoided it may take a long time to implement the change. Although developers get a lot of blame for this (and they do have shared responsibility for it), much of this problem is due to the extreme pressure put on them by the other challenges listed above.
Integration across teams
Integration across teams is critical to see if the function built by one team works properly with the function built by other teams. We want our software to come together when each team completes their part of it. Continuous Integration and Continuous Deployment is ideal but in any event, this needs to be as efficient as possible and take as little time as possible.
Preparation for delivery includes several steps including final testing, ensuring proper documentation and materials for sales and support are available.
Challenges in integration and release
Challenge: “Integration” errors. Almost all “integration” errors are not due to integration but are detected during integration. The real challenge is that teams get out of sync early on and do not have quick feedback to let them know this.
Managing the entire value stream and systems thinking
Leadership should be using Lean-Management and systems thinking approaches to focus on the entire value stream with a view toward bigger picture.
Systems thinking is the attitude of viewing your entire organization as an interrelated system. Each part of your organization directly or indirectly affects other parts. When undertaking a transformation this is very important to keep in mind. To learn more about systems thinking, watch If Russ Ackoff had given a TED Talk.
Challenges in management
Challenge: Managing people instead of the ecosystem / workflow. Management often seems to fall to the extremes of micro-management or just helping out the teams. However, Lean-Management offers alternatives. But the real challenge is that most management is focused on only parts of the value stream while missing the bigger picture. This is what leads to ineffective behavior.
Challenges in visibility
Challenge: Lack of visibility. Teams sometimes have visibility to their work and management can often see what is going into and coming out of a team. But the visibility of how teams are connected in the workflow, the amount of work going on in the company and the dependencies between teams is often poor.
Challenge: Ops being blindsided and pulled in many directions. While teams may have consistent direction from their Product Owner, Ops and shared services are pulled in multiple directions. Ops is in even worse shape because too often they do not see what work is coming their way.
Challenge: Teams not understanding the business needs. Teams must understand why they are working on what they are working on as well as the relative importance of the work. There are many decisions that they can make better than anyone else but without this information they are most likely to just go into a heads-down mode and focus on their work and not attend to the context of bigger picture.
Challenges in Work-in-Process
Challenge: Working on too many things. Most organizations have their people working on way more things that they should be. Most people think this is bad because of the multi-tasking that results. But what is worse is that by working on too many things delays in workflow and feedback occur. These delays cause extra work to be done.