Tag Archives: project_management

My thoughts on how Kanban and TOC Critical Chain relate

Estimated Reading Time: 5 minutes

Background

I recently had a short twitter chat with Catherine Swetel and Steven Holt about the relation between TOC Critical Chain and Kanban. This post will try to sum up my thoughts in a way that is a little bit more persistent, as well as add a bit more color and depth that is not possible in 140 characters. To start with, lets just make clear – I’m no expert at TOC or Critical Chain. I’ve done my share of reading over the years and have seen organizations using CC and helped them explore the Agile/Kanban world. I’ve read Critical Chain for the first time back in 1996 or so and also familiarized myself with the MPCC S&T tree in the last couple of years. With that disclaimer, here are my thoughts, for what they’re worth:

Multi-Project / Program Level

If you start at the project/portfolio level, I see the Multi-Project Critical-Chain and especially its Strategy and Tactics tree as very similar to the Kanban System for driving improvement. Both approaches start with Limiting Work in Progress at the Projects level as key to reducing unhealthy multi-tasking and improving predictability and effectiveness. With time, excess capacity can be used to shape demand and create new exciting business models. I think the CC world is more advanced in its view on this aspect, but the Kanban world is certainly going there. We would be wise to learn from Viable Vision and other great thinking in the TOC world.

The Feature Design Factory

Once inside a project, kanban advocates a feature driven approach to development. The understanding that product development is a knowledge discovery process where units of inventory start as options and end up being working tested validated features is at the core of the Agile approach. The assumption is that we are operating in an uncertain environment. Both the requirements/problem as well as the technology/solution has considerable elements of uncertainty. We welcome this uncertainty as it comes together with the opportunity for great returns. We also recognize that Integration activities hide a lot of the risk in our projects, and so we drive for early and continuous integration to minimize that risk.

The way to operate effectively in this environment is to have a continuous process of focusing on a few features, seeking feedback along the development process all the way to customer/field feedback, orienting ourselves based on it iterating thru the same or earlier stage of the process depending on the feedback, and at the end having a marketable/viable feature that doesn’t hid any more work behind it. Only then do we pull another option/feature and drive it thru the process.
Kanban realizes that we have a certain capacity of features we can effectively process at any point in time. Overburdening this capacity will mean the knowledge discovery for each feature will take longer and the feedback will be handled later at a higher cost. I’m guessing this will resonate with any TOC practitioner. And indeed, the realization that features can be handled as inventory opens the door to applying a lot of the pure TOC thinking.

This approach can be used for handling an ongoing product development context where there is always plenty of options that can provide business value, and we are a factory/studio choosing the best option to develop and deliver.

Managing Projects with Kanban

When the context is a major project comprised of many different capabilities/features, this approach works as well. There might be a stronger need to manage the overall project health, but the basic principles still apply. There was an interesting discussion about this lately in the kanbandev user group. I also covered this in my recent talk about Commitments in a Kanban world. In this area, I believe CC provides us with good practices and tools – Release Burnup/CFD charts can evolve to Fever charts for each project, and an overall Fever chart managing the overall projects portfolio.

Typically, breaking projects to features will result in quite a simple dependency graph/pert chart. This is because the network is comprised of self-sufficient features. Sometimes though, Features do have dependencies on each other, or dependencies on external groups, as well as need to be delivered independently before the major delivery. When this list of dependencies grows larger and larger, maintaining a Critical-Chain view of the project/program together with relevant feeding buffers might make more and more sense. This view should only care about Features with dependencies, so it is typically quite simple, ideally managed as a Big Visible Chart on a project wall, a Look-Ahead plan, etc.

Kanban’s view of Specialists

Kanban and Lean/Agile in general recognize specialization as a root cause for lack of flexibility and an impediment on the way to business-driven agility. We advocate generalizing specialists and the use of healthy engineering practices to make sure more of the work can be done by more of our people. While this is a worthy vision / desired state, many organizations cannot economically achieve that goal, not in the near term, maybe not ever.

So we need to optimize how we involve our Specialists while we are aiming to reduce our dependency on them, where it makes economic sense.

We start by recognizing that each person, including Specialists has a certain capacity for spreading his attention as well as for actual delivery. Once we overburden this capacity we are abusing our scarcest resource. When we limit the work in the workflow we align the workload with the capacity in the line. But specialists that hover above the work like busy bees flying between flowers require a separate approach. One way is to limit the number of cards a specialist can be involved in. Once that limit is reached, he cannot be asked to be involved in a new card. So either manage without him, or wait with starting that work. Visualizing this involvement will already drive some realizations and maybe some investment in reducing the dependency somehow by knowledge sharing, offloading, etc.

Another approach I touch on elsewhere (including the commitment talk mentioned above) is to classify the work based on need for shared resource and affecting routing decisions based on that. So if a specialist or any other type of shared resource is currently congested, consider pulling work that doesn’t require much of his involvement. Or even better, pull work that will reduce your dependency on him in the future.

Summary

