Working with a team recently after some initial Kanban training we used the following questions to help us focus and get our Kanban system up and running.
The first question
- Why do we want to use Kanban? – If we can’t answer this stop, and it needs to be better than because we have been told to
Questions around the Work and how it flows
- Are there different types of work that you deal with?
- What happens to the work? -This is where we mapped out the flow of the work
- How are we going to limit work in progress?
- Do we need to respond differently to certain types of work? -different classes of service
Questions around our policies
- When can work move into columns? – Entry/exit criteria
- How does work come into the system? – Who puts work in the input queue/how often?
- How does work get released from your system?
Questions around feedback mechanisms
- How are we going to get feedback on the work from customers/stakeholders? – feedback on the what
- How are we going to reflect on the process? – feedback on the how
- How do we ensure that we are building quality in? – how do we get technical feedback?
These were some simple starter questions to get us started, however we expect that the answers to these questions will change as we continually improve and as your world changes.
Another long trip over to the states this week to attend the Scrum Coaching Retreat in Phoenix. My main reason for attending is that I am involved in bringing the event to Europe for the first time in 2014.
The retreat is unlike a conference or gathering, which sometimes only scratch the surface on topics; here you will go deep into issues that you are passionate about.
I am also hoping to get involved in some improvement initiatives in the CSC programme, either:
• An improvement of the application process, or
• Looking at how we better support coaches on their development path
That second issue is likely to be a central theme for the first European Scrum Coaching Retreat in London from 9th to 11th June 2014. Some information about the event is already here.
And you can register here, to get an early bird price
We will have our own website up shortly. I will keep you posted on anything interested that happens in Phoenix.
Recently I was working with a Scrum team who were struggling to get things to Done at the end of a Sprint, they already knew that they had a bottleneck getting things tested, but didn’t really know how to resolve it. They are certainly not unique in having had this struggle, and it was really costing them partially done work, tester working long hours at the end of the Sprint, a code freeze 3 days before the end of the Sprint. I also sensed frustration because they felt things couldn’t improve unless they changed the ratio of developers to testers (6 to 1). That wasn’t going to change immediately and I do like to focus the team on the art of the possible, so what could we do?
I knew I needed to do a little bit of education on dealing with bottlenecks, therefore I gave them a 10 minutes intro on the 5 focusing steps from the Theory of Constraints and then we did a retrospective to come up with some specific actions for them to take as a team.
Identify the systems constraints
The team had already identified that the tester in the team was overloaded with work, especially at the end of the Sprint. Unfortunately the tester was also starved of work in the middle of the Sprint.
Decide how to exploit the system’s constraint(s)
In this context this basically means looking if anyone else in the team can do some of the testing work. This is also a subtle way of introducing the team to the idea of taking a whole team approach to quality, without telling them that’s what they need to do. The kind of things that came up in the retrospective here were:
- Look for opportunities for other team members to help out with the writing and running manual tests. (The team did not yet have any automated acceptance tests)
- Other team members helping out with setup activities, i.e. environments
- Production of tools that would allow the testing work to be done more effectively
Subordinate everything else
For us this meant looking at changing the way we work to get work to flow more evenly. In this area we were looking at how we breakdown work and work more collaboratively as a team:
- Break down items into smaller chunks so that they can get into test earlier
- Write stories so that they are testable, so that parts of the story could be tested earlier
- Create opportunities for earlier feedback from test, reduce waste of fining errors on test environment
- There is no such thing as a bug in a Sprint, its just work that needs to be done before the Story in Done
- Limit items team is working on (Items in Progress), team members swarm on items
- Investment in Automated Acceptance Tests, which would allow the developers to take some of the testing burden
Elevate the system’s constraint(s)
This is looking at how we can increase capacity or capability in the bottleneck area. Which for us would mean hiring more people with the testing skills or providing some kind of training (be it formal or on the job). You should only be thinking about this if you have tried everything you can think of in the previous two steps.
What the team agreed
The immediate things the team agreed to do were:
- Breaking stories down smaller and also looking for opportunities to commit code regularly, as soon as something can be meaningfully tested
- Involving the tester in design activities, so that the team could design/implement with testability in mind, also as a result there was less of a handover
- Regular demo’s to the tester and Product Owner, whenever there is something to show
- The tester would continually ask “what have you got to show me?”
- Toolset to support Testing Diagnostics
It wasn’t agreed in the retrospective but subsequently they also started to get other team members helping out with testing tasks as well.
As a result of these actions, the code freeze was no longer necessary and the test activities were more evenly spread throughout the Sprint, they had less partially done work. So this is a good step in the right direction. To take it to the next level the team will need to focus more on swarming and investing in automated acceptance testing. If they can start to do that over their next few releases, then the perceived issues of the ratio of developers to testers may become a mute point, as the team adjusts its skills and practices to be able to deliver high quality work.
I have found that supporting people using a Kanban approach can be very rewarding. The people I work with are generally passionate about what they do, therefore giving them tools that will help them evolve their way of working has met with enthusiasm.
For those people who are continually saying “we don’t want to throw the baby out with the bath water”, then Kanban could be a good starting point to improve the way they work.
I have also started running an introductory Kanban training course, typically with training I like to stay out of context to ensure that people understand the concepts. However I am finding that with Kanban it such a great learning opportunity to put aside some time at the end of the course to apply the practices directly to attendees own context.
I use the sailboat retrospective as an activity to gather information for Sprint Retrospectives, Release Retrospectives or even when I go in as a coach to find out where teams are. It is a fun way to gather opportunities, risks and problems.
I believe I may have been inspired for this retrospective by Innovation Games Speed Boat game used for Identifying features that are holding you back.
I draw a picture, you don’t have to be an artist just see below:
The idea here is that the team are on a boat. On the right hand-side is the Promised Land it is the best development environment they can imagine: an effective team who can take pride in their work, happy customers, opportunities for learning and growth (I usually get the team to create some kind of Vision for what the Promised Land looks like). However there are anchors that are holding them back, stopping them making progress towards the Promised Land (These are the problems). In front of them there be pirates, rocks and other obstacles which could stop the team/organization getting to where it needs to be or even sink the boat completely (These are the risks). There are however opportune winds, things in the organization that we can take advantage of to fill our sails and navigate a course to the Promised Land (These are the opportunities).
So ask the team:
• What are the opportune winds that will help us propel our ship to the Promised Land
• What are the anchors that are holding us back
• What are the rocks and pirates that can sink our ship (or at least do some damage)
One problem, risk, or opportunity per sticky and ask them to write clearly. I get them to do this individually so that everyone gets to contribute.
5-7 minutes to individually brainstorm
Allow time for each person to go up and place their stickies on the picture while the others listen.
You can then get them to organize/filter them however you want. Before moving onto driving out some actions.
Recently faced with the challenge of getting 136 epic stories prioritised fast with a group of stakeholders before the team started to estimate, we tried something that was new for me, using an affinity approach to prioritise.
Often that initial prioritisation of a Product Backlog can take a while as you try to assign value to each item or discuss the relative benefits of each story. However we had a team who were ready to go with estimating and we wanted some notion of priority, so that the team could focus their efforts correctly when estimating. Therefor we decided that we didn’t need business value associated with each item, that could come later, instead a prioritised list would be sufficient.
We planned to use affinity estimation to T-Shirt size the Product Backlog, so we thought why not use that kind of idea for this initial pass at prioritisation. We were able to get all 136 stories prioritised within an hour, with 5 stakeholders participating.
Here’s how it went:
The Product Owner introduced a story and placed it on a table. The next story was then introduced and he said if he thought it was higher or lower priority, if it was higher priority it was placed on the left, if it was lower priority it was placed on the right. At this point discussion would break out and an opportunity given for others to move the story. Then another story would be introduced and placed in relative priority to what was already laid out. Some stories might bob around for a while, but eventually they settled down.
We had time-boxed the activity to 1 hour and started a little late, but by the time we had a dozen or so stories the space on the table started to take on a life of its own, and now we had a baseline the pace picked up. There was now a group of high priority items on the left, some stories that people were talking about medium priority were in the middle and the low priority ones on the right. As the number of cards grew the cards started to be prioritised vertically as well as horizontally, still all relative, but such that the highest priority card was in the top left corner and then priority went down the column and then onto the next.
As we did this the interesting thing was that people started to discuss what it meant for something to be high priority, many of the Epic’s would need some part of them delivering to constitute a minimal viable product, but what made us want to prioritise something high up the list? It was good to let that come out rather than define it up front.
Starting from the left we then drew lines where we thought there was a step change in priority, and classified them as we had started to discuss as high, medium, low. If we had taken more time we could have been a bit more sophisticated and assigned relative numbers to each story representing the value. We ended the session with all 136 items prioritised, each with a unique priority, ready for the team to estimate.
Prioritisation does not end here, but this was a very fast way of getting an initial prioritisation, and it certainly helped start the conversation about Product Backlog priorities.
Final picture above is of me and the Product Owner, note the Vision, which is visible stuck to the TV above our heads.
Some challenges that I have encountered as an Agile Coach working in large organisations adopting Scrum and how you could approach such a scenario.
We want to adopt Scrum, but we are not willing to change anything
There is often a belief that brining in Scrum is going to be just a set of new practices for the development team and they can get benefits without changing anything. I have discovered that it is best to address this one early with the organisations senior team, otherwise they will be wasting their time. So education is important, a workshop with senior stakeholders usually does it, just getting them thinking what it will mean for the organisation to deliver working software in vertical slices rather than building it in layers, what will it mean for the organisation to have dedicated teams. These initial workshops help me and the client understand if they are ready for Scrum.
There can be only one
Different change initiatives sponsored by different members of the executive team, this can be particularly painful if you are working with the organisation to move them towards agility, but you discover some other change initiative designed to get control by introducing more management and more structure. There can be only one change initiative, therefore work to join them up, however if they are in conflict work with upper management to see what is most important for them now, sometimes organisations need to take a step back before they are ready to move forward. Just make sure they have the information to make the right decision for them.
The Agile antibody
Sometimes there will be executives who say they are behind Scrum, but behind the scenes they will be fighting a rear guard action to protect their domain, maybe even trying to kill off Scrum inside the organization. This is not always obvious at first, but it will become so when teams struggle to work with their area of the organisation. We obviously want them onboard, so an approach I would use here is to try help them understand how they could benefit from a new world using Scrum. For example the head of testing may be interested to know how in Scrum testing is central to the development process, that they would have much more scope to influence the quality of the products.