Many organizations do not have the efficiency that is possible to achieve. There are several factors causing this that must be dealt with:
Implementation is not a separate step from deciding what to work on and refining our backlogs. All of the steps work in an integrated, tightly knit fashion to create feedback throughout the process. However, there are aspects of implementation that can be discussed separately.
Managing the Work-in-Process hitting the teams
This is perhaps the biggest and most effective way to improve team efficiency – stop overloading them. A focus on working on the most important chunks of business value with a focus on finishing can help significantly.
Solution for unplanned work
There are three main types of unplanned work hitting the teams:
Unplanned requests for new work
It is, of course, simple to say “just don’t do this.” But the reality is much harder. Developers have a difficult time saying no to an executive (it’s what we call “a career limiting move.” In any event, unplanned work of this type sometimes has more value than the damage it causes (e.g., a potentially large client can be obtained). There are two main steps to solve this:
Solution for having constraints
Constraints are a reality and cause many interruptions sourced within the technology side. It’s easy to say “have cross-functional teams” but the reality is that it is often not only difficult to do so, it may not even be financially viable. Highly skilled people are often difficult to find and or train. Sometimes it’s not skill, but experience such as being a subject-matter expert or having been around when the code was written 10 years or more ago. We need to recognize that the way these people work must be different than the way others work in order to be efficient. The most effective way to do this is to have these people and/or teams have their own kanban boards so that we can both focus them on the work only they can do as well as make their delays/constraints visible. This will enable those dependent upon them to plan better.
Poor collaboration between teams
There are four main solutions for improving the coordination between teams:
Improve the ecosystem that the teams are in
The manner in which teams are organized around their value streams has a huge impact on the quality of their work.
Organizing our people. The ideal case is to have cross-functional feature teams. That is, teams that can build features on their own, without being dependent on others. This, however, is virtually impossible once an organization has gone beyond 100 people. Nevertheless, we want to strive for this as much as possible. There are many ways to have people collaborate together better. Sometimes it’s merely have core teams that “borrow” a member of another team.
We don’t need to necessarily do a re-org of our company to achieve this, but rather look how people should be collaborating. It is important to match our collaboration methods with our value stream as much as possible. Doing this typically requires making all work visible (see section Creating Visibility above). Once we see how people are currently working together and how work is going back and for the between them, we can better see how folks should collaborate.
High technical debt making change difficult