There is a tendency to jump to solutions before truly understanding the problems. First, try to see the intentions that are blocking and get to the root cause of them. These are critical. They allow for different possibilities for solutions to arise.
As there is great commonality in the challenges people face, there is also great commonality in what needs to happen to solve them. The variations are not in the intention of the solutions but the particular way companies go about achieving them. This creates the possibility of having a common set of steps most companies should start with while enabling tailoring for the organization so as to be more effective and to set up continuous improvement after starting.
As we saw in common challenges to flow, there are many patterns that different companies face. Before coming up with solutions, however, we must consider root causes. Here are the most common root causes.
- Chunks of work are too big (making it impossible to prioritize work since large items will be composed of aspects with different degrees of value)
- Development teams not well organized
- Teams not getting clarity on what they should be building
- Solving the wrong problem
Not all organizations have these root causes. So it is important to understand what are the root causes before starting. That being said, there are patterns to what root causes are present. Figure 1 illustrates what needs to happen in order for the flow model to work well. Pay attention to the different shades for the solution blocks. Although there is no one set order, it is usual for the darker ones to come before the others. While many people talk about starting with “low-hanging” fruit, at scale a different approach is needed. This is to start with those items that are feasible that make following items easier to do. Systems Thinking reminds us that all of these changes are interrelated so it is important to attend to both what change people can accommodate as well as what sets up the next win.
Figure 1. What needs to happen in order for the flow model to work well.
The Actions Required
Align The Organization On What Needs To Happen Based On Value
Even at small organizations there is always competition for capacity. When a team is pulled in different directions it is important for them to understand what direction they should head. This is, of course, the job of the product owner. But if there is more than one product owner how do they agree among themselves without this clarity?
Depending upon the responsibilities of the organization this may need to happen by having the product owners deciding themselves or it may need to happen further up the value stream. See how to do this at Aligning Organizations at Scale.
Have An Intake Process
An intake process has two aspects to it:
- Have small items coming in so that they can be completed faster
- Sequence these items so it is clear which one to start first
- Control the amount of work in process in the system by having a gating mechanism to avoid too much work being done
Use MVPs and MBIs Depending Upon The Type Of Working Being Done
Minimum Viable Products (MVPs) are intended for when building new products for early adopters. Minimum business increments (MBIs) are used when you are extending an existing product/service. In both cases we’re trying to build the smallest thing we can in order to deliver value quickly.
Sequence The Work
Work is often prioritized. But priority is a relative term. What’s most important to one person may not be most important to another. In any event, many companies face the problem that everything is important. The key to get around these problems is to sequence the work. This can be done in many different methods but should be based on cost-of-delay.
Note that proper sequencing depends on using the equivalent of MVPs or MBIs. If they aren’t as small as they can be, then comparing two items may have you face the situation where parts of each item are more important that other parts of the other item.
Control The Amount Of Work In Process
If this is not done teams will be working on too many things which will inject delays into the workflow and feedback, not to mention value delivery. Delays of this type create additional work – see Why Looking at Time Is So Important. The most effective and easiest way to accomplish this is to let the teams pull work from the product backlog when they have the capacity to build and deliver the work. This can be done on a continual basis or with a planning event at set intervals.
Use Acceptance Test-Driven Development
ATDD, or Behavior Driven Development as it is sometimes known, is a critical method for getting clarity on what is needed. There are three main phases to ATDD:
- Discovery – collaboration with product owners and development teams to discover what is of value
- Specification – creating specifications that can be validated with tests
- Automation – automating the tests.
While automation does not need to be learned up front, for almost all organizations discovery and specification will be worthwhile to start at the beginning of any an Agile adoption.
Create line of sight from business stakeholders to DevOps
While product owners are responsible for directing teams on the work is to be, it’s important that everyone has visibility back to the relative importance of the backlog items. This enables making local decisions within the bigger context.
Use Team Agility
Whether it be Scrum, Kanban or a blend of both, some Agile team approach should be used. Learn more at Introduction to Team Agility.
Improve Your Company’s Culture
It has been said, “Culture eats strategy for breakfast, lunch and dinner.” The following is a paraphrase from Creating a Lean Culture: Tools to Sustain Lean Conversions by David Mann goes into this.
Culture is important, but changing it directly is not possible. Culture is no more likely a target than the air we breathe. It is not something to target for change. Culture is an idea arising from experience. That is, our idea of culture or a place or organization is a result of what we experience there. In this way a company’s culture is a result of how people collaborate with each other. Culture is critical and to change it you have to change your method of collaboration.
Focus on agreements, behaviors, specific expectations, tools and routines practices. Lean systems make this easier because they emphasize explicitly defined agreements and use tools to make the work and agreements visible.
Alignment is critical. This requires both what we’re all working towards and how we work together towards that.
Starting With Intent
DA FLEX is based on looking where you are, what your challenges are, what is the intent that those challenges are impeding and only then do we look for solutions. So before going into solutions, let’s look at intentions:
- Select the value we want to realize. Essentially we want to realize the most value in the shortest time with the capability we have
- Refine the product backlog. While we are forced to start with at least the minimum sized increments of value that we can realize, we need to feed the teams much smaller chunks of work
- Implement our value at the team level with quick integration. While this is, of course, essential, it’s not always the way to start other than having some Team Agility process be available
- Realize value quickly (either externally or internally)
- Achieve alignment across the organization. Alignment makes possible transforming the purposes of the company into pieces of work that can actually be done
Core Starting Points
Although there is no one-size-fits-all approach, there are several things that virtually all companies can start with that work together to make a significant, positive impact. These are:
- Create Visibility. You can’t manage your work if you can’t see it. This includes work in process, capacity, dependencies, promises made to each other within the organization, projected release date
- Use Minimum Business Increments (MBIs) and adopt an MBI mindset. It is critical to work on small pieces of high business value that can be realized quickly.
- Have a way to decide what to work on when there is limited capacity. While this might involve properly sequence work in the business backlogs there are several ways to do this.
- Manage Work-In-Process (WIP). Managing WIP is critical to avoid working on too many things and the multi-tasking and delays it brings. However, at the start, managing WIP can be done implicitly.
- Adopt and “done” and “ready” mindset. Until we know what it means to complete something we shouldn’t begin it.
- Guardrails. Create agreements on how to work together.
- Identify risks.
- Recognize your starting plan is just that: a plan.
Steps Down The Road
Here are some other steps to explore. You don’t need to wait to do these, but they are not necessary to get started.
- Refine Backlogs with Acceptance Test-Driven Development (ATDD). It is virtually ubiquitous to see that the product backlogs are incomplete and have poorly defined requirements. ATDD is the most effective way to overcome this.
- Improve the efficiency of the Technology Group. Getting multiple teams to work together can be difficult. There are many factors that must be considered.
- Using Team Agility.
- Use Patterns thinking, TDD & automated testing to pay down technical debt
- Continuously integrate or continuously deploy.
- Create line of sight from MBIs to stories.
- Full Implementation of DevOps.
Other factors
The figure shows flow and the activities that can help achieve it. But there are other factors that guide our action. These are:
- The role of management
- A systems-thinking point of view
- A company’s culture
These are added to the diagram as shown below:
The Role Of Management: Middle-Up-Down Management
The role of management is to create the environment within which those people doing the work can get their jobs done in a way that aligns with the direction and goals set by business stakeholders. This is called Middle-Up-Down Management because middle management looks up to the business stakeholders to see the direction and then down to those people reporting them to see how to help them implement that.
Systems Thinking
A system is an entity with interrelated and interdependent parts; it is defined by its boundaries and it is more than the sum of its parts (sub-systems). Changing one part of the system affects other parts and the whole system, with predictable patterns of behavior. Positive growth and adaptation of a system depend upon how well the system is adjusted with its environment, and systems often exist to accomplish a common purpose (a work function) that also aids in the maintenance of the system or the operations may result in system failure.
The best way to get a better understanding of Systems Thinking is to watch this 12 minute video: What if Russ Ackoff Gave a TED Talk.