Sunday, March 29, 2009

Burn-down charts: The Good, Bad, advice and alternatives

I’ve never completely accepted burn-down charts. I know they are a staple of Agile development and I’ve even used them myself but I’ve never been completely happy with them.

The reason I’ve never been happy with them is that they require and initial figure to burn-down. You need an initial number - in hours, days, points or what ever - to seed the chart and then you burn off some amount and you see the line falling.

The problem is that initial figure, it has to come from somewhere. In generating that figure you need some description of the work to be done, i.e. requirements, and you need some estimation of how long it will take. Both known requirements and estimates have their problems.

Burn-down charts were popularised by Scrum where there are, strictly speaking, two types of burn-down chart: the product burn-down chart and the sprint burn-down chart. Since in Scrum the work to be done is fixed for the iteration (barring a major issue) the requirements are pretty well fixed so that isn’t s a big issue, and the estimates are the best known at the time which isn’t too much of an issue.

In a 4 week iteration, with a Sprint Goal I can see were the Sprint burn down has a place. But if the iteration is 2 weeks or 1 week I’m not sure it is worth the trouble. And if there is no Sprint Goal then what does it show? Progress against a collection of tasks?

My bigger issue lies with the Product Backlog burn-down chart. Because the items haven’t been committed to a Sprint then there is every possibility they will change. Indeed, the more Agile you are the more likely they are to change.

However, once the estimate gets out there, once it becomes known the team estimates the project at 100 points of work people start ask questions when the number changes.

There is also an inbuilt assumption that there will an end to the development work. When the thing under development is a Product or a Programme development work may continue for a long time, perhaps ever. So its wrong to talk about end dates - and also wrong to talk about projects because projects, by definition, have an end date.

Then there is the estimate: it is made when there is little information known about the requirements, the system or how much work is needed on the code. So the estimate is going to be pretty inaccurate. The best that can be said is that its a finger in the air.

But, the estimating process normally takes a lot longer than sticking a finger in the air. If you involve the whole team it takes even longer. If you don’t involve the team then its the estimate of some “leadership” which runs counter to the principle of self-organizing teams.

More detailed estimates also leads you into design decisions - because how can you estimate if you don’t know what you are going to do? However, its best to delay design (and other) decisions until the last possible moment because the information on which they are based can change.

The first Agile teams I coached skipped burn-down charts altogether. Then one day a colleague on another project (yes, you Ed), told me his Project Manager felt a lot happier now there was a burn-down chart in place for his work.

And thats where much of the value of burn-down charts. They give Project Manager types something to stare at. Burn-down charts look enough like a Gantt chart to reassure people.

All that said I use burn-down charts. Yes they are useful. They are genuinely useful when you have a piece of work with a defined end condition, i.e. a genuine project.

Of course you have to overcome the estimation problem. The trick is to accept estimates are just that, estimates, do them fast, don’t worry about them. Then do plenty of statistical tracking. How much new work is found each iteration? How much is removed? Then project forward best and worst case.

I did this with a team last year. At first we had a burn-down chart with but I refused to give a end date. After a few weeks we had data on how fast the team was working, what new work was being found and how much work was being removed. From this I could forecast a best case and an worst case end date.

That’s important: there is no definitive end date, just a range of possibilities. The more data you have the more accurate the estimate should be but its no guarantee. Giving a range of dates might not make you popular but it ensure people remember there is no certainty.

Burn-down charts are not the only tool for tracking team progress. Some people prefer burn-up charts. At first I thought this was for psychological reasons - up is more positive than down - but its also easier to add more work to the top.

So, if a team is doing 10 points a week on a 100 point project its easy add another 20 points to the chart and show the team now have to get to 120.

Taken to the extreme you get cumulative flow charts - often used by Kanban teams - shown in this diagram:

These show both the total work done and the total work to-do as constantly rising lines. If total done ever matches total to-do then its game over. This technique is open ended, the work is ongoing. And it is only necessary to estimate a little bit ahead.

