Romantic Table For Two by Ray Bodden https://www.flickr.com/photos/rcbodden/3297607105/

When Is Software Done, or “When Will She Love Me?”

Josh Seiden
Neo Innovation | Ideas
4 min readMay 1, 2015

--

Let’s talk about cooking for a minute. Cooking is good. You can cook for so many reasons. You might cook to control your health. You might cook to relax. You might cook because you want to seduce someone. (More on this in a moment.)

Now, software people: let’s talk about Agile. Agile is good. And like cooking, you can use Agile for all kinds of reasons. Many companies turn to Agile methods for efficiency, and to gain some kind of predictability in their product development process. Others use Agile to get closer to the customer and to enable innovation, because the approach calls for constant customer contact. And this brings us to paradox at the heart of Agile: constant customer contact will make your delivery less predictable. I’m going to say that again, constant customer contact will make your delivery less predictable.

Making Your Delivery Less Predictable

To understand why, let me share a story. In 2004, I was asked to consult briefly on an enterprise system. The system was designed to help a large fashion retailer streamline operations. The software vendor had delivered an early version of the system and internal users basically flipped out — the system was essentially unusable, and the project team that was coordinating the whole effort went looking for a user interface designer to help them fix the problems. This is where I came in.

I interviewed users, watched them work, sat with the analysts, and then make some sketches of a redesigned user interface. Everyone was excited — the users wanted the new UI. The vendor wanted it too — it would take their product to the next level. The project team wanted it, because they knew project success relied on successful user adoption. Everyone was happy except for the IT sponsor paying for the project. The new UI would take 3–6 extra months, time and money that was not in the original budget.

I’ll never forget that meeting to pitch the IT sponsor — after watching me demonstrate the redesign, and listening to his team explain why the work was important, the IT sponsor said to them ( while looking me right in the eye and shaking his head), “I told you no good would ever come from hiring a user experience designer.”

Then he wrote the check.

What Do You Want To Predict?

So when I say constant customer contact will make your delivery less predictable, this is what I mean. You may think that “predictable” means delivering on time and on budget. If this is what you want to predict, then bully for you. But ultimately, as even our disgruntled IT executive knew, the thing you want to predict is project success. And really, the only way to do that is to attend to the outcome of the project. Not, “did we build it?”, but “did they use it?” Or even, “did they use it to improve business results?”

Predicting Outcomes

Predicting outcomes is a tricky thing. Imagine you are trying to make someone fall in love with you. You can estimate how long it takes to cook a romantic meal, and how much it will cost to buy a ring, but… how long till the object of your affection falls in love with you? What if he hates home-cooked meals, or she finds diamond rings objectionable? You’re going to have to adjust your tactics, and this is going to take time. The process of figuring out what’s going to work — let’s call it “discovering value” — this other Agile is inherently unpredictable. Because maybe you’ll find out the answer, or maybe you won’t. Or maybe the answer will be, “She’s just not that into you.”

Are we there yet? Or #NoEstimates

One of the important questions for anyone doing software development on any scale is, “when are we going to be done?” (There’s been some interesting discussion, and some unfortunate shouting about this on twitter, under the #noestimates hashtag.) This is a hard question to answer for lots of reasons that I’m not going to get into here, but there is one reason that people don’t seem to be talking about: our methods for predicting “done” are going to be radically different depending on what “done” means.

Earlier, I said that there’s a paradox at the heart of Agile. You can use it to become more predictable and efficient in creating outputs — like knowing when your romantic dinner will be ready. Or you can use it to discover value — figuring out the best way to make your heart’s desire fall in love with you.

If we’re trying to predict when dinner will be ready, the project managers in the kitchen are ready, willing and able to help you out. But if “done” means a lifetime of wedded bliss. Well, you’re just going to have to get down on one knee and see what the view looks like when you get there.

--

--