Speaker Series

No comments

A lot of popular folks come to Yahoo! and hang out. There are experts, authors, musicians, luminaries, – giving talks, running workshops, attending conferences, performing, and being a presence on the campus.

Our own group has had people in. I’m not sure who they all are. I hear there was Mary Poppendieck, who’s suggestion of eliminating waste may have been interpreted by a few as meaning some roles could be considered redundant. Seems a shame.

Since I’ve been around, there has been two people we’ve brought in. The first was Jim Coplien, who shook things up a bit. People are still referring to his presentation on agile architecture. We have it on video some where. I wonder if I can make it public? Worth finding out and better than me writing about it now.

Today David Anderson came in, and talked about industrial-strength, agile complimentary, product development system. This system is based in the Theory of Constraints (TOC), where customers pull value through the system. It takes advantage of mathematical fact and scientific backing in queuing theory and Little’s Law. The system is monitored real-time with an ever-changing visual board of all work in progress. Product is developed in a cadence, where success happens with enthusiasm. David calls it a Kanban System for Sustaining Engineering, and with a subtle change, it is a system for software engineering.


David Anderson Presentation Part1

David Anderson Presentation Part2


Slide Deck in the video

We have a few people here that blog, and some are listed in the blogging guidelines as experts. I sent a note out to ask see if they thought I was within the guidelines. Here’s what I got back from JR Conlin:

Hey Aaron,
The fact that you’re asking puts you in a reasonably small group of folks. The fact that you read the guidelines puts you into a smaller one.

You’re doing the right thing.

Looking at the posts on your blog, i don’t see anything that’s a red flag. (heck, I don’t see anything that’s even lightly yellow or a lovely shade of chartreuse.) Even the most recent work related post at:

http://aaron.sanders.name/lean/finding-and-releasing-a-product-development-bottleneck

discusses things from a methodology rather than “Bob was a total idiot”.

* You’re thinking about what you’re posting.
* You’re not posting up something that will come back and haunt you (my boss, the head of YDN, can tell you a nice horror story about that sort of thing and how the news folks can completely goof up regardless of your best efforts to fix it.)
* You’re not posting up something that you shouldn’t (e.g. Jerry was talking the other day about how much PropertyX sucks and is going to be shut down next month…)

I’m happy to keep an eye on things, but for the most part, i wouldn’t sweat it too bad. There are folks here that are doing far worse things than you are.

Still, if you have any questions, don’t hesitate to ask.

Oh yeah, and have fun.

Recently on the kanbandev Yahoo! group, there were some messages going back and forth between Corey and David on the differences between a retrospective and an operations review.

I think it was decided that the decoupled Operations review is more of a presentation, where the retrospective is a focused discussion. Corey was relating the ops review as multi-team stand up in the large, and then it sounds as if the retrospective would be follow-up work for specific teams.

At any rate, here’s David’s explanation:
Anatomy of an Operations Review
Operations Review
Chapter 14 from Agile Management: Operations Review

I am an INTP

1 comment

Introverted iNtuitive Thinking Perceiver

INTPs organize their understanding of any topic by articulating principles, and they are especially drawn to theoretical constructs – such as the MBTI.

INTPs are most likely to find interesting and satisfying those careers that make use of their depth of concentration, their grasp of possibilities, their use of logic and analysis, and their adaptability.

INTPs are about 1% of the general population, making this one of the rarest of types.

What are you?

An article in the Scrum Alliance.

With iterative software, we talk about doing all the necessary functions, such as Design, Develop, Inspect, and Release, within each cycle to increment the value of available software to the customer. Our team divides the things in progress in to these categories, and has a finite amount of slots available to each category.

Friday after the daily stand-up found me, the Product Owner (PO) and the Lead Developer discussing a constraint to work. The Design category is done with its work, but the ready slot for Development is full. The team cannot pull any work in to this area.