So, if you do use burn-down charts:
• Consider using burn-up charts or cumulative flow diagrams
• Don’t make estimates too detailed; don’t worry about over estimating, it will all come out in the wash anyway
• Certainly don’t spend too long making detailed estimates
• Track work done, work discovered as you go along and work removed; you don’t need to put these on the charts but keep the numbers so that you can...
• Use statistics to project a range of end dates
• Don’t let anyone thing a burn-down chart is a substitute for a Gantt or Pert chart

And when people demand a done date remind them that the old method didn’t give them a done date either. Yes it gave them a date but it was never the actual date.

Sunday, March 22, 2009

BCS Kingston & Croydon - Tuesday 24th

Back in February the snow came down and the evening talk I was due to give to BCS Kingston and Croydon was postponed. (The snow closed Kingston University which was due to host the event.)

Well it was rescheduled and is now happening this week on Tuesday 24 - Lean Constraints Action! on the BCS Kingston & Croydon site. Admission is free and there is no need for pre-registration this time.

Sunday, March 15, 2009

10 things to know about Kanban software development

1) Kanban software development originated by David Anderson. Many of the practices and heuristics have been seen on other Agile teams before but they were first described as a cohesive whole by David.

David’s innovation was to explicitly limit the work in progress. This had been done by other Agile teams before but in Kanban there is a well-known limit on the number of work items which may be worked on at one time. The limit is usually quite low, in the teams I have worked with the limit is approximately the same as the number of developers on the team or slightly less.

2) Many Agile teams use a white board to track work during an iteration. Typically this is divided in to three sections: “To do”, “In progress” and “Done.” When a physically limit to work in progress is imposed it becomes useful to split this down further. Work in progress could be: in development, in test, in analysis or in other states. Each of these may have its own limit.

Thus, the second innovation in Kanban is to split the board into many other columns. Sometimes buffers are placed between the limited columns, these may be labelled “ready”.

3) The Kanban test: In November 2008 on the Kanban mailing list, I asked: “What is the defining characteristic of Kanban that make”, in response David Anderson said:

“For me it is simple... Are you limiting work-in-progress? Are you signaling to pull work from an upstream process? If it is a WIP limited pull system, it is kanban!”

Which give a test for Kanban and is pretty much points #1 and #2 above.

4) The Kanban approach was summed up by Karl Scotland when he said (on Kanbandev again):

“a subtle difference between kanban and typical agile processes such as Scrum. Scrum focuses on being agile which may (and should) lead to improving. Kanban focuses on improving, which may lead to being agile. However, being agile itself is not important - it just happens to be the best way we (or at least I) know at the moment.”

5) The best place to learn more about Kanban is the Kanban dev Yahoo list.

6) There are currently no books on Kanban software development. There is one that comes close, Corey Ladas ScrumBan - Essays on Kanban Systems for Lean Software Development. I’ve read this book and I’m not rushing to recommend it.

7) Kanban derives more directly from Lean Thinking and Lean software development then many of the previous Agile techniques. Once you apply the innovations in 1 and 2 above just about everything else follows.

8) Kanban teams focus more on work flow, the time it takes to get work from one end of the pile to the other. In the extreme Kanban teams dispense with work estimating (which do not add value), iteration planning meeting (planning is an ongoing process), fixed release dates (they release when it is ready) and scheduled retrospectives (they have a stop-the-line approach to address a problem when it is seen).

9) Originally the Japanese word Kanban is two words kan and ban; kan means visual and ban means card. Like many people I talk about Kanban cards but strictly speaking I’m duplicating myself.

In Lean systems the cards are used to pass information, to signal when limits are reached, to signal an out-of-stock situation or some other trigger for action. Thus Kanban has come to mean more than it literal meant, and now the word is used as the name of a method it means even more.

10) Whenever I blog about Kanban I get more hits on this blog. It seems people want to know about Kanban. Actually, I just discovered that at the moment this blog appears on the first page in Google if you search for “Kanban software development.”

