If you want to improve in an area of your business – whether it’s code quality, tech debt, or customer satisfaction – then you must first learn how to measure it.
On an individual or team level, you can evaluate the quality and quantity of output from a given engineer. How many lines of code did an engineer produce? How many bugs did you catch during QA?
But if you want to evaluate the overall success of your development team – and think through a realistic timeline for your product roadmap moving forward – you have to look at a big-picture metric: Developer productivity.
Can Developer Productivity Be Measured?
TLDR: Yes, but it’s complicated. Measuring developer productivity isn’t as easy as counting lines of code or number of to-do’s checked off. Unlike other corporate functions that can be measured in one or two key metrics (like revenue or customer satisfaction), engineering teams often struggle to connect their creative, collaborative work to business outcomes.
Because of this, the idea of tracking developer productivity is often met with resistance. Without thinking through the full picture of what productivity looks like – efficiency, alignment, and consistency – teams risk micromanagement or a focus on vanity metrics that don’t actually achieve business goals. Because development is such a collaborative process, factors outside an individual’s control, like missing requirement information, team dependencies, or a bloated backlog can all impact their performance.
Yes, it’s a complex, inter-connected process to bring a product from a wireframe to life through code. But you can measure this process in different ways, starting by defining what “productive” looks like. Broadly speaking, engineering teams focus on two types of tasks – what McKinsey & Company calls “inner loop tasks” like building and testing code and “outer loop tasks” like meetings and security/compliance work. The top tech companies aim for 70% of engineering time focused on these “inner loop” tasks.
When we think about measuring developer productivity, it’s important to take a thoughtful and balanced approach that focuses on outcomes and value delivery – so that the data you collect is used to motivate and support your team. The more they can focus on those “inner loop” tasks, the better.
In this piece, we’ll talk through how you can measure developer productivity in a holistic, nuanced way – and ways to improve your developer productivity once you have a baseline in place.
Which Problems Get Solved by Measuring Developer Productivity?
Software engineering teams have a metrics problem (and not just because CEOs and CTOs increasingly demand answers beyond “it’s just too nuanced to measure.”) Your developer productivity is directly linked to the viability of the business – without developers, you don’t even have a product to sell – yet too many teams get distracted by aspects of development that are easier to define, like deployment dates. Instead, it’s about understanding the factors that drive performance, identifying bottlenecks, and creating a work environment where developers can thrive.
The benefits of measuring developer productivity include:
- Align development with business goals: No one likes busy work. Measuring developer productivity allows you to directly connect your efforts with real business value and allows you to more easily track your progress and create more predictable timelines – so you can better collaborate with your external stakeholders in product, marketing, or customer support.
- Identify and address bottlenecks: Map out your complete development workflow to see what points slow down your development team. Is your code review process inefficient? Are you spending too much time bug hunting manually instead of automating the process? Understanding your bottlenecks is the first step to streamlining your processes and determining how to better support your team.
- Improve developer experience and morale: You can’t support your team if you don’t know what’s impacting their well-being. Understanding how the team performs as a whole – and individual developer productivity – can help you motivate the team and prevent burnout. By making the entire process more transparent, you can celebrate the accomplishments of your high performers and better allocate resources to help the rest of your team catch up.
Without measuring your team’s productivity, you won’t be able to advocate for them with the rest of the organization or support individual developers by providing the resources they need. Knowing what is working and what’s not is the first step toward creating a culture of continuous improvement, where your engineers can get work done quickly and efficiently.
Key Developer Productivity Metrics to Track
It’s a longstanding joke in the engineering community that one of the best ways to get software engineers to argue (besides asking them whether it’s “GIF” or “JIF”) is to determine how to measure their work.
You don’t want to get stuck focusing on vanity metrics that emphasize quantity over quality. So what kinds of metrics should your team consider tracking? There are three main categories of productivity metrics software development teams can use:
DORA Metrics
DevOps Research and Assessment (DORA) metrics are an industry standard for evaluating engineering performance. Start by evaluating your software delivery lifecycle, or how quickly and reliably you can move code from commit to production.
This includes:
- Deployment Frequency (DF): How often you deploy code. The higher your frequency, the faster delivery and responsiveness.
- Mean Lead Time for Changes (MLT): The average time for a code change to go from commitment to deployment. The shorter your lead time, the more streamlined your pipeline.
- Mean Time to Recovery (MTTR): The average time to recover from a system failure or service interruption. Faster recovery times demonstrate resilience and stability.
- Change Failure Rate (CFR): The percentage of code deployments that cause issues in production. You’re looking for a lower number on this one.
This method of productivity measurement gives you a better picture of your delivery speed and stability as an engineering team. How often do you deliver? And do you deliver quality code? This is the foundation of any great software team’s performance.
Value Stream Metrics
Value stream metrics also measure speed, but with a different focus. These metrics help you map out your overall engineering workflow to determine the flow of value from initial idea to end user.
This includes:
- Lead Time: Measures the time between code commit and the start of the release to determine how long it takes to deliver value to your customers.
- Cycle Time: Measures the time it takes for your developers to complete tasks assigned to them. This focuses on the efficiency of the development process overall.
- Deployment Frequency: How often do you deploy code? This indicates your pace of value delivery as a team.
- Defects: The number of errors or failures in the software, which indicates the quality of the delivered value.
These metrics give you a big-picture look at how your team is performing, including speed and quality, but focuses more on your engineering workflow.
Flow Metrics
Flow metrics similarly focus on process by evaluating your efficiency on a team level. Often used in the Agile methodology, these metrics focus on minimizing wait times and reducing waste and tech debt. This includes:
- Flow Velocity: Measures how many work items are completed in a given period of time to determine the speed of value delivery.
- Flow Efficiency: Compares the amount of time tasks are worked on vs. waiting or blocked, which helps you understand process bottlenecks.
- Flow Time: Shows you how much time it takes for all steps in a workflow to be completed.
- Flow Load: Reflects the amount of work in progress so you understand how much work your team is taking on at a given amount of time.
- Flow Distribution: Visualizes the state of different tasks assigned to your team members in an effort to balance the work more effectively.
Your goal with these metrics is to identify bottlenecks that may be slowing the software delivery process so you can work more quickly and efficiently.
How to Improve Developer Productivity
Measuring your developer productivity is only the first step. Once you’ve established a baseline, it’s up to you and your team to work together to improve it. That might mean addressing complaints like wait times or team dependencies or implementing a completely new system for organizing and distributing tasks. Here are a few ways you can help your teams become more efficient:
Optimize the Developer Environment
Your developers are only as good as the tools they use. If you want to improve your developer productivity, start with the raw materials:
- Fast hardware: Make sure your team has access to the most up-to-date computers, multiple monitors, a fast and stable Internet connection, and enough memory.
- Collaborative software: Don’t skimp on the software your team uses to produce, document, and deploy your code, either. High-quality IDEs, debuggers, version control systems, and other collaboration tools streamline your workflow and make the process more measurable.
- Automation wherever possible: Routine tasks like testing and deployment free up your team for more creative and challenging work. Artificial intelligence can also give teams a boost by generating a baseline to work from (or noting errors ahead of any other testing.)
The best way to know what your team needs? Ask them. Most developers have strong opinions on their hardware and tools they use, especially if they’re more experienced. Use their knowledge to help build a standardized set of tools for the entire team.
Foster a Culture of Collaboration and Learning
If every team member is off doing their own thing, you’re missing out on learning opportunities.
Pair programmers together for projects or set up a mentorship network to share knowledge. Let your team nerd out on programming updates or code changes with lunch and learns, lectures from thought leaders in your industry, or attending conferences or training sessions together. Taking time away from the daily grind to learn something new is a great way to build camaraderie and gain new skills to apply to the next sprint cycle. This is a great example of how increasing developer performance can also increase employee retention.
Streamline Processes and Workflows
Your systems define your productivity just as much as individual skill. Whether you’re using a kanban or agile methodology to break down projects into more manageable tasks or taking in tickets as you receive them, map out your workflow from start to finish to identify where you can support your team.
Use what you’ve learned from your data collection on bottlenecks in your workflow to optimize how you get the work done. This means taking a hard look at the number of meetings your team attends each week (those standups really add up.)
Reducing context switching and interruptions can help your team focus, too – that might mean working with the rest of your organization to eliminate random Slack pings or setting designated “developer office hours” for folks to come ask questions or work on a task together.
Invest in Good Documentation
Everybody loves to hate on documentation, but it’s a crucial step in the development process, especially as your team expands. Whether you assign one team member or project manager the responsibility to maintain the documentation or it’s up to each individual, remind your team that it’s a step you can’t miss.
Good documentation includes:
- Clear explanations: Explain what the code does, how it works, and why it was designed that way.
- Up-to-date information: Keep documentation current with code changes.
- Easy to find and access: Use a centralized, organized repository to make it easy for developers to find what they need.
- Different types of documentation: Include API documentation, tutorials, code examples, and FAQs to cater to different needs.
Good documentation takes time, but it will save plenty of effort and hours later on when new bugs need to be fixed, you have a question about a specific technique, or the product team requests a similar feature. It also provides a clear statement of record so if there is an error or a feature needs to be reworked, you can easily find the problem and fix it.
Minimize Technical Debt
Technical debt is a fact of software development. But you never want it to get so problematic that you have to put off strategic initiatives or new product features in order to fix it. As tech debt accumulates in your codebase, it becomes harder and slower to add features, fix bugs, and maintain your code base. This can slow down development – and it’s frustrating for developers to spend time fixing code when they could be doing interesting or creative work.
The best way to minimize technical debt is to write clean code the first time (more on that below) and to address issues as soon as you identify them. Include refactoring as part of each sprint cycle or dedicate a week each quarter to cleaning up the code base. Automated tools can also help you catch areas for improvement more quickly.
Keep Code Clean and Maintainable
Keeping your code as clean as possible makes it easier to work with so your team can move faster (and so no one is stuck on code cleanup duty all the time.) To keep your code clean, consider using:
- Meaningful names: Use descriptive names for variables, functions, and classes that make sense to someone outside your immediate team.
- Consistent formatting: Follow consistent formatting conventions to improve readability.
- Small, focused functions: Break down complex tasks into smaller, more manageable functions.
- Minimal dependencies: Reduce dependencies between modules to make the code easier to change and test.
Building in these best practices to your everyday coding workflow reduces time and effort in the long run.
5 Best Practices for Measuring Developer Productivity
Measuring developer productivity can easily veer into micromanagement territory. You don’t want to make your team feel like you’re watching every click of their mouse or keyboard strokes. Focus your efforts on strategic alignment, deliverable timelines, and the overall effectiveness of your workflow. The more data you have on these themes, the better you can craft a process that achieves business outcomes and supports your team. Here’s how to measure developer productivity in a nuanced – and ethical – way:
Define Clear Objectives and Goals
Anytime you collect data, you should know what you’re trying to achieve and how you hope to use that data. Why do you want to measure your developer productivity in the first place? If you’re not sure where to start, go back to your organization’s overarching goals and how your department helps achieve them. It may feel obvious, but stating these connections clearly better informs your testing strategy and communication with your team.
Choose the Right Metrics
It can be easy to get caught up in metrics that reflect the volume of work your team handles, like number of commits or lines of code written. That’s the equivalent of your sales team celebrating the number of phone calls they make instead of their closed deal value. Instead, prioritize metrics that reflect the value delivered to your internal and external stakeholders of the business.
But you don’t have to go all-in on quantitative metrics, either. Your team performance doesn’t come down to one single metric. Combine objective measures like code commits or cycle time with subjective assessments like code reviews or developer feedback for a more holistic view of where your team shines and where they can improve.
Implement a Balanced Measurement System
Your success doesn’t depend on one number. Once you establish a baseline for your developer productivity, track trends over time to analyze seasonality and team-wide areas for improvement. You’ll also want to take a segmented view of each team, project, or individual developer to determine strengths and weaknesses – as well as any external factors impacting specific initiatives that might be missed in a wider analysis.
It’s important to evaluate quantitative and qualitative metrics. There are multiple frameworks devops teams can adopt to measure their productivity, but the best approach pulls from all of them. Consider using a combination of DORA, Value Stream, and Flow metrics to get a more comprehensive view of team performance.
Prioritize Developer Experience and Well-Being
Just as you encourage your developer team to work together in the software development process as much as possible, include your team as you look to improve productivity, too. Solicit feedback from them about the workload, process, and their ideas on how to improve. They may already have ideas on which metrics are the most relevant to measure and why you may not be seeing results. The more transparent and collaborative you can make the process, the more likely your team will buy-in to the initiative – you want them to be motivated to improve, not afraid of being punished.
You’ll also need to be mindful of data privacy and ethical considerations when it comes to measuring productivity, especially for individual performance. The rest of your team doesn’t need to know about work-around accommodations for disability, pregnancy, or health-related issues that might impact an individual’s productivity. Consider anonymizing your individual-level data on dashboards or removing it from public-facing visuals altogether.
Communicate Effectively and Transparently
Make the effort of tracking these metrics worth it by regularly sharing the results with your team. When you go through a retrospective on a project, include the productivity metrics and how they compare against other projects.
Consider adding a teamwork process retrospective to the regular cadence of meetings, outside of specific projects, so your developers can connect their work to broader business impact. Most importantly, celebrate your successes. Highlighting wins as a team and on an individual level brings you together and makes work feel more fun as you complete your goals.
This is also a great space to collect additional feedback from your team about what’s working and what needs improvement on a team level, and encourage your managers to include these metrics in 1:1 discussions so individuals can get the support they need before it becomes an issue on a project as a whole.
Make Your Productivity Visible with Jellyfish
Software development is an incredibly nuanced and complicated process, and no team is exactly the same. That’s why it’s important to make your workflow transparent and visible – and to track the metrics that show the impact your team makes on the business’ bottom line.
Jellyfish integrates popular project management tools like Jira, Github, GitLab, and Bitbucket to automatically collect data on code commits, pull requests, and more. Our platform then auto-calculates DORA metrics, cycle time, and work distribution so you can see at-a-glance how your team is performing and see exactly where you have opportunities to improve.
Our interactive dashboards make it easy to customize these insights for your team or for executive reporting so you can show, rather than tell, how you’re aligned with key business goals.
Why Customers Choose Jellyfish
Making decisions about allocating team resources and code planning is just the beginning for brands like Iterable, who used Jellyfish to reduce their time spent on software capitalization by 98%. “One of the things I love about Jellyfish is this concept of high-level alignment. It tells you right away where your resources are deployed into broader categories,” said Jeff Sing, Director of Engineering at Iterable. “Utilizing Jellyfish allows us to immediately ‘debug’ things. We can tell if the cost of something is too high.”
Identifying and addressing bottlenecks gave Jeff and his team a much more efficient way to work together, making their work more predictable for their stakeholders, too. With Jellyfish, their team has been able to map out their workflow more effectively, tracking their productivity without losing sleep. Said Jeff, “Iterable reduced the time spent on software capitalization worksheets by 98%, cutting nearly 24 hours out of the process each month.”
That’s why data-driven engineering teams love using Jellyfish. See how we can help you gain a deeper understanding of your engineering performance and drive continuous improvement. Request a demo today.