Friday, October 3, 2008

Agile or fragile?

We have a small project right now that is proving frustrating to the business and to IT, as we continue to rework code to meet the user's changing expectations. We are (today) hopeful we're almost there, but no one is happy with the experience. Netiher party is finding fault with the other (at least out loud). Intentions are good, but the outcomes just aren't what either department expected.

Coincidentally, I attended a session this week on Agile development -- a philosophy of software development that uses an iterative process. Bill Nazzaro of IconATG delivered an entertaining and insightful presentation on Agility ("Some answers can't be found until you make some mistakes" - I love that). His description of the process reminded me of Lean Production: the Agile movement invokes the small batch size production introduced by Lean. But, it flies in the face of the Lean concept of perfection. Which causes me to think of the recent IT project: what would really be satisfying is a development process in which we get to change our minds about requirements all through the project, but the build at any time is satisfyingly 'perfect' -- that is, without defect.

Possible? Might be, but the user expectation would have to be aligned -- that is, the user must be invested in an iterative process. Otherwise, each iteration will be perceived as rework (waste), rather than an evolutionary process in which some parts of the (genetic) code endure and some are trashed. If the user sees each phase as rework, he starts to lose confidence in the ability of the programmer to meet his requirements -- and naturally the programmer picks up on that, and the project goes into a downward spiral of mutual unhappiness.

I think the concept of perfection -- whether we articulate it or not -- is the derailer. Every one's hope hangs in the balance of whether something comes out right. (The problem, of course, is that without definitive requirements, there is no right - it's perpetually subjective.) To align with an iterative process, maybe we have to agree that the output is right if it simply helps us visualize where we want to go next. Hundreds of small successes may not feel as satisfying as delivering to a huge milestone -- but maybe that's an emotional expectation that we've programmed in ourselves. Could be time for an upgrade.