In this article, we’ll focus on explaining what development velocity is, how to measure it, and how to increase it without sacrificing quality by using an Environment as a Service solution. Stay with us until the end to also find out how Bunnyshell can make your work easier.
What Is Development Velocity?
Velocity is an indicator or an estimate of how much work a development team can complete, based on previous time frames of similar work. This number is relative, and it’s important to rely on the trend rather than on the raw number, regardless of how you measure it. Each team will have different velocities, and this is entirely normal. Nothing beneficial will come from comparing different teams’ velocities.
When referring to Scrum or Agile, velocity indicates the average amount of a team’s product backlog that turns into an increment of product during a sprint. It’s a measure of the rate at which a development team consistently delivers business value. Measured according to what makes the most sense for each team, velocity is mainly used as a planning tool. It’s best to think of it as an instrument that helps development teams contour efficient and accurate timelines.
The Development Velocity Controversy
Velocity is easy to manipulate, making it a problematic metric. Inaccuracies occur in the following scenarios:
Velocity is erroneously inflated - when a team says that completing a task will take four hours instead of two, for example, this is velocity inflation and can result in their stats looking better. However, a higher velocity doesn’t mean the team is better or more productive. Therefore, it shouldn’t be used as a performance metric.
Velocity doesn’t consider quality, priority, or user goals - velocity inflation can also happen when you neglect good design or coding standards. So simply completing tasks can result in increased velocity, regardless of quality. Additionally, velocity is a measure of work done. This means that a team can build a feature that no one uses, which can count as work done, but velocity doesn’t consider the benefits of the work done.
Velocity is misused as a measure of efficiency or team performance - velocity is a measure of work done rather than a measure of efficiency. So it can be increased (or decreased) by adding more (or losing) team members or working overtime. Still, neither of these increases the performance or efficiency of the team as a whole.
How to Go about It the Right Way
To avoid the above issues, velocity should be used within individual teams only and shouldn’t focus on separate code changes and commits. Otherwise, broken trust, frustration, and culture damage can occur. Depending on what your business outcomes are, instead of development velocity, you can use the following metrics:
- for speed to value - use Cycle Time
- for predictability - look at Iteration Churn
- for quality - try Change Failure Rate or Mean Time to Restore.
Additionally, for velocity numbers, if you see either an increase or decrease in your trend, this should signal your team to look for any inefficiencies that may be causing this change. Remember that it’s not about your team’s efficiency but rather a better look into your development process trends to ultimately help you achieve efficiency while maintaining technical quality.
How to Measure Development Velocity
Velocity is measured in units of work completed by a team in a given time frame. In other words, development velocity is the sum of all effort points of the finalized items (units of work) at the end of a sprint. If any units of work are partially completed or incomplete, they are not factored into the velocity measurement.
Units of work can be measured in the following ways:
- engineer hours
- user stories,
- story points
Time frame, on the other hand, is measured in the following ways:
- iterations
- sprints
- weeks.
Keep in mind that consistency is key. However you decide to measure your team’s velocity is how you should continue measuring it going forward.
How to Increase Development Velocity Without Sacrificing Quality
There are ways to increase development velocity without sacrificing quality. They include:
Building a balanced team - sprints will consist of various tasks at different levels of difficulty. And regardless of the nature of your project, those tasks will need to get done. Some of them will be better suited for juniors, while others will be better suited for seniors. A well-balanced team will keep all members engaged and give them equal opportunities to grow and learn from each other.
Working with continuous integration and deployment - integration and deployment need to work hand in hand for your product to reach production as quickly as possible. They’re the two critical factors you should rely on to see how fast you can use the work your team completed. That’s why DevOps is the key to high velocity.
Using Environment as a Service solutions - software development and infrastructure changes are costly, so it’s critical to know how your costs can be distributed and when you need to test changes. It’s also important to focus on whether you can build something in-house or with your own labor resources. And last but not least, it’s good to know whether a more costly resource is blocked with bottlenecks or under/over-utilized. Using an EaaS platform decreases any environment bottlenecks by removing rework, thus improving developer velocity. Read more about the benefits of using EaaS solutions for your business.
Always having a product owner on your team - velocity isn’t about finalizing as many tasks as possible in a single sprint. It’s about focusing on the tasks you can finish. A good product owner makes sure expectations are clear and serves as the point of contact for you and your team. This will save you time and money in the process.
It’s Not About If, But About How You Do It
Today, CTOs are under immense pressure to deliver innovation while also keeping costs down. In order to transform internal experiences for the teams, reduce risk, exceed client expectations, and deliver value, there’s no other way than optimizing resources and improving processes across the IT landscapes and development tools. And one way you can do that is by using an EaaS solution.
At Bunnyshell, we’ve mastered the art of creating environments and now we put our Environment as a Service solution at your disposal so you can achieve accelerated time to value.
Are you ready for this?
Enable High Velocity Development
Breakaway from the inability to quickly deploy isolated environments of any specification.