I was reminded this afternoon of one my favorite ways of thinking about software development, that it is a 'cooperative game of invention and communication'.  Alistair Cockburn is the author of this and you can read more about it here.  The longer version is in Agile Software Development, a book that I would recommend.

The short version of the Cooperative Game is the following.  It's cooperative because the players in the game help each other to reach the end point of the game.  It is a goal directed activity where the end point is delivered software.  Invention and communication are the keys as the game lives on people's ideas and communication of those ideas to their colleagues and to the computer.  In the process of playing the game, people use markers and props to pull thoughts out of themselves and generate new ideas.  Those markers are left behind for those who will come later.

While all of the previous paragraph is an interesting way to think about developing software, what I find really beneficial is how it helps me think about intermediate work products in the development process.  As I said, the final work product is running software.  That's how you win the game.  The intermediate work products exist for only one reason in the active game - to help the team make their next move. 

So are you wondering if you have documented sufficient requirements for a feature?  Have you done enough preliminary design?  Is your test approach sufficiently thought out?   The way to answer these questions is to think about the next move in the game.  Have you done enough to go on?  Thinking like this will help you avoid analysis paralysis.  Or it may make you realize that you really don't know enough to productively make the next move.  And, since every game is a little different, you can use the 'next move test' in any situation.

There is one other purpose for intermediate work products.  That purpose is as 'residue' for the next game.  While that is worthy of some thought when you are playing, you usually need to win your current game to get to the next game.  Alistair has recently modified his manifesto to include 'series of cooperative games' to help address the residue need.

Play on...