Archives For Kanban

http://www.bti360.com/uploads/tour-de-france.jpg
Now that we have the Value Stream defined the question becomes – What is the best way to process tasks through the value stream?I’ve found typical Scrum projects tend to “optimize the part” over “optimize the whole.”  So – what is a part?
Think of the Tour de France. The Tour de France is broken into 20 stages.  Each stage has stage winners.  Than there is an entire tour winner.In this example, each stage is a “part.”  When Lance Armstrong won his record 7 tours, did he focus on winning each stage or the entire tour?Understanding the difference between optimizing for a stage and optimizing for the tour changes the strategy for winning.  Lets apply this to Kanban.Typical Scrum teams tend to optimize parts of the system.  For example, developers will work really hard at coding the task and then 2 days before the end of a Sprint dump all their tasks on the Test Team.Here is what the Scrum board looks like:
http://www.bti360.com/uploads/ScrumBoard_OnDeck.jpg
http://www.bti360.com/uploads/ScrumBoard_Code.jpg
http://www.bti360.com/uploads/ScrumBoard_Test.jpg

I’ve seen this happen frequently on software projects.  In this case the developers optimized coding ALL their tasks before the end of the sprint, but the test team doesn’t have enough time.  So the team optimized coding but not the entire process.

In this case the team got 100% of the tasks 80% done – but until something is complete there is no progress.  Kanban tries to fix this dilemma by getting something 100% done rather than many things 80% done.

How does Kanban accomplish this?  Through the following techniques:

  • Minimize the Work in Process (WIP)
  • Pulling Work

This will be discussed in following posts.

In Part 1 of this series I explained reasons why my team searched for a Scrum alternative. In Part 2 we discussed how Kanban, a scrum alternative, provides visual indicators that trigger action. In Part 3 we will walk through the first step we took to moving from Scrum to Kanban. 
Scrumban Level 1 Kanban is focused on delivering value. To deliver greater value, we must ONLY perform actions that add value to our end product – working, usable software.In my experience, I have found that most developers on a software team have different understandings of the value added steps when working on a task. The typical Scrum board that I see on projects looks like the following:
$0 Here’s the confusion – every team member has a different definition of “In Progress.” The steps taken during “In Progress” differ among team members, which causes confusion and frustration amongst the team. Some team members write unit tests, other do point and click testing. Some team members request code reviews, others do not. Some team members comment their code, others write a detailed specification. So what does it mean for work to be “In Progress???”

To answer this question we have stumbled upon the first step of going from Scrum to Kanban – Scrumban Level 1.

DEFINE THE VALUE STREAM

To define the value stream, we must ask ourselves two questions: What steps do we take that add value to our product?

What steps do we perform that do NOT add value to our product?

Typically question #2 is the most important. A team must align around following practices that add value and flee from those that don’t. But agreeing upon the tasks that add value for YOUR TEAM is easier said then done. Because once you decide on these steps you must be disciplined, in fact FANATICAL in enforcing them.

For example, most teams believe code reviews are important – but how many teams actually perform code reviews on a regular basis? Very Few! Why is this? Because when a sprint is about to end it’s convenient to skip over reviews. Just mark it done!

To remedy these problems, our team defined our value stream:
Each step in the value stream must be defined with great clarity. Every team member must know what it means to complete each step in the value stream.

As you see, our first step is Specify. We believe it’s so important for our application to have strong documentation that we write the specification first. That way it does not get skipped over or done poorly. Next we Execute. We define this as testing and coding the application. Each team member is crystal clear on the expectations of what test cases must be written and passing for a task to be considered done. And finally, we Review our code. A team member is cannot move the task to Done until the code is reviewed. We believe requiring this step is critical to delivering a quality product.

What are the “right” steps that define your value stream? That will differ from team to team. Different ideas on the software development process combined with varying skill sets means these steps must be tailored to your team. Your team may not need a high level of documentation – so don’t add this in your value stream!

Just remember, once you’ve determined these VALUE ADDED steps – be fanatical executing them!  In your daily standup don’t allow a team member to move a task from one section to the next without an explanation of the work that’s been completed.

BTI360 CEO, MJ Wivell, presented Yes You Kanban to the Applications Agile Network. Mr. Wivell’s presentation gave software engineers practical techniques to transition from a Scrum development methodology to Kanban.
Kanban is a software development methodology that allows for continuous workflow. Scrum batches work items for timeboxed sprints while Kanban focuses on single work items to flow through the system.Mr. Wivell explained that “Kanban can help a good team go to great, but not a bad team go to good.”

Before applying Kanban to your development methodology we must understand the basics of Kanban.

What is Kanban? Kanban is a Japanese word. Kan means visual. Ban means card or signal. Therefore, a Kanban is a visu

al indicator thattriggers action.

For example, a when you go to Starbucks to order coffee, the cashier marks a coffee cup with your order. The coffee cup along with the markings are a Kanban.

Other Kanbans in our everyday life include stop signs, stop lights, alarm clocks, etc . . .

The Kanban Board is a way to provide visual indicators that trigger action for software development team. As we continue with this series we’ll see how the Kanban Board uses visual indicators to trigger action.

Scrum has become the most widely accepted agile development methodology throughout industry. As it has gained popularity teams are analyzing the pros and cons of Scrum.With the help of Mary and Tom Poppendieck’s Lean Software Development, my team has identified the following deficiencies in Scrum:
* WAITING
* PARTIALLY DONE WORK
* TASK SWITCHING
* EXTRA PROCESSES

1) WAITING
Our team had a two week development sprint ending on Thursdays. On the Wednesday prior to the sprint end date we would have a code freeze. Thursdays were used to test the code and Friday’s were spent demoing the product and planning for the next sprint.

In theory this sounds great. But in practice I found software developers are not great testers. Developers found themselves sitting on their hands WASTING most of this time WAITING for new coding tasks.

2) PARTIALLY DONE WORK
Throughout each sprint our team would have many tasks in the “In Progress” section of our task board. Each task would be 80% done, but NONE of them would be 100% done.

3) TASK SWITCHING
Since we had a lot of work “In Progress” team members were constantly working multiple items at once. A lot of time was wasted while a developer would switch from one task to another. Each task switch required the developer to recall what the task inquired and re-learning the code during each switch.

4) EXTRA PROCESS
Each developer had a different definition of what it meant to be DONE. We found inconsistencies in the steps each developer took to complete a task. Some steps were not needed.

KANBAN
As we researched how to solve these issues we stumbled upon Kanban. Kanban is a lean software development methodology that helped us address the issues described above.

In subsequent posts I will describe Kanban in more detail and how we went from Scrum to Scrumban (a Scrum/Kanban hybrid) to Kanban.