Published 2 September 2010
In the exciting world in which I live, I have been spending more and more time understanding Scrum. This is an ‘agile’ project management framework primarily used in web and software development. It is a break from traditional thinking and I am wondering whether it could have wider reaching applications.
Agile is about giving customers something that they can use now, as opposed to spending 10 years planning what you could give them later. It’s about getting something to market, listening to feedback and improving on it. It’s about being flexible and fluid, rather than prescriptive: “responding to change over following a plan”.
Isn’t that a good rule to apply to business as a whole? Could it be applied to life outside work too?
For example, take “Pair Programming”. The techie concept is to have two programmers sitting next to each other at one computer: one typing the actual code (the ‘driver’), the other reviewing each line of code as it is typed (the ‘observer’ or ‘navigator’). As well as checking the code being typed, the observer is analyzing the task, coming up with ideas and looking out for problems that might arise. The driver and observer regularly change roles – meaning that experience is shared more freely too. At face value, this might seem like you’d be paying two people to do one person’s job but, although it may produce an estimated 15% lower output than two people working alone, what they do produce is of much better quality, needs less testing and requires fewer fixes later on. In the world of web/software development, it is much more expensive to fix bugs than to get it right at the outset.
Would the world be a much better place if this was used beyond the geek world? I think that it could. Imagine how many mistakes at senior management level could be avoided if there was someone else to add another perspective or ideas? And could we see much more scientific advancement if two boffins worked alongside each other: generating ideas to find cures for some of the world’s ills? Politicians? Well, they’d probably just help each other find new ways to fudge expenses, but there’s always going to be exceptions.
So what else does Agile offer? What about “Simple design”. The premise here (not the official manifesto) is to produce output today that fits today’s specified requirements – and no more. It is tempting to try to anticipate tomorrow’s technology and add functionality that you think will be beneficial in the future. The problem is, the more you add, the more complex it becomes. The more complex something becomes, the less flexible and agile it becomes. Instead, get the job done and keep reviewing it to see if improvements are needed. Again, another good rule for life? Possibly.
What about “test-first programming”? Produce tests which will determine whether you have reached your objective, and start running the tests from the start; rather than waiting to test your output when you think you’ve finished. Again, another good rules of thumb for non-techie life: planning and continual evaluation. People often get so caught up in what they are doing that they only stop and think once they’ve finished the task. By this point, if they’ve gone wrong somewhere, it usually means scrapping some of their work – which means they’ve wasted some of their time/life. Rather than take the Cheshire Cat’s directions, decide where you want to go before you set off and check whether you’re there along the way. Unfortunately, it is quite common for people to continue along the incorrect path even when they know that they’ve gone wrong: “well, I’ve come this far, so there’s no point turning back!”
Then there’s “refactoring”. In code terms, this means clarifying and simplifying code as you go along (without changing what it does). It’s a case of continual improvement: if you see something has been done sloppily, fix it. Wouldn’t we live in a better world if we all did that more often?