Home > Uncategorized > Iterative evolution

Iterative evolution

Isn’t it great when you stumble upon something, whatever, that makes you think, really think?! And then sometimes, that wonderful stumble triggers you to rethink things you thought you already knew, things you took for granted. Ah, that’s indeed a wonderful process.

It just happened to me. This time it was two very interesting articles that got me thinking about the Agile idea of iterative delivery.

Step by stepPhoto Credit: extranoise


The way of delivering anything these days is arguably to do it in steps, adjusting as you go, depending on the feedback and the changing requirements. Yes, yes, yes, I know; far from everyone agrees with that statement. Hence “arguably”. (I’m not going further this time. Go google – or bing if you will – delivery waterfall agile if you want to dig deeper into that subject. And bring a sturdy spade.)

Having lived with a term like “iterative delivery” for about a decade now, believing to have a rather firm grip around its meaning, I find it interesting – and refreshing – to find it challenged twice in a couple of days, after reading two excellent articles sort of on the subject.

Iterative delivery

A common way of looking at iterative/evolutionary product delivery is: Release and fail fast, acknowledge missing features, embrace change and continuously add and improve all the way to the “final” (great) product.

Banana skins

My two challenges, or pitfalls, for today concerns:

  • The acknowledgement of missing features
  • The failing fast

The acknowledgement of missing features

There is a very interesting article by John Gruber, about “how Apple rolls“, showing how Apple consistently release their products small, and then improving on them, slowly, bit by bit. Of course that’s what they’re doing. I just haven’t seen it like that before. Apple is doing iterative delivery. They just don’t advertise it as they go. They never focus on the missing parts. Every product is a flagship that will, and most often does, revolutionize the industry.

Before I go on and you accuse me of comparing Apple and orange: When we talk about Agile software development principles, the acknowledgement of missing features is commonly communicated within the team, including stakeholders/customers. What Apple is doing is marketing externally to the end users of the product. That’s a different ball game, but nevertheless I think there’s an important lesson to be learned here:

One of the great benefits of the Agile way of thinking is that it fosters a humility towards failure and change. However, too much of a good thing may do you harm. When you insist on putting up a sign on the front page telling the users this is not a complete product, when you refuse to remove that Beta tag, you start making excuses, effectively demoting your product. You don’t have to speak Apple, but be careful. Don’t be too humble.

Fail fast

The same goes for the mantra “fail fast”. It’s a great guiding principle, but be careful communicating it to people without the same level of understanding and knowledge about Agile and XP. They might just perceive it as a careless approach to their product, their time and money.

But pretty please with sugar on top; it’s such a catchy phrase, with its short allegorical allure! Yes, but it does front a dangerous word when it comes to the customer’s children: Fail!

It’s not just linguistics though. Fail fast is a concept that demands and deserves proper presentation. It lives dangerously close to the world of lazy or lacking preparations. (Which, by the way, is not a good starting point if you have any ambitions.)

There have been times that I’ve felt this need for careful wording trying to convert waterfalling customers, but after reading this rather energetic confrontation with the mantra from a VC’s standpoint, it really made its way to the frontal lobes. Again, all I’m saying is: Be careful.

Do your homework

Be careful you say? How? The way to avoid these pitfalls is – in my humble opinion – to be sure to communicate, to eat, live and breathe responsibility and thorough groundwork. From there you can go pretty much wherever you like…

  1. May 29th, 2010 at 00:22 | #1

    Hi brother,

    Important thoughts. I can tell you that many people have taken issue with the motto of Erlang programmers: “let it crash!” Somehow, they don’t feel that it is conducive to making robust software – but really, it is a version of the “fail fast” motto, and it really does help you build robust products. It is seldom a success when talking to customers, though.

  2. May 31st, 2010 at 16:57 | #2

    @Ulf Wiger Let it crash, fail fast, banana, banana… Maybe it’s time we start devising mantras that sound relieving not only for us, but also for our stakeholders. Excellent principles though! We must hold on tightly to their core.

  1. No trackbacks yet.