Jun 052012
 
English: S'mores Pop-Tarts.

English: S’mores Pop-Tarts. (Photo credit: Wikipedia)

Tell me how you measure me, and I’ll tell you how I behave.

- Eli Goldratt

This conversation tends to spark some interesting sentiments in agile developers and, like everything else wrong in the world, I think Waterfall is to blame.

You see, developers have labored for years under unrealistic deadlines set by uninformed or just downright crazy project estimates that, even in the best of circumstances, are still bound to be wrong. An antipathy grew between developers and the business as the business kept setting deadlines (sometimes based on developer estimates) and developers kept missing them.

Odd metrics began to pop up around lines of code written or deviations from estimates. Developers were rewarded for writing more code and being closer on their estimates – two things that provide no direct value to the business, incidentally. And when these things were off, the hammer came down.

Then agile came, and all was unicorns eating Pop Tarts and pooping gumdrops.

Now, the nasty managers couldn’t impose some huge project deadline. Now, lines of code were meaningless (they always were, by the way). Now, even individual productivity was subsumed under the productivity of the team. Surely, now, developers and management could work together on meaningful metrics and standards for improvement.

But, no! Ensconced in impenetrable sprints and standing with one’s team as a veritable fist of defiance, the oppressed became the oppressors. Software development is knowledge work! You can’t measure productivity! It’s about learning and sharing and growing! It’s not always about getting visible results! There’s lots of… knowledge… work. So, suck on that, management! You come around here with your metrics and incentives, and I’ll tell you where to stick it. We cannot be measured. Software development is just too different.

Let’s assume, in Unicorn Gumdrop Poop World, that both managers and developers are primarily interested in delivering value to the business as defined by the business’ strategic goals. If this is true – if both of these parties are actually on the same team trying to accomplish the same thing – then they should be able to agree to some way to measure this activity that is reasonable, valuable, and equitable.

For a developer to resist any measurement whatsoever is to place a big roadblock up to improvement. Operating at peak performance and operating at poor performance look exactly the same from the outside. Trying to avoid making this visible might cause someone to wonder if you have something to hide. I confess, even as a veteran developer, I often wonder if this is the case when I hear another developer arguing at length at how esoteric and unmeasurable software development is.

I believe there are at least two metrics that both parties can agree are useful and quantifiable.

Throughput

How long does it take to turn a request into a reality?

I’m not talking about an entire project; I’m talking about a feature that can be relatively sized. How long does it take that smallest viable unit of functionality and turn it into working software?

Contrary to popular belief, businesses do not reward hard work; they reward the production of value. If Employee A works 8 hours to enter 50 customer records, and Employee B spends two hours writing a script that enters 500 customer records that day, the business as a whole will appreciate Employee B because she delivered more value than Employee A.

Effort means nothing unless it produces something valuable for the business. Since this is the goal that unites managers and developers, it makes sense to measure Throughput as opposed to lines of code, classes written, documentation created, etc.

Quality

High throughput is bad if you are creating crap at high velocity.

Although we want higher throughput, this cannot happen at the expense of quality. This metric is a little trickier, but not impossible. You could measure number of bugs. You could measure rework time per feature. You could state that a feature is not done until all bugs are fixed and just add that into lead time, which will lower Throughput. You could state that feature is not done until it has passed a code review.

Despite quality being a little ephemeral, you can define it in a way that’s quantifiable, and that metric is very useful in conjunction with Throughput.

If Quality is high and Throughput is low, perhaps there’s a bottleneck that’s keeping the team from producing as fast as they could. If Throughput is high and Quality is low, then the team is producing too quickly and needs to further limit their work in progress.

No metric can tell the whole story of software development, but they can provide useful points of conversation and collaboration on how the team in general is doing, where we might start looking to incrementally increase performance, and if our adjustments are having the intended effect.

Oct 252011
 
LONDON, ENGLAND - MAY 03:  Police officers wit...