The lesson: Kanban is still new and still in its infancy.

For my previous description of Kanban see Making sense of Kanban (and some doubts), Agile and Lean - the same but different, Notes on a Kanban software development experience and there are some other pieces too if you search the blog.

Monday, March 09, 2009

We're all Agile now, next stop Operational Excellence

In their keynote at XP Day last December Dan Jones and Marc Baker talked a little about the attempts to bring Lean to the National Health Service. One of the issues they mentioned was that while everyone “could talk the language”, many people had been on courses and many people agreed it was good very few people wanted to make the change.

I recognise the scenario and its one that is on the increase - and not just in the health service.

When a company asks me to help them “get Agile” I start by talking to people. At first I avoid mentioning Agile, we talk about their team, their company, the problems and opportunities they face, the frustration and the changes they want to me help make. I increasingly find that these people say something like “I’ve worked Agile before”, “I went on a course”, “We are quite Agile ... we get pulled in many different directions” or “We’re trying to be Agile... we do stand up meetings”.

There is a debate going on - its been going on for a while but its louder at the moment - about just what “being Agile” means. Lean is being talked about more, either because people want another buzzword or because the true roots of Agile are now clearer.

Few people want to stand up and say “We’re not Agile” - its like saying “I don’t like Apple Pie” or admitting to an embarrassing medical condition. While is hardly surprising it is also a defence mechanism, and it can be a resistance to change.

Increasingly I don’t want to use the word Agile. The word brings a lot of baggage - pair programming, Scrum Master certification and all the rest. Once you use the word people start to have assumptions about what you are going to do.

Sure, many of those assumptions are reasonable: I probably am going to suggets they do visual planning and tracking, I probably am going to send the developers on TDD courses, and I am probably going to organise morning “stand up” or “Scrum” meetings.

But I’m not going to force pair programming on anyone, I’m not going to dogmatically demand 30-day sprints and I’m not going to force testers to write Java.

What I’m more interesting in is creating and instilling an improvement culture grounded in learning. My aim is to improve the way people develop software and run the company today.

So what word do I use for this?

I don’t think there is one. I’m starting to talk about Operational Excellence in Software Development. While that might sound like a bunch of management speak I think it is a better description of what I am trying to achieve.

But this term too has problems.

First it is management speak and a lot of people hear the word “excellence” and think “how can we run before we can walk?” - they see their organization as such a mess that excellence has little or nothing to do with the fire-fighting they do everyday. So any manager which talks about “excellence” is clearly disconnected from the real world.

Second the keyword problem: we live in a keyword driven society, you search Google for a keyword, you SMS a single word to a service, you Twitter half a dozen words, your CV/resume is scanned by software looking for keywords. “Operational excellence in software development” is five words, and includes two expressions which will trigger a million Google hits by themselves.

(Before you ask OESD doesn’t work as a keyword, Old English Sheep Dogs for starters.)

Still, the thing I like about Operational Excellence in Software Development is describes what you want to achieve - what you want to build - not how you are going to build it. “Agile” could have done that once but it was never given the change, look at the Agile manifesto, its about how, not what. It was good at the time but the world’s moved on.

Tuesday, March 03, 2009

Making sense of Kanban (and some doubts)

As regular readers will know I’m a fan of the Kanban software development process championed by David Anderson. However it has to be said that the jury is still out on Kanban.

I’ve come to the conclusion that one of the dangers with Kanban is actually one of the reasons I like it. To properly implement Kanban you need to create a learning culture, there really needs to be a drive towards learning, change and improvement. Kanban raises the importance of understanding and creating a learning organization. Let me explain...

Depending on your point of view, Kanban might be:
a. The first second generation Agile development method
b. A collection of common heuristics
c. Dangerously unAgile
d. None of the above (a-c)
e. All of above (a-c)
f. Just another marketing term

Over at the Peripatetic Axiom blog Keith Braithwaite was voicing some doubts last week.

