Skip to main content

Applying the Toyota Kata

Last year I got to attend a workshop on the Toyota Kata by Hakan Forss and I could immediately see how it could be useful but I didn't have an obvious place to apply it until recently.

So what is the Toyota Kata? I see it as an alternative to retrospectives. It lets you define a collection of goals and run experiments to see if you can get progress towards that goal. Unlike retrospectives you can define goals that may seem distant (release to customers on every passing commit), may be simply something you want to maintain (have zero bugs in production) or be impossible (have zero wait time in moving a story from backlog to done). Once you've built this collection of measurable goals you decide what you're going to try and your expected outcome (we will to TDD and have 50% less bugs in production). You can define what the period is before you check in again and decide on the next step. But as with anything Agile; shorter is better. You can work it into a normal two week scrum cycle or if improvements are important enough then spend a small time on it every day. Next time you get together you can assess how the experiment(s) did and what you want to try and do next.

I really like how it's focused on doing small experiments rather than committing yourself to something to fix the problem immediately. Especially for those big issues it frees you up to try anything because you'll know soon if it helped and can try something else. With normal retrospectives it can be hard to get people to conduct experiments.

So my team recently went from doing 2 week sprints to a Kan-ban style flow of work. I had some concerns that it could lead to a range of problems and wanted it to be a positive change, So we figured out some measurable goals where we wanted improvement and things we to maintain. The improvement ended up being focused around cycle time as I felt sprints encouraged us to get things done because a sprint was ending even though it's an artificial deadline. If a task lasted more than a sprint we were able to quickly see it as an issue. Other measures were around velocity (measured in weeks instead of sprints) and team comfort (do they like the change or would they rather go back).

So far things have been great. Our cycle time is getting better and everyone is comfortable with the process. It's not a clear winner where people love the new process over the old. And our goals for cycle time seem lofty compared to what we ended up measuring. But it's given us a structure to keep experimenting and keep chipping away at these things. I absolutely would recommend it to anyone facing issues they feel cannot be resolved in a normal retrospective cycle. It can compliment or replace retrospectives as you see fit.

Popular posts from this blog

When Agile is not common sense

It's been about 8 years since I got my Agile training from James Grenning and started an Agile Pilot with my team. Right from the start I was super keen and got people practising TDD and Pair Programming even though I didn't really know if that effort would pay off. I just knew we had lots of problems with the old way so I wanted to embrace the new.

So I'd run my own little sessions with the broader team in Sydney sharing Agile concepts and ideas. Giving us a chance to discuss things and keep learning long after James had left. But often I would present new ideas and a few people in the group would respond "oh of course, that's just common sense". Initially I thought it was great as they were embracing these ideas as valuable even though it was not what we were doing before. But after a while I started to get frustrated because they we're not really listening. If some small part of a concept fit nicely with their "common sense" then they took th…

RestFixture

So most of the tests I'm writing now in Fitnesse are using RestFixture. Being able to do all this black box style testing has helped me get a lot of tests up and running without having to change the existing code base. Now I've taken a step future with my own little fork so I can use scenarios and build nice BDD style scripts. But first I want to give me own quick guide to using RestFixture

Step 1: Installing
You can dive straight in by grabbing the latest jar files for RestFixture here https://github.com/smartrics/RestFixture/downloads
If you know what you're doing can get the nodep version to work nicely along side other libraries you may be including in Fitnesse. But I grabbed the 'full' version and unzipped it into a RestFixture folder alongside my FitNesseRoot folder.
Step 2: Write your first test
I took advantage of the built in Fitnesse api as a basic test and wrote a page called RestFixture with the following contents
!define TEST_SYSTEM {slim} !path RestFix…

Setting up Fitnesse on Ubuntu in 7 steps

Some pretty basic steps but just to make sure it's here for everyone to see. Setting up fitnesse and running the jar is easy enough. Just go to http://fitnesse.org/ and get started and do it on your desktop just to see it in action. But for me that wasn't good enough I wanted it to run as service on ubuntu.

I stole a few tricks from how ubuntu runs jenkins and setup fitnesse a similar way.

1. Create a user and group for fitnesse (optional)
I didn't do this because I wanted tomcat, jenkins and fitnesse all running as the same user. Call it laziness to avoid any permissions classing but it doesn't change the process that you need to create or choose what user you're going to make it run as. Don't make it run as your user or root!

2. Download the jar file and place it in /usr/share/fitnesse
Make the folder too of course. It can belong to root as long as the fitnesse user has read access

3. Create the folder to run in at /var/lib/fitnesse
Fitnesse user needs write…