Shortening the Tail
Shortening the Tail
Join the DZone community and get the full member experience.Join For Free
You've been hearing a lot about agile software development, get started with the eBook: Agile Product Development from 321 Gang.
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.
Published at DZone with permission of Jim Highsmith , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.