Wednesday, October 21, 2009

Efficiency by Forced Iteration

This is a technique I apply on almost everything I do which has any expressive ambition. I'll call it Forced Iteration, I have not previously though of it as anything which has a name. After power-reading the stuff that Eric Reis and his crew is doing I realize it lies dangerously close to the idea of Continuous Deployment.

I have been messing around with the creation of usually unambitious artistic artifacts such as pieces of music, texts or even little experimental games. What I have realized over about twenty years of doing this is that the most effective way to improve the result is to publish it and make it available to some kind of living and breathing real audience. Even if it is only one other person in the audience this is vastly better than avoiding the publishing step.

What I do is that I first fiddle with the piece, this blog post is an example of such a piece. Then after I start losing tempo on the production of it I'll publish it. This causes me to feel a slight level of panic that I just published something which is total rubbish. The understanding that the rubbish is already out there and potentially being consumed by an end user triggers a reflex which makes me fire up a burst of energy which I spend by seeking out the worst flaws and I fix them just a few minutes after the publishing. Whew... the feeling of fixing the broken bits before anyone really saw them is actually quite good!

Now after the worst bits are fixed I will have a bit of breathing room which I use to judge the resulting piece of work more closely. This tends to spit out a new series of micro-iterations which hammer away at the lesser errors that I can see.

I am not a good writer, and I know that my English skills are quite lacking compared to what you'll see from a more engaging writer. This knowledge sets my level of ambition to be relatively low when it comes to making this blog great. Maybe someone who is smack dab in my target audience finds it comprehensible enough. Well, anyway...

The act of forcefully publishing the unfinished piece of work effectively speeds up the process of going from the idea of doing something until it meets the standards set by my level of ambition. I believe that I find this behaviour to be natural from having somewhat of a background as a live performing musician, even if it was a long time ago now. The live performing musician is in a constant state of streaming art directly to the audience. The reaction from the audience is the fuel which drives the engine of creation. And the idea that my audience will see the first iteration fuels the engine that creates the second, and so on it goes.

By using Forced Iteration this way the volume of fuel is maximized, at least for my type of engine. I know there are great artists who achieve greatness by going the other way around, but I have no idea of how they really do it, or how fast they really work.

2 comments:

  1. Would you say this is an applicable technique for business applications..? :)

    ReplyDelete
  2. That is an interesting question. Before I even think about it I will say "possibly". And then try and think about it.

    ---

    Ok, so now I thought a little bit on it and the somewhat better answer is probably to say: "It depends." And it should depend on a range of things.

    The first one is probably about how the business application makes money. Is money constantly streaming in and you are making a profit. Then your productivity will be aimed at gradually improving the profit. For this case I should probably recommend making these rapid iterations on a tiny trickle of users who get selected by split testing.

    If you change the landing page through this type of method for example. You will want to make it clear to the "victim" of the split test that the current state is a "betastate" and invite the user to return and keep on checking out the progress which is being made on it.

    If you do this to something which is more technical in nature such as a hypothetical payment system then I think you could do it the same type of way. The critical thing becomes learning how to deal with the unfortunate part of the audience which gets the first total rubbish iteration. I would recommend trying to make a game out of it and reward the users who experience this process with some implicit rewards such as encouragement, easter eggs in the product or close and personal communication.

    Timothy Fitz has a few presentations and at least one neat video around the internet which presents how they do this type of thing altho their method is larger scale and a lot less volatile. Can't seem to link the video :| but articles work http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/

    The other side of the case with the money, if it is not streaming in and not profitable I think this would work wonders for also a business application. But it would require a ton of guts and a daring team.

    The real trick is that IF you actually get a user who gets to follow your journey from rubbish to value you will have forced that user up the value chain. (The thing the cats are working with in the cat post.) You will lose some, but the ones you don't lose are likely to reach hardcore state with an accelerated pace.

    But what I think it REALLY DEPENDS ON is company culture. Most companies would most likely not be able to deal with the process. Nor be able to follow through to the point where the resulting piece of work also is fully operational and does not leave behind any technical debt.

    I'm crazy enough to recommend giving it a try someday anyway. :D

    ReplyDelete