The Product Owner wants to give more work to the Designers. I point out this is a push and we really want to refrain from dispatching work out to individuals. Staying focused in on the Designer area, the PO wants to know why we cannot just add more ready slots for Design to put finished work in to, and allow more work to be pulled in. We discuss how the system is designed at limiting the amount of things in process, and this may not be the best idea.

Suggesting we pull back and look at the whole board, we noticed that it is Development that cannot pull more work in to their area, because they are completely filled up with work that is not finished. There is one gnarly task to fix all high-priority defects. It is a worthwhile goal, but perhaps too costly to try and battle them all.

The Lead Developer is watching our discussion and chimes in with something another senior developer has brought up before, batching up the top 5 and parking the rest. These are lower priority than other queued-up feature work. It is pointed out that really, not everybody is working at fixing defects as wanted. There is other work in progress in the Development area.

This is completely agreeable to the PO and so the work is now to enumerate those top 5, which will also help with the Inspection and Release areas to deal with a manageable batch size, too. Soon this should relieve the constraint and allow Development to pull in the Design ready work, freeing Design to concentrate on pulling in new features to work on.

It was so easy then to point out local optimization. Now with some humor and looks relieved of their tension we can chuckle about optimizing one person in Design, instead of dealing with what is really slowing things down at the moment. We part ways with a better understanding of what is going on. Happy to help in making an improvement, we know throughput will soon be on the rise.

A little while ago I received the following email:

Dear agile bloggers,

Your recent blog post, reference or article has been referenced in the latest Carnival of Agilists – the blogroll pointing you to some of the latest thoughts in the agile community. The carnival is a biweekly blog posting rotated through the agile community to point others seeking to learn more through agile practitioners.

The source for the carnival posting this week is at http://trailridgeconsulting.com/blog/?p=99

It is also referenced at the Agile Alliance Carnival located at http://www.agilealliance.org/show/1670

Thanks for your contributions and feel free to spread the word through additional references. If you would like other recent works referenced, want to recognize someone else’s work, or you would like to host the carnival sometime, please respond to this email address (agilists.carnival@gmail.com).

Pete Behrens
pete@trailridgeconsulting.com
One of Many Carnival Hosts

Kanban System for Software Engineering

Introduction

Kanban (in kanji where kan, means “visual,” and ban, means “card” or “board”) is a concept related to lean and just-in-time (JIT) production. Kanban is a signaling system. As its name suggests, Kanban historically uses cards to signal the need for an item.

Kanban is a pull system that determines the supply, or production, according to the actual demand of the customers. In contexts where demand is difficult to forecast the best one can do is to quickly respond to observed demand. This is exactly what a kanban system does, it acts as a demand signal which immediately propagates through the entire chain.

Definitions

Cycle Time – The difference between the date any one thing is placed in the PO queue and the date that thing is released in to production.

Median Cycle Time – Cycle time in days within two derivations. “Your average wait from this point is between <x> and <y> days.”

Touch time – Amount of time spent working on any one thing.

Thing – Anything on the board which signifies something someone is working on. (bug/feature/enhancement/maintenance/etc)

Things-in-process (TIP) – Total of all things in each queue, except for the PO.

Minimal Marketable Feature (MMF) – AKA User Story. A feature that is minimal because if it was any smaller, it would not be marketable. It is marketable because when released in to production, people would use the feature.

User Story – They are written in the format of: as a <user> I want to <perform an action> so that I can <get some benefit>. Can use INVEST to also test if it is an MMF. Before it becomes TIP, the team agrees upon what the Acceptance Criteria are.

Acceptance Criteria – The constraints and conformance of a User Story. Agreed upon parameters that when met, helps ensure this feature conforms to the customer requirements.

Throughput – TIP/cycle time

Slot – Any one position in any queue. There are currently 5 slots in the PO queue.

Roles

Product Owner
A single person which must have final authority representing the customer’s interest in backlog prioritization and requirements questions. As the customer proxy, this person must be available to the team at any time. Responsible for understanding all the business rules for features. Whenever the team is unsure which way to implement a business decision, this is the person to go to first to make that decision of how best to enforce the business decision. Not responsible for any implementation work. The person with whom to check Acceptance Criteria with before MMF TIP leaves a station.

