When it comes to Key Performance Indicators (KPIs) for software development, I’m a bit hesitant to wholeheartedly endorse all of them.
Because for me, the most important thing a KPI should do is help me cultivate a healthy and creative environment where my developers can build software with the quality and velocity we can all be proud of.
So, the KPIs I tend to use the most during my one-on-one meetings and performance reviews are those related to people, and which measure things like signs of burnout, wellbeing, happiness, or job satisfaction.
What Are KPIs?
KPIs are quantifiable measurements that are used to figure out how well a company or team is performing against its objectives. They’re used across many industries, from running funeral homes all the way to professional sports.
To find any value in KPIs, they need to be specific, measurable, achievable, relevant, and time-bound (SMART). Yeah, I know you might be bored hearing about SMART goals again, but stay with me here 😇
Why Are KPIs Important in Software Development?
In software development KPIs are used to measure the performance related to building software.
KPIs help software development teams to identify areas of improvement and optimize their processes. By tracking KPIs, dev teams can get data regarding potential bottlenecks, address issues, and improve overall performance.
In general, KPIs measure productivity, quality, efficiency, and customer satisfaction, among many other things.
KPIs in Software Development
Google ‘KPIs in software development’, and you’ll get dozens of brilliant minds who talk about what they believe to be the most important ones. They’re not all wrong, but few get it right. In any case, I’m throwing my hat 🎩 into the ring, as I have my own opinions on the subject. For starters, I mostly look at three dimensions when it comes to KPIs. Let’s explore them here.
Quality is an important KPI in software development. We’re being vague here on purpose as quality has several parts.
In general, quality looks at how well the code meets certain standards such as maintainability, readability, and scalability.
Quality explores questions like: can the code be easily extended or could new features be added? Is the code easy to maintain? Does writing the code use technologies that the dev teams want to use? Here are some other KPIs related to quality worth mentioning.
When it comes to building software, does the software do what it’s supposed to do and are users happy using it. The software needs to fully consider the thinking behind its intended users. The experience must be seamless and intuitive. In the end, a well-designed and functional piece of software can improve user satisfaction, increase user engagement, and help achieve the software's intended goals.
Good performance of a piece of software refers to its ability to function smoothly and efficiently without any delays, crashes, or other performance issues. Does the software respond quickly to each use case?
Good software performance is important for user satisfaction and engagement, as users are likely to abandon software that is slow or buggy. It can also impact the company's reputation and success, as negative reviews and ratings can discourage potential users from downloading and using it.
Good security in software means that it protects user data and prevents unauthorized access or use. It includes measures such as encryption, secure authentication, and secure data storage to prevent hacking or data breaches. Ensuring good security is crucial for user trust and privacy protection.
High code quality in software refers to the level of excellence in code structure, readability, maintainability, and efficiency. It means that the code is well-designed, follows best practices, is easy to understand, modify, and debug. Also, is the software developer-friendly? We often use codebeat as it checks repos, assesses quality through static analysis and calculates various metrics.
You’ll also be able to avoid paying down technical debt in the future if you got solid code that withstands the test of time and innovation.
An important part of having high quality deliverables is test coverage. Test coverage tells us what percentage of the code has been tested out, and whether there are duplicates of the code somewhere.
Velocity as a KPI refers to the speed at which features are delivered or tasks are completed. You can measure velocity with cycle time, which calculate the average time it takes to complete one full development cycle or iteration. You can also use DORA metrics, which calculate lead time, deployment frequency, mean time to restore, and change failure rate to assess the efficiency, reliability, and overall performance of the development team.
Before we pivoted, our first product iteration was called cyclebeat. See below a screenshot.
cyclebeat analyzed cycle time and looked at the quality of the code delivered. In particular, it assessed how long a piece of code was in review, how much time it took to review the code, how long until the first commit, how much on rework, coverage of code reviewed, etc. For us, velocity is always measured with reference to the quality of deliverables.
But these metrics, in my opinion, mean nothing. During the discovery phase and defining our product, after meeting with dozens of engineering managers, we found out that the most important thing was people.
If you don’t prioritize the happiness, job satisfaction, and wellbeing of your developers, then the rest doesn’t really matter. Great work being done becomes a natural derivative of wellbeing and happiness.
Peopleware: Happiness, Wellbeing, & Job Satisfaction
Peopleware refers to the human element in software development, including team dynamics, communication, management, and overall happiness and satisfaction. You might’ve heard this term mentioned way back in the 80s as it was coined by Demarco & Lister. Their book called ‘Peopleware: Productive Projects and Teams’ is a classic, and is one of the first books I ever read about how to run software teams.
Peopleware fits into this context as a KPI because building software is ultimately a human activity and understanding how people work together is essential for project success.
With technological innovation growing at a fast pace, we sometimes forget the human element, the part about finding happiness using the latest tools to build solutions that people want.
In my opinion, the happiness, wellbeing, and job satisfaction of software developers are way more important than any performance metric - we want to actually humanize our developers and not treat them like code-crunching robots 🤖
When pulse survey data show high levels of happiness and wellbeing, they directly impact motivation and productivity. The overall result? High retention, better collaboration, solid and teamwork.
I love when people say, “Trust the data!” We should, of course, trust the data, but I’m not going to use all of it, especially the data that don’t help my engineering managers and technical team leads lead their developers with compassion, context, and a sense of direction.
If you’d like to know more about how to discuss happiness and wellbeing in a one-on-meeting, check out this post here.