No battle plan survives contact with the enemy

My Elephant Brain Web Dev Agile Board JIRA Google Chrome_2012 12 27_21 12 33
Standard

Today I was listening to an episode of the .Net Rocks podcast featuring Venkat Subramaniam. Venkat is a developer and a professor who advocates for an Agile approach to software development . Around 20 minutes into the podcast Venkat said something that really struck a chord with me.

I definitely value the word plan as a verb, but the plan as a noun becomes obsolete as soon as we create it.

Anyone that’s written software in an enterprise environment before knows the pain of an evolving specification. As the joke goes, walking on water and writing software from spec are easy, so long as both are frozen.

But to expect all requirements and details of a system to be flushed out ahead of time is unrealistic and unfair to the subject matter experts defining the spec. Agile methodologies recognize this and embrace the evolving nature of a project. You want a new feature? Great, tell me where it falls in with other priorities.

But that doesn’t mean it’s a good idea to start every day without any sense of direction. The process of planning helps us uncover issues with features that might not have been apparent at first glance. At My Elephant Brain we’re using Atlassian‘s bugtracker Jira with the Greenhopper agile extension. It’s a great tool to organize remaining work and plan for development sprints.

My Elephant Brain Web Dev Agile Board JIRA Google Chrome_2012 12 27_21 12 33

Importantly, it tells us when our goals for development sprints are falling off-track. See those red and yellow indicators? That means there’s work we had planned on completing in a previous sprint but it’s not done yet. As a noun, the plan is now broken. But at a verb, we’re free, in-fact beholden, to do something about it.

Which brings me to the title of this post. After Venkat’s comment, co-host Richard Campbell  pulled out this quote from 19th century German Field Marshall Helmuth von Moltke the Elder:

No battle plan survives contact with the enemy.

Now I’m certainly not suggesting any customer should be treated as an enemy, but be prepared for your users to use your system in ways you never could of imagined and don’t hold onto your well crafted plan in the presence of contradicting evidence.