Image by Getty Images via @daylife

Great band name.

At all levels in society, people have to deal with the fact that people will not always behave according to the ways you want – from public enemies all the way down to misbehaving children. At each of these levels, the people entrusted with “enforcement” have to decide what is the most important thing to them: meting out punishment, or getting the behavior they want.

You can figure out which of these you tend to value more by answering a simple question: what is the main purpose of prison? Is it to punish people for committing crimes, or is it to act as a reason not to commit crimes in the first place? Obviously, it does both, but what do you think is the primary value of prison?

These values clash in the workplace as well.

Once, when I was giving a talk on lean workflow, I asked the audience why it was a good idea to have the people actually doing the work give the relative size estimates for the work items in the backlog. The very first thing that came out of someone’s mouth was, “So you can hold them accountable. If someone tells you that something is a Small, and they take too long, you can come back to them and say, ‘You said this was a Small!’ and hold them to what they told you.”

I don’t know the person who gave that answer hardly at all, but to me, that reflects a certain way of thinking about management and employees that largely values the ability to mete out punishment.

In this model, employees are lazy, shiftless, and incompetent. You have to use sticks instead of carrots. If you want to increase productivity, you increase the threat level (maybe to Threat Level: Midnight). At any given time, employees could be working harder, they just aren’t for Thor knows what reason.

So, my question is, if your employees are really like that, what are you doing with them? Fire them and replace them with competent, hard-working people you can trust.

There is another way of looking at management and employees, however.

This model values getting the right behavior more than anything else. In this model, employees want to do high-quality, productive work. They want to be good at their jobs, and they want their employers to be happy with their performance. If they are underperforming, it’s for a legitimate reason that, if they could identify it and change it, they would.

In this model, managers and the people under them work together to make workflows visible so they can find the problems together. The workflows have to be visible, otherwise you’re just going off your gut when it comes to identifying bottlenecks and problems. You have to collaborate, because the people in the trenches can give you intelligence about those bottlenecks you can’t get from a report or diagram.

Is a team getting too much work? Not enough? Is a group understaffed? Is the way they get their work insufficient for them to act quickly? Are there processes that waste time for little value?

Productivity by flogging makes everyone feel powerless – the subordinate because they just get yelled at all the time, and management because no matter how much they yell, productivity does not seem to increase (turnover does, though). There’s a logical limit to how much productivity you can get out of a person simply by sheer force of will, and once you hit that ceiling, there’s nowhere else to go.

Maybe, instead of thinking about management primarily in terms of “accountability” and “performance review,” you might think about it in terms of actually solving problems. Real problems, not ones people come up with out of their own opinions. Make your workflow visible and get your hands dirty with your subordinates finding the things that hold them back, and remove those things.

Everyone wins.

Sep 222011
 
Pomodoro Timer

Image via Wikipedia

While looking over the Personal Productivity StackExchange, I found a mention of something called the Pomodoro Technique for time management.  If, like me at the time, you don’t know what this is, the upshot is that you work on tasks in 25 minute blocks of time taking 5 minute breaks between each block.  Take a longer break every 4 blocks.

Not a bad idea, really.

However, when I visited the site (linked above) for this technique, I found that you could buy a book on it and even get certified in it.

Certified?  In taking 5 minute breaks every half hour?

Folks, is this what being lean and agile has finally brought us to?  Any halfway decent idea that might possibly improve your productivity is now a full-blown methodology complete with books and certification?  What happened to our self-respect?

I understand this specific instance isn’t really tied directly to being lean or agile, but I see this happen in our field all the time.

Here’s one for you.  When I stop at an intersection, I look both ways before driving on.  But here’s the kicker, I look left, right, then left again!  I call this the Sinister Driven Mango Chutney Technique.  Watch for the book as well as your opportunity to become a Certified Black Belt Sinister Mango Chutney Overlord!

I’m not pointing fingers at anyone, but we need to quit creating methodology dojos out of every neat idea.