Wednesday, February 18, 2009

Pork Barrel Agile Failure

So here is a failure mode I finally had time to think about. I saw a version of this play out, but here's the basic idea:

The Customer doesn't get as many stories as he'd like, so he pads the story with functionality that has a lot of leverage. Then when it's done, he can use it many different ways. This makes it a little hard to see the original user request in the fluff, but it does accomplish its original task (too).

The story is too large, but it is pushed to development, and developers take it on by sending a few guys offline to work on it for weeks/months.

In the meantime, a developer realizes that this feature is considered critical, so it has to be pushed. He has other features he would like to ship, but they're not related to this one. On the other hand, if he can sneak in some of his feature into this story, he is assured it will be released. This makes the story later, so there's more overtime, and it takes on more testing risk, but it's a good stalking horse.

It's a pork barrel. Each participant puts things into it that they want instead of addressing the real need (sort of like the stimulus package that gave a break to manufacturers who produce wooden arrows of a given circumference). The eventual product no longer represents the customer's wishes nor the cleanest possible architectural implementation of that need. It has its own special interests and agendas.

I suggest that this is a bad thing.