Shortening the Tail

In Agile Project Management, I wrote a short section on a performance metric called “shortening the tail.” I liked using the metric, tail length, because it is easy to calculate and tells a lot about an organization’s Agile implementation. It’s not a vanity metric, like the number of developers who have attended a refactoring seminar, but a true learning metric because it focuses on a key tenent of Agile development—running, tested software. It’s also a metric that can help an organization move closer to Continuous Delivery.

The tail is the time period from “code slush” (true code freezes are rare) or “feature freeze” to actual deployment. This is the time period when companies do some or all of the following: beta testing, regression testing, product integration, integration testing, documentation, defect fixing. The worst “tail” I’ve encountered was 18 months—18 months from feature freeze to product release, and most of that time was spent in QA. Routinely I find software companies whose tail is 4–6 months of a 12-month release cycle. Then, there are other companies, and a growing number of software companies, that have honed their processes to a zero tail length—they are truly doing Continuous Delivery and Continuous Deployment. Using the tail length metric, particularly in products or applications that have large legacy code bases , can help organizations monitor their progress towards CD.

I worked with an organization several years ago that had a 6 month tail in a 12 month release cycle—and the tail was getting progressively worse with every release. The tail had gone from 4 to 6 months over the past 3 release cycles. The company set a goal to achieve a 1 month tail and worked diligently to achieve that goal over time.

Shortening the tail is a simple, powerful metric for measuring progress towards agility. The goal of agile teams is to produce shippable software every iteration, but most are far from this goal—especially if they have large, old legacy code bases. Think of everything a company might have to do to reduce a tail from six to three months to one month to a day. They would have to learn how to do continuous integration across their entire product. They would have to improve their level of automated testing to drive regression and integration testing back into every iteration. They would have to improve the level of automated unit testing done by developers to reduce testing time at the end of iterations and releases. They would have to bring customers into the development process much earlier, not waiting until the end for beta testing. They would have to integrate documentation specialists into the team and produce documentation continuously during iterations. They would have to invest in systematic refactoring to reduce the technical debt and therefore reduce testing and defect fixing time.

You can probably think of more they would have to do. Each of these items would contribute in some way, large or small, to reducing the tail by days or weeks. For large products the tail might never be zero, but it could be small. Just think of the competitive disadvantage a company has when their delivery tail is 18 months, or even 6 months. That means that for 6 or 18 months prior to release no changes in the competitive environment could be incorporated into their products. If Continuous Delivery seems too big a step, start on that path by first reducing the tail length on your product releases, before long Continuous Delivery won’t seem that big a stretch.