Friday, 20 June 2008

Stay agile. Just stay agile.

There's a real temptation among business people, and also among some of us developers, to think big and go for delivery of the ultimate application in one go. This is dangerous territory.

If you have an idea for a brilliant application or web site, and you start to realise that the complexity of your idea is actually far beyond what you first imagined then it isn't the time to sit down and gather requirements for everything, hire loads of developers and get coding. Rather, this is the time to write a page or two about your vision, then select a few features and build those. Then select some more, build those. Release your application gradually, in stages. On the web this is perfectly possible.

I'm part of a project now where the temptation to go big and go big fast is very real. I've asked a few people to read the Getting Real book by 37Signals to help them get their head around what it means to stay agile and nimble during a software development project.

It's so easy to get stuck on features. Particularly if you're a very visual person it's easy to think too much too soon about how the UI works, how stuff is presented, how you drag-and-drop etc etc etc. Until you have some kind of working model, some kind of prototype you cannot quantify the value of your idea properly. That's why you should focus first on what you want to do, then actually do it, and when you've done it you can go back and have a look at how you've done it - and maybe change it.
  1. Choose a feature (the what)

  2. Build the feature, keeping it as simple as possible

  3. Revisit. Now that it's a working feature, you can go back to Step 1 and add something to it (e.g. an AJAX-enabled drop-down list etc).
If you plan and do stuff in stages like that you'll get things done and done well. If you try to plan for everything up front and then try to build everything in one "sitting" you are going to fail. You don't have to take my word for it. Just try.

Anyway, the point of this ramble is: Keep it simple. If you're paving a driveway you do it one cobblestone at a time.