If you’ve ever been to a vineyard, you’ve probably seen that they plant rose bushes at the end of each row of grape vines. These rose bushes indicate if there is going to be a problem with the grape vines because the roses are generally weaker than the grape vines, yet have almost the same genetic make-up. The roses will die first if there is a pH-imbalance, insufficient water, too much water, too much sun, or other issues with the environment. The viticulturalists can then react before the problem grows out of proportion. The roses are “indicator plants” that help the vineyard achieve the highest value, by reducing the unnecessary cost of damaged vines.
One of the things that attracts me so much to Agile processes, is that they have so many things that act as indicators to help the company prevent lost time and effort, similar to how the roses help the vineyard prevent lost grape vines. Continuous customer feedback, tells us if we’re building the wrong thing. Burndown charts give us an indication that we’ve taken on too much work for an iteration, or that we need to rethink our release date or scope. Daily stand-up meetings let us know if something is blocking a developer and provide information to all team members so that problems can get rectified as early as possible. TDD leads our design, but the unit tests also remain as a regression to indicate a defect before it gets checked in to the repository. Retrospectives provide indicators of problems in our process and our teamwork. The list goes on and on..
Like viticulturalists, successful agile teams are continually looking for more indicators to help steer them to the direction of value by reducing the cost of mistakes. But this extends farther than just vineyards and software development; every organization needs to find ways to quickly detect problems and resolve them before they grow.