How many commits are happening today? How long does it take for someone to review a pull request (PR)? On average, how long do reviews typically take? This will further translate into looking into CI/CD processes, test coverage, incidents reported/ worked-on, on-call participation, and time spent over calls to resolve issues, etc.
Once you have all these questions answered, the same can be used for a meaningful conversation during sprint retrospectives and follow-up discussions for a more balanced activity distribution amongst team members within and across various teams.
Here's how to get the most out of this data:
- Track coding metrics like code commits, PR Reviews, merge rate, cycle time, test coverage, etc.
- Identify operational activity for each individual on various aspects such as testing, incident reporting and mitigation,
- Analyze the context behind these metrics in meetings to identify potential issues and the overall picture.
It is important to note that these Activity metrics should never be looked at in isolation to form judgment or opinion about any particular individual or overall team engineering productivity. The role of data is to give an objective perspective and establishing Communication (which we talk about in the next section) will help you get a clearer picture of the situation on-ground.
Communication and Collaboration
Just like a strong building needs a solid foundation, successful software development relies on effective teamwork. Here's where communication and collaboration metrics come into play. These metrics help us understand how well our team interacts and works together, ultimately revealing areas for improvement.
Communication tools like Slack, Google Meet, or Microsoft Teams provide a wealth of data on our communication patterns. By analyzing this data, we can see things like:
- Frequency of communication: Are team members talking frequently enough to stay on top of things, or are there communication silos?
- Distribution of communication: Is everyone involved in discussions, or are there a few voices dominating the conversation?
- Response times: How quickly are team members responding to questions and updates?
Understanding these patterns allows us to identify potential roadblocks and promote a more inclusive and efficient communication flow.
Beyond communication, we also want to improve how well our team collaborates. Here, metrics like code reviews and pair programming sessions offer valuable insights.
For instance:
- Code review efficiency: How long does it typically take for a code review to be completed?
- Depth of code reviews: Are reviews comprehensive and provide valuable feedback?
- Frequency of pair programming: How often are team members working together on code?
- Effectiveness of pair programming: Do these sessions lead to improved code quality and developer learning?
By analyzing these metrics, we can identify areas to improve collaboration practices. Maybe we need to streamline the code review process, encourage more pair programming, or implement additional training to enhance teamwork skills.
The most fascinating part of this dimension of developer productivity - Communication and Collaboration - is it not only builds better teams but also feeds back to other dimensions as well leading to higher developer satisfaction, higher team performance, and distributed activity across other software engineers.
This results in getting engineering teams better at - what we call the final dimension of the SPACE framework - Efficiency and Flow.
Efficiency and Flow
Imagine a smoothly flowing river, efficiently carrying water from its source to its destination. That's the ideal state for software development: a steady, efficient flow of work. This dimension focuses on measuring that very flow – how smoothly work progresses from conception to completion.
Several quantitative metrics help us identify bottlenecks and inefficiencies in our workflow: Cycle Time, Lead Time, Deployment Frequency, and more.
By monitoring these metrics, we can identify areas where work is getting stuck. Maybe reviews are taking too long, or deployments are overly complex, or there are undue delays in shipping code to production. Once we pinpoint these bottlenecks, we can take steps to streamline the workflow and get that development river flowing smoothly again.
This focus on workflow efficiency translates to several benefits:
- Faster Time to Market: With a smoother workflow, we can get features and fixes to users quicker, keeping them happy and engaged.
- Improved Team Morale: When the workflow is efficient, developers spend less time stuck on roadblocks and more time doing what they love – building great software.
- Reduced Costs: Streamlining the workflow can lead to cost savings by minimizing wasted time and resources.
Ultimately, by measuring and improving our development workflows, we can ensure a smoother, faster, and more efficient path to delivering high-quality software.
The Bottom Line
Let's face it, even the most well-thought processes need a tweak every now and then. Especially in the software development world, where things move at lightning speed, it's easy to get stuck in our ways or traditional methods. This is because these ways can be a bit one-dimensional, focusing on what gets done without considering the "who" and “how” behind it.
That's where the SPACE framework urges us to have a fresh perspective on developer productivity, bridging the gap between qualitative and quantitative data and highlighting key ingredients we might be missing to truly level up our engineering efforts.
If you're looking to follow SPACE's lead and bring a more well-rounded and holistic approach to developer productivity, our productivity experts are the folks you want to talk to! They can help you craft a plan that fits your team perfectly.
Thanks for reading, and taking a nuanced approach to applying the SPACE framework to measure and improve developer productivity.