Friday, April 13, 2007

Do we have to use the F-word?

OK. It's a provocative title. I like to talk about two F-words: Feelings and Failure. This post is about failure, and how to use it.

I was working in a firm recently and someone said: "We can't talk about failure around here. That would hurt our careers." Ummm.

First, let me (apparently) change subjects completely. As I mentioned earlier, Mary & Tom Poppendieck are coming to Charlotte May 9-10 to lead their Lean Software Development - Practitioners course. So I want to talk about some of the things they will talk about.

They posit 7 principles of lean software development:
  • Eliminate waste
  • Build quality in
  • Create knowledge
    • Use the scientific method
    • Standards exist to be challenged and improved
    • Predictable performance is driven by feedback
  • Defer commitment
  • Deliver fast
  • Respect people
  • Optimize the whole
As with all good ideas, most of these are obviously good at first glance. What is apparently (from what I see in real life) not so obvious is the full meaning and application of these principles. Which the Poppendiecks explain.

You will notice that I gave detail for only one: Create knowledge. (The others have more detail, not shown; perhaps subjects for another day.)

So, let's talk about the scientific method. "But wait, weren't you going to talk about failure?" Ah, I am talking about failure. Imagine the many failures of the Wright Brothers (two of my favorites) or Alexander Graham Bell. Only after a couple of years of failure did we hear: "Mr Watson—Come here—I want to see you". And the telephone was born.

The Poppendiecks explain the scientific method this way: "Teach teams to establish hypotheses, conduct many rapid experiments, create concise documentation, and implement the best alternative."

When we are creating something new (with software we always are), we need to fail, fail, fail, succeed. This is embedded in the Red, Green, Refactor of test driven development. This is what all inventors do. (Now you can call yourself an inventor. Really.)

Now, using failure to learn and make progress and discover is not an excuse to use failure to hide shoddy work or laziness. (Very few workers really want to do shoddy work or be lazy, but a few of us have that kind of motivation from time to time. Examining why is perhaps a subject for another post.)

So, if your firm or the people around you don't want to hear the F-word, tell them your team is using the scientific method. You are testing hypotheses to identify the best one. Only by failing can we succeed. (Another paradox resolved.)

Good luck with your project.

2 comments:

Kelly Waters said...

Your readers may be interested in this blog all about agile development:

http://www.allaboutagile.com

For further reading about agile principles, there is a description of 10 key principles of agile development irrespective of which methodology you may be using:

http://kw-agiledevelopment.blogspot.com/2007/02/10-things-you-need-to-know-about-agile.html

And there's also an agile development forum "all about agile" for further discussion with peers:

http://www.groups.google.com/group/allaboutagile

I hope these resources are useful.

Kelly Waters
http://www.allaboutagile.com

Joe Little said...

Hi Kelly,

Thanks. I have listed your blog on the blog roll.

Don't be surprised if I link to one of your posts.

Regards, Joe