Well, These are just some thoughts, an invitation for future discussion. I believe there is potential for a lot of synergy between Kanban and CC, especially in the world of complex programs/portfolios. I especially urge the TOC/CC practitioners out there to explore the “Feedback Oriented” view of Agile. What we all need to remember is that the main thing about the Kanban method is that it is aimed at catalyzing evolutionary improvement. It is similar to the aim of the TOC S&T trees trying to drive towards a Viable Vision. Don’t get confused by the mechanics. The key is to use the conversations that happen when it is painful to follow an explicit process policy, like maintaining a WIP limit, to learn something and improve.

And if you are currently using Critical Chain and would like to explore what Kanban or Agile might mean or how they can help you, I’d love to help.

 

Encouraging Feature-level progress tracking in Kanban

Estimated Reading Time: 4 minutes

One of the key questions project managers and senior management in general ask themselves and their teams on an ongoing basis is – "Are we on track to deliver the scope we committed to, on time". In some environments "on budget" is added to the question.

If you are talking about a Release Scope, the answers are quite similar whether you're doing Scrum or Kanban. If you don't care too much about the budget aspects, a Release Burnup can show you the commited scope, the committed date, and the actual progress in working software towards that goal – Plan versus Actual. If you ARE interested in the budget picture – committed budget versus actual, and are we on track to finishing the release with the budget we committed to – use AgileEVM on top of that. (http://www.infoq.com/articles/agile-evm is a good place to start)

Basically for all of this – you are measuring the amount of done features work compared to the amount of features work originally planned for. Whether sized using effort days, story points, function points, the idea is the same. 

In a conference a couple of months ago I talked about Agile Release Management and covered this subject somewhat. You can check out the slides at http://www.slideshare.net/yyeret/managing-projectsreleases-using-leanagile-techniques

I would add that this expectation of management is what we call Predictability in the Kanban world, and based on some encounters I've had with senior management, we as the Agile community have not been doing a great job at connecting to the expectation of Predictability. In many cases its the opposite – we create the impression that Predictability is a lost cause because everything is Agile. 

In Kanban we try to better connect to this expectation of Predictability/Commitment to the important things. Senior management doesn't care about committing to a sprint goal and meeting it. They care about meeting commitments to deliver a release on time and with feature highlights communicated to the stakeholder community. They care about meeting commitments to deliver certain features on time to internal and external parties that count on this feature to continue and do something else. 

Predictability will continue to be important. The way its measured might change. For now, most teams/projects are indeed evaluated based on the answer to "Are we on track to meeting the release goal on time". We should support those teams with an approach that complements their kanban flow-based workflow. The methodology is all there if you connect the dots. 
The room for improvement is mainly in connecting the dots and providing a structured methodology that can be applied as a framework, as well as better tool support. 

What are the gaps?

First, The thinking around CFD needs to switch from history to also a forward-looking predictive chart. What do I mean? 

Most CFDs you see today focus just on an operational view CFD – what is the current state, as well as history, which can help you improve your process, operation. 

I'm Missing a view of the work needed by a certain date, and whether we are on track to achieve our commitments/goals. Tools that extend the CFD to a view that includes current trend, required trend to meet the goal, and trend of requirements churn can answer this question – you see whether the DONE trending towards the overall committed scope is on time or not. 

One more complication is that of course you sometimes want your board to reflect many releases, not just one. You're working to finish one release, and then you move to another. 
In this case, You probably want this view per-Release on the board. 
 

So we need visibility charts that can aggregate the status of several cards e.g. Feature, Release, MMR, MMF whatever you want to call it. In FDD Parking Lot diagrams are a popular way to convey the status of various features/aspects in a Project/Release. An extension of a Parking lot diagram can be to have a mini-burnup of that entity. So beyond just the status (which is basically the current point of a burnup), you can have a mini-graph showing the status of entities comprising this feature. See below for a sketch of how this can look. ( Note that the Warning Indicators box are taken straight from the organizational dashboard page of LeankitKanban. I recently started to explore the capabilities in this dashboard and find them quite useful to help bring a process under control, and the sort of stuff you might want to look at in an operational review). 

The color of each parking lot / feature can easily be derived from where the actual progress is compared to the expected progress curve. The expected curve can be defined to be Linear (yeah right), S-curve based as David Anderson is fond of, or whatever you think the profile should look like. Once you are below the curve, you start to gain reddish colors. Above it – you are green. With Agile approaches relying on Working Software as a measure of progress, you can really trust those colors… Its no more a watermelon (green outside, red inside – courtesy Kent Beck)

For those interested in the details, here is one way a CFD can be extended to provide burnup capabilities. 

 

 

With this in mind, the mini-burnup in the parking lot can be upgraded to a mini-CFD

Now, with a CFD, some more intelligence can be applied to help determine the color/state of the Feature. High level of WIP can be a leading indicator of problem (but knowing about Little's law and how a CFD looks like you probably know that it will be apparent in the burnup being quite flat as well…). I'm guessing that with time, we will learn to study and identify progress risks using a CFD, beyond the basics we currently use. 

Bottom line – my feeling is that in order for Kanban to cross the chasm into the majority of projects/development groups, who are quite concerned with delivering Releases and Features on schedule, not just with trusting the Flow, we will need to provide more and more tools and focus to support this use case. The core thinking is there, the hunger on the part of the IT world is there as well it seems, so lets go out there and make it happen. my 2c…