Tuesday, October 11, 2011

Getting Higher Velocity - Take 3

A recent conversation leads me to discuss some basic issues.

  • Why do we care about velocity?
To be honest, higher velocity is less important than better focus on business value. Higher velocity going the wrong direction does not help at all, and usually hurts. We always need more clarity on: (a) what the customer will really want (when we deliver), and (b) how focus on only the 'vital few' things (eg, for the next release).  These two things are more important than higher velocity (in all real life situations that I see). (A nod to Ron Jeffries for forcing me to say this.)

But, if we assume that the Product Owner is taking us in the right direction (having us build high business value items) and on the MMFS (minimum marketable feature set), then higher velocity is better.

And, when we remove impediments, one of our key reasons for doing so is higher velocity.  Yes, we want more fun, we want more creativity (which does not always result in higher velocity per se), we want higher quality, we want less technical debt (which should come out as higher velocity eventually), etc.  Still, I assume the other things, and so higher velocity is the key thing.

  • Higher velocity is just another way for managers to screw the team members
Well, I completely reject this way of thinking.

Not that it doesn't happen.  It does.  But no self-respecting manager should think this way.  About teams doing knowledge creation work. 

If as a manager you have an important project, and you think the only way to be more productive is to work harder (higher stress) and longer hours, then, based on over 20+ years of experience, I think you either have a bad team or you are a bad manager.

Higher velocity never means working harder (well, more than 40 hours per week). Often it means working fewer hours.

Velocity should never be used to drive the team into a death march.

The team should use velocity to protect themselves from what I call "the magical thinking managers", which just stamp their foot in demanding 'higher productivity'. Stamping of feet and slogans are useless. In overly-simple terms, we must remove impediments.

  • For the A3, it is difficult to estimate the velocity impact of fixing an impediment
Yes, "to predict is difficult, particularly of the future".  This is true, and always will be true. Nonetheless, we must.

An predicting things related to human behavior is hard. Predicting things related to multiple variables is hard, but always required in business (or so I find). There are timing issues related to prediction (when will the benefits start to show).

My recommendation is to under-estimate the velocity impact to some degree. And to explain the issues of prediction to the manager. A decent manager understands these issues. A decent manager does not expect the team to be accurate in predicting each team. A decent manager expects the team, over a series of A3's, to achieve somewhat more results than they predict on average.

Remember that we only have to predict enough improvement to justify the cost of investing in the fix.  Again, I find that we can under-estimate the velocity improvement and still easily justify the cost of the fix.  Usually.

Remember that the main reason to spend time or money in fixing an impediment is the benefit, and the main benefit is improved velocity. At least to a manager.

  • For some impediment fixes, the main benefit is not velocity improvement
Fine. True. Give velocity improvement its proper place. If it is third, then list it third.

However, it is my experience that velocity improvement is more important a factor than most team's think. Largely because most teams are not used to thinking about velocity.
  • We can only make minor improvements in velocity
 This is baloney!  "We can't possibly go any faster, captain!" (In a Scottish accent.)  Baloney!

This is the major problem, I find.  This belief that we as a team are almost perfect.  It is, of course, usually expressed in the negative of "we can hardly go any faster."  Everyone recognizes the idiocy of saying "we are perfect", but to suggest we are close to reaching some upper threshold of productivity sounds reasonable.  I mean, we are all smart people around here, right? And we run a professional IT shop, right?  And we are a strong team, right?  And we have all the right tools to run Agile, right?

To be honest, there is so much improvement to be made, it is unbelievable!  To be honest, "it's not what you don't know, it's what you know that ain't so."  We are smart, but some of our smarts are unbelievably dumb!  And all the rest of those assumptions above (and others) leave even more room for improvement.

Now, it is true that the team is working hard already, probably already too many hours. And so "being more productive" feels like a request for more hours.  And a request for more hours is wrong! I won't try to explain here why it is wrong.  But it is wrong! Wrong!

But that does not lead, logically or any other way, to the notion of "we can hardly go any faster".

Usually we can easily go twice as fast in the next 6 months. If...  And the main "if" is (I think)....if we will open our minds to identifying some of the real impediments around here. But, to be honest, there are many "if's".

  • If we go faster, we'll get into more technical debt
Wait a minute!  When I usually hear this, it tells me that the team has a weak definition of done (which maybe it does not follow for much, really). And it is, in effect, pretending to have a certain velocity, but is is really just lying to itself.

It is like saying "I ran a mile at sustainable pace", but in fact it was 8/10's of a mile and you are just about dead.

A real velocity should accumulate zero (well, almost zero) technical debt and should be achieved at a sustainable pace. And it should be based on a strong definition of done. That the team actually follows.

So, once you identify your real velocity (much lower), then doubling it will be relatively easy.

Enough for today.


Stewart Gleadow said...

Love the attitute towards technical debt… tech debt should occur because situations change, and past decisions are no longer the best solution. Just writing bad code is not doing your job properly, and not having a good definition of done.

Joe Little said...

Hi Stewart,

Yes, I think we have to, in general, be very aggressive against technical debt. Glad you like the attitude! And, yes, even if you do a very professional job, you will still find yourself in some technical debt.


Kishen said...

Hi Joe,

Great post!

Maken more hours / expanding the sprint length...
I do feel it's not the best way to deal with productivity.

Could you tell us briefly why it's wrong?



Joe Little said...

Hi Kishen,

There are several reasons why working more hours or extending the length of the Sprint is wrong.

1. It's about creativity or at least a fresh brain.

Thus, more hours (beyond day 40 per week) leads to an unfresh brain, and LESS productivity. Sometimes in the form of buggy code.

2. Death March

The team members, almost always historically have been asked to do a death march. That's where they work harder and harder, usually in close to inhuman circumstances, to "catch up". This never works. More importantly, when we try to do it now, even a little, the morale goes way down, and usually the real productivity with it.

3. Real velocity

We want a real velocity. For a defined period. Moving the measuring sticks (cheating) does not mean the real velocity went up. It just means you moved the measuring sticks.

4. Cleverness

My hypothesis is that the main and best way to increase productivity, esp if we measure it as increased velocity (story points), is cleverness....meaning, fixing impediments for the team. NOT working harder.

Is that enough? There is more.