Archive for July, 2011

Feedback Loops and Agile Software Development

July 6, 2011

The June 2011 edition of Wired published the article The Feedback Loop by Thomas Goetz.  Thomas mentions:

“Feedback loops are powerful tools that can help people change bad behavior.  Just as important, they can encourage good habits, turning progress itself into a reward.”

Thomas discusses how feedback loops were used to change behavior in drivers by getting them to slow down in school zones.  A feedback loop involves four distinct stages, which I have paraphrased as follows:

  1. Data – gather evidence of behavior that can measured, captured, and stored
  2. Information – relay with emotional resonance the relevance of the data to the individual
  3. Consequence – reinforce purpose and enable the individual to sense opportunity to act on the information
  4. Action – individual engages  to recalibrate a behavior with action

The resulting action can then be measured and the feedback loop restarted with every action stimulating new behaviors that get them closer to the purpose or goal.

After reading the article, I contemplated that Agile software development is built upon feedback loops.  Agile software development is described as being a software development methodology based on iterative and incremental development where solutions evolve through collaboration.

Iterations or sprints are typically timeframes of one to four weeks resulting in working software.  An iteration is planned (goal), progress is captured via daily stand-up meetings (data) and communicated via burn down charts and quality metrics (information).  The team understands the goal and how the information relates (consequence) and is encouraged to improve (action).  These actions typically result in getting closer to the goal, whether that is via improved planning, efficiency or quality.

Agile developers typically receive feedback in many practices, including code reviews, unit tests, and continuous integration.  These are designed to encourage good habits.

Agile project management is responsible for ensuring purpose or goals are effectively communicated to the team and evidence collected of their achievement.  These goals would focus on value, quality, and constraints (scope, cost and schedule).  Project visibility is reported to stakeholders, providing feedback in another loop.

The Declaration of Interdependence was written in 2005 as an adjunct to the Agile Manifesto by a group of successful project leaders, as follows:

  • We increase return on investment by making continuous flow of value our focus
  • We deliver reliable results by engaging customers in frequent interactions and shared ownership
  • We expect uncertainty and manage for it through iterations, anticipation and adaptation
  • We unleash creativity and innovation by recognizing that individuals are the ultimate source of value, and creating an environment where they can make a difference
  • We boost performance through group accountability for results and shared responsibility for team effectiveness
  • We improve effectiveness and reliability through situationally specific strategies, processes and practices”

Without feedback loops, these values would not be achievable in the whole.  In particular, adaptation – the act of adapting  necessitates feedback.