The Importance of Reflection
Agile, iterative development. It is a mixture of planning, pragmatism and a healthy dose of common-sense. Simple! Or so it seems...
One important aspect that seems to be ignored all too often is the importance of reflection.
Unfortunately, looming deadlines always seem to distract us from this important activity. Paradoxically, this is the time I have found we need it the most. Heads-down programming with little communication is unproductive and a sure sign of an inexperienced team.
Where do you start? How do you do it? In my opinion, the beginning of the iteration, during an iteration, and at the end of an iteration. Each point requires a different focus and level of formalism, however, the end goal is the same: we want a small set of actionable items to come out of the discussion.
A small investment of time prior to iteration planning goes a long way towards making significant progress. Look at the release plan and see what stories are coming up. Discuss these stories briefly with a teammate. Come to the planning meeting prepared. All too often this does not happen, usually due to the 'lack of time'. This is unfortunate because nothing makes team members more frustrated than a poor iteration transition.
Frequent informal discussions concerning the state of the story board allows team members to assess the health of the iteration. Use the story board as a conversation starter with your teammates. Ask them how their work is going, what they think of story X not being started at this point of the iteration. Sometimes, emergency action is required... Better to find out sooner rather than later.
Well planned and facilitated end-of-iteration retrospectives go a long way towards discovering the tweaks that need to be made to allow the team to work more effectively together. The key is to identify a small number of 'improvement opportunities' that can be addressed during the next iteration. The results of these tweaks are analyzed in the following retrospective in order to assess their impact.
It is clear to me that small investments of time reflecting on feedback throughout product development go a long way towards delivering a product that meets expectations. The first step is to realize this as a collective team so that the time can be made to do it.