I had lunch with a Scrum trainer recently who commented “There’s nothing really new there, its stuff people have been recommending for a while”. I’ve said some similar myself - I find Kanban as described fits better with the way I’ve been coaching and running Agile teams for five years.

But then, isn’t that where Agile itself started? - people collecting heuristics and making sence out of them?

The Kanban community is not ignorant of some of the issues, Karl Scotland has a recent blog post about not mistaking Kanban for waterfall.

I have to say, some parts of Kanban worry me. For example, I’ve been telling teams for a while to think management by routine, the drum beats you have a planning meeting, a drum beats again and you do a demo, and so on, it all happens in a predictable fashion. So dropping iterations gives me the willies.

Keith’s point about batch size is well taken. Its all very well to talk about Minimally Marketable Features (MMF) but sometimes what the business thinks of as a MMF is a pretty large project in its own right. I remember one customer who’s idea of an MMF was “Works on Mac” which was a pretty major piece of work before we started to even consider the design limitations imposed, and the ones the engineers dreamt up.

Perhaps one of the reasons so many Kanban success stories involve maintenance teams (I have one too, I promise to publish it soon) is because bug fixes make nice MMFs.

However I don’t think this problem is confined to Kanban. All the Agile process suffer with a version of it. Scrum encourages teams to focus sprints on some meaningful goal, basically an MMF at the sprint level. The work breakdown, from business feature to developer tasks is a central plank of Blue-White-Red Agile.

I’m not doubting that teams can come up with small, non-bug fix, MMFs, I just think its difficult. Some technologies make it easier than others, e.g. its easy to come up with an MMF if you are coding a Ruby on Rails website and much harder if you are coding a C++ shrink-wrap legacy app.

Its also a sign of team maturity - both the development team and business team. The more experience the development team is the more likely they are to come up with a work breakdown were each item makes a meaningful contribution to the overall goal and delivers value to the business. It helps if the teams management is good at getting the team to look at options before deciding on what to do.

The business also needs to be experienced in both identifying small deliverable elements and they need to trust the development team. Rather than ask for the World (because they expect to be delivered Luxembourg) they need to be prepared to ask for Holland (and expect to get Holland).

There is something about Kanban that has troubled me for a while and I’ve not been able to put my finger on. Oddly its related to the fact that I’ve found teams pick it up more easily than Scrum based processes. And it goes back to Karl’s point about a superficial resemblance to waterfall.

I’ve finally worked it out: Kanban needs a culture of learning and improvement. Without a relentless drive to improve teams can fall back to glorified waterfall.

With Scrum, or XP, you know you are doing it because there is a lot of information on how to do it. If you start breaking a Scrum practice (without agreeing it in a retrospective) sooner or later someone will pull you up on it. Kanban removes that safety net.

At the moment the safety net doesn’t exist for Kanban. In five years it might be different because there will be more published on it. But in a way I hope not because the need to learn and improve is what I value in Kanban and its why it maps better to my model of development. A safety net might limit the learning and improvement.

The learning culture you need for Kanban is, perhaps, the result of it drawing more directly on Lean than some other Agile methods. In the absence of a safety net teams must think through problems and find their own solutions.

I think Kanban is here, it is here to stay and it will be found useful. But like other methods it won’t work in some places. With any Agile or Lean method there is an riding consideration:

There is no reason why one method is universally applicable.

Some times one method is more appropriate and sometimes another works better - horses for courses. Scrum is best in some work, XP elsewhere and Kanban in others. And all methods need to tailoring, sometimes you need to roll your own method.

Monday, March 02, 2009

Japanese translations

As if having Changing Software Development translated to Japanese isn’t enough one keen reader has translated some of my blog entries to Japanese.

Mark Nakamura has translated three of my Agile failure modes pieces

Failures in Agile process? (original Failures in Agile process)
More Agile failure modes (original More Agile failure modes)
Agile failure modes - again (original Agile failure modes - again)