Wednesday, August 30, 2006

The ultimate Agile Project

I've recently picked up some "on the side" web development work. At first this was a mere 30 hours or so and I managed to fit it in nicely of weekends and evenings to earn some extra cash. More recently however, some further changes (no additions) have been requested, for the same system - I guess that at least means they're happy with the first round :-)

Initially at least I was a little more apprehesive this time round because these new features represent a much bigger development effort - this is a browser based database system, and it now needs a serious amount a refactoring (I inherited a system here and it's a little messy - as they alway are) in order to add the new requirements.

Anyway I went to great lengths to describe to my customer my prediciment in that I have a "day job" and can't give this the time and follow up support I feel it deserves. Anyway, they were no to be deterred and it looks like I'll be doing the development. I don't think this customer is particularly across the Agile methodology I know and love, but it certainly presents me with a great opportunity to use the methods and tactics I know work well, in a situation that almost necessitate Agile approaches without needing to sell the approach at all.

The system will break fairly naturally down, into some smaller value adding deliverables. There will still need to be a decent sized, upfront scoping document, but that's it for big upfront design. This means at any point, I can deliver the system, and an invoice. If the customer is happy, on we go. If they feel it is not working out, they are free to move on to someone who can spend more time on the thing. No-one loses - most importantly not the customer. They will be receiving the full benefit of the Agile approach - perhaps without even knowing it.

Naturally some methods like "morning standups" will be neglected, but adaptability is what it's about right? Use the bits you need, forget the bits you don't. I'll be doing nightly automated builds, automated unit tests, user stories priorities by the client etc etc. The approach, with incremental delivery and therefore incremental invoicing, is the part I find hardest to sell to paying customers. They alway want a big upfront design and spec so they know the cost right?

Well of course they don't know the cost - in fact all they know is one figure it definitely won't be. But never-the-less, spending money wisely, on your own priorities, bit by bit (financially managing a project) is still usually harder to sell than "over committing to a huge figure up front based on priorities that are certain to change probably before the ink on the contract dries", so I thank my lucky stars for the chance to implement Agile here, for the good of everyone, without a hard sell.