Challenges of being a product owner:

  1. Resisting the temptation to “manage” the team. The team may not self-organize in the way you would expect it to. This is especially challenging if some team members request your intervention with issues the team should sort out for itself.
  2. Resisting the temptation to add more work after an MMF is already in progress, or add more slots when the system is full.
  3. Being willing to make hard choices during a planning meeting.
  4. Balancing the interests of competing stakeholders.
Scrum Master
Responsible for removing constraints within the process. Identifies and removes any blocks from the team’s ability to work. Enforces the rules of the process and those the team has agreed to. Resolves conflicts; facilitates team decision making and problem analysis when necessary. Protects the team from outside influences and from attending any unnecessary meetings.

 

Product Developer
Anyone responsible for TIP.

Acronyms

  • MMF Minimal Marketable Feature
  • CM Configuration Management
  • PO Product Owner
  • TIP Things in process
  • INVEST Independent, Negotiable, Valuable, Estimable, Small, Testable

Metrics

  1. Median Cycle Time
  2. Throughput = TIP/cycle time
  3. Daily count of P1 and P2 bugs not resolved
  4. Daily count of bugs not verified

Queue sizes

Queue sizes are subjectively derived based upon team size, and Median cycle time. Each queue, except the PO, has one slot for signaling a thing is finished and ready to be pulled in to another queue. Each one also has an expedite slot.

  • PO = 5 for tip
  • UED/Markup = 2
  • ENG = 4
  • QA = 2
  • CM = 1

There is one ready slot for the UED, ENG and QA queues to signal this TIP is ready to be pulled in to another queue.

Process

Getting Things into TIP and on through to production

In the PO queue, the PO can rearrange what things are in which slot, and remove or add anything to any available slot. When some thing is placed in the PO queue, the team agrees upon the Acceptance Criteria. The date it is placed in the PO queue is recorded. At the bottom of the PO queue we’ll keep written the median cycle time. If something is an MMF placed in the PO queue, the PO has already determined that it is minimal.

Work is not assigned to people, the team accepts work into the next available slot in to the queue when they are ready to work on it.

When a slot is open and ready for some thing, it can only be pulled in to an available slot, based on which queue the team agrees it should go in to first/next. When work on the thing is finished for that queue, it goes in to the ready slot for someone in the next queue to pull it into an available slot in their queue.

Self-organization

Get Things Done

Work is not assigned to people. Work is not dispatched to someone who seems to be waiting and unsure. The Product Developers are committed to understanding what it takes to both engage in and accomplish finishing off TIP, as this is the product’s most urgent needs.

Releasing Constraints

At times, the system will slow down, or even come to a screeching halt. When this happens, Product Developers who are blocked on moving TIP and feel it is within their ability will engage in helping free up whatever is blocking their progress.

Other Interesting Work

Sometimes when the system slows, people will not have the ability to help release the constraint. When this happens, Product Developers are trusted to find other interesting work. This work could be in Career Development, Product Innovation, development process improvements, defect reduction or anything else the Product Developer finds to be interesting. The only requirement is that it is work that can immediately be put down when the system speeds up and moving TIP within the Product Developer’s responsibility is once again possible.

Kaizen

Kaizen(Japanese for “change for the better” or “improvement”; the English translation is “continuous improvement” or “continual improvement”).

Kaizen is a daily activity whose purpose goes beyond simple productivity improvement. It is also a process that, when done correctly, humanizes the workplace, eliminates overly hard work (both mental and physical), and teaches people how to perform experiments on their work using the scientific method and how to learn to spot and eliminate waste in business processes.

Generating and Verifying Acceptance Criteria

Whenever the PO places a new MMF card on the board, the team then decides what its acceptance criteria are. These are recorded and kept with the MMF. Before any feature can be placed in a queue’s ready slot, it must meet all the acceptance criteria.

Stand-up

This daily meeting will still happen at its scheduled time. The team will be asked if the board accurately reflects what is being worked upon. The team will be asked if there is anything that is slowing down or stopping throughput. After these two questions are answered by the team, the stand-up is over.

Measures of Success

  • Increase in throughput
  • Decrease in cycle time
  • TIP does not include defects

Visual tracking

  • TIP signal board
  • Average wait time for TIP to get to production
  • Weekly throughput
  • Bugs not resolved
  • Bugs not verified
  • Completed TIP

Tradeshow For Finished Features

Anyone may attend, and walk around the booths and check out what features have been released since the last tradeshow. This has typically been called the Sprint Review. This is to celebrate success of working software in production. People may wander through the area, getting demonstrations from the Product Developers responsible, at their workstations. Viewing the accomplishments will be other team members, stakeholders, and anyone else who cares to look at the great things being produced by the team.

Retrospective

After every second(?) tradeshow, the team will analyze this process and determine if improvements need to be made. Operations may be reviewed, as well as teamwork, and the product development process.

Regular Cadence

Between recording the cycle time and overall throughput, the team will know at what regular rate features make their way in to production. This will help to drive how often to have the tradeshows, and what can be planned for a set time, such as a month, or a quarter.

Whole Team Incentives

Finished features can be collected by the team and redeemed for rewards.

example:

  • 10 = Beer for the next Tradeshow
  • 25 = Lunch
  • 50 = Movie passes
  • 100 = Day off

Introduction

On September 25th I facilitated a Product-level retrospective. The purpose of this retrospective was to look back at how user stories find their way to production, and to find ways to shorten the process and increase quality.

The format of the retrospective was taken directly from the book Agile Retrospectives. This style can be used on iteration/release/product cycles. It breaks the meeting down in to 5 components: Set the Stage, Gather Data, Generate Insights, Decide What To Do, and Closing. There are many activities which can be used to help with each phase. Choosing the correct activities becomes much easier when you know what the goal of the retrospective is; putting all the pieces together and to reign back in discussion if it veers too far off topic.

Goal

Understand a typical user story’s journey from conception to production, so that we may discover ways to shorten the trip, while improving quality.

Set the Stage

Because it was going to be such a long meeting, to set the stage we ran the “ESVP” activity. Each person is asked to rate their self as either an Explorer(eager to discover), Shopper(browsing and hoping to get at least one good idea), Vacationer (checked out but glad not to be working) or Prisoner (forced to come) for being at the retrospective. We had a good mix between Shoppers and Explorers, with only one Prisoner. I forgot to mention at the break that coming back was voluntary and if that person so chose to return, was no longer forced to attend. When asked if there was anything in this data that suggests how the team feels about work in general, the answer (besides it only told us how we feel about the retro) was that the team is cautiously optimistic.

Gather Data

We did a value stream (process engineering) mapping exercise to look at how many steps a story goes through, how long it is worked on versus how long it waits. This was done in teams of four, each choosing their own story to map. The idea was to map out the most typical flow based on these instances to find the longest amount of waiting and discuss ways to shorten that, or to find steps that could be eliminated/refactored for efficiency. This was too much work for the retrospective and something that will happen as time goes on. We were able to discuss the various maps drawn and it helped when we looked at deciding what to do.

An attempt was made to take one of the stories and try and break it down in to smaller sizes that would still deliver customer value. The idea was to look at what could be considered a Minimal Marketable Feature, in as much that it is minimal because any smaller and it would not be marketable. This also did not happen, but will probably be an effort that we can immediately implement and came up in an action of what the team can do.

A short exercise was then run to demonstrate how limiting Work In Progress (WIP) can increase throughput. In the teams of four, 20 cards are given to one person and that person flips over all 20 and then hands them (pushes) to the next person, who flips them all, and so on around to the last person. Average time was around a minute to get each person to flip all the cards. At most times, there are 20 ‘things’ in process at any slice in time, with most people waiting to do their work. The exercise was run again, this time with the first person flipping a card, and then allowing the next person to ‘pull’ the card in to their area and flip it. At any one time there are 4 things in process, and the average time for everyone to flip them all was under 30 seconds.

Lastly, the questions were asked how many things were in process on the team, what the size of them are and if they have value to the customer. The answers were that around 70-100 things are in process at any one time, of highly varying size and all of them have value to the customer.

Generating Insights

We used the Force Field Analysis activity to look at Ways to limit the work in progress, and for shortening the value stream. The teams of 4 discussed what would support the idea, and also what may inhibit the idea. After this the whole team shouted out answers, while I wrote them on a huge sticky. Ideas were enforced by darkening lines underneath with arrows pointing to the middle. The big supporters for Limit WIP were: Don’t go straight to ENG for stuff, swarm on a smaller amount of features, include QA, have visual tracking. Inhibitors were: Too much process, too much switching, and high-severity production issues. For the Value Stream, the supporters were: Limit WIP and break features into MMFs. Inhibitors were: external dependencies and tech lead unavailable due to meetings.

Decide What to Do

Even I was reaching my saturation point by this time, and the activity planned of Circle of Questions seemed out of context. I tried to just blow by it (bad) and someone called me out to go through the list and pull out specific things to do. The team decided that visual tracking, formalizing hand-offs, breaking features in to MMF and swarming of fewer things would be the best things to do. The next question, naturally was how to do this, which I didn’t want to get in to straight away but wanted to answer questions. I should have stuck to my guns and put off answering until the next meeting as it was getting late and you could feel the low energy in the room. There was a healthy discussion about getting developers to run tests before checking in and I suggested a quick workshop/walk through, which was canned.

Closing

The activity planned for this phase was the Return on Time Invested (ROTI) where people vote on a scale of 0 to 4 as far as benefit received to time spent. We didn’t actually vote like that, instead going for a thumbs up/down vote. Almost everybody was at thumb sideways. For the thumbs-down people, it was asked what was needed hat they didn’t get. Keeping the language simple and not speaking in agile mumbo jumbo was called out, as well as getting to the point quicker. Less exercises, only doing 1/2hour weekly retros were also listed. I also wanted to ask those thumb sideways to up what the benefit was, but we didn’t get that far. Overall, I would agree and grade myself about a B-/C+ on the effort.

Next Steps

  1. Work with product to break features in to minimal, marketable chunks.
  2. Value stream analysis
    1. Look for largest amount of waste
    2. Look for unnecessary process
  3. Enable engineers to run the test suites and habituate the process

I find that a lot of times in the stand up, most people do not raise impediments. Do people feel this reflects badly on their performance? Because when they do, I see a reaction by the team to just brush it off. Something like this:

Developer states, “Yesterday I worked on the sensitive content module. I’m not quite done because I am still waiting on legal to review the verbiage, since it is so sensitive. So today, I’ll work on the uploading pictures module.”

Someone else on the team says, “Yeah, those people in Legal can be slow, I had that problem, too. Just be patient and hopefully they’ll get back to you.”

The Scrum Master says, “Thanks. Next.”.

What are the problems here? First off, sometimes blockers to work get embedded in the work that is happening, so extra care needs to be taken by the team, and especially the Scrum Master, to hear them. Secondly, there can be an inclination by other team members to brush it off, or try and solve the problem for them right then and there. That usually takes the form of, “All you need to do is… did you try… just wait…”. Finally, the Scrum Master does not record it, or ask if the people giving solutions would care to help the team member out, and never works on removing it. The same blocker can be reported for days, or more than likely never brought up again. The impediment is still there, just brushed away and turned in to that team member’s problem.

I think it is better if the Scrum Master is really listening to the conversation, recording down all impediments, and/or help facilitate a follow-up meeting with people that give suggestions for removal. During the stand up, the Scrum Master tells the team what blockers were lifted yesterday, which ones will be worked on today, and which ones remain.