Definition
A feature is a work product that fulfills one more more stakeholder needs. Cycle time for a Feature is the average
time from when an Feature first starts to be worked on to when it is fully tested and ready to be delivered (but not
necessarily delivered).
Once the Feature is created, it goes through approval and becomes implemented:
-
New: Stakeholder sees a business need and submits a request to have that need fulfilled.
-
Exploring: The organization takes the request from the business release queue.
-
Defined: Detailed requirements and estimates have been gathered.
-
Planned: The development teams approve the feature's requirements.
-
Accepted: All teams that need to do work related to the feature have agreed to implement the feature in the
current release.
-
Implementing: Developers and testers work on validating results and testing begins. This is the start
date of the cycle time.
-
Ready for Delivery: The first attempt to deliver the feature. This is the end date of the cycle
time.
-
Delivered: All application versions of the feature are delivered into production.
The overall cycle time can be calculated by finding the difference betwen the start date and end date.
Feature Cycle Time = End Date - Start Date
The Feature Cycle Time is the total of the process times, during which the feature is worked on bringing it
closer to delivery, and the queue times, during which a feature could be waiting in a queue, between the
start and end dates. Queues can inadvertently increase the cycle time.
Cycle time can be measured in seconds, minutes, hours, or days.
Delays
The cycle time may include delays to the Feature, increasing
both the process time and queue time. If many features are deferred to a future release, there may be a problem
with the length of the queue. To resolve this issue, you can:
-
Count only the median cycle time, which effectively
discards the features with high and low cycle times.
-
Measure how long it takes to deliver 80 or 90% of features
(which also discards the high cycle times).
If there are not too many deferred features, this can
work.
It may be interesting to and look the metric when "deferred"
features are excluded from the measure's calculations, or if you count only "high priority" feature
requests.
If a Feature is sitting idle after leaving the Dev queue as a result of a
dependency on two other Features that have not left the Ops and Test queues, then the
development process could be slowed down. The diagram below shows how you can use Virtualized Services to solve this issue. The Features stuck in
their queue are virtualized in order to avoid a long cycle time.
Once a Feature has left its queue in the Implementing stage, you can use Automated Deployment to set up the testing environment earlier, thereby
reducing the work time to implement and test the Feature, which also reduces the cycle time.
Conclusion
Because the cycle time is not measured until a feature is ready to be delivered, it may be a slow indicator
of performance. If you would like more frequent releases with business requests moving quickly
through the lifecycle, adopting lean practices in order to detect bottlenecks and inefficiencies can provide
opportunities for improving the cycle time. Controlling the queue (or batch) size is one lean approach
to consider (see DevOps Principles).
|