Starting a software project, it is wise to track its health and progress rather than just awaiting how it all ends. This is where key performance indicators (KPIs) come to the rescue. Software project KPIs are certain metrics that enable you to measure crucial aspects during the entire software development pipeline. This way you get a full understanding of how efficiently your project is progressing. Besides, armed with these indicators, you can identify certain project issues on the go and start fixing them on the early stage.
The basics of key performance indicators
When you ask about software project KPIs is very likely you talk about key performance indicators for a software development team. These metrics cover the developers’ efficiency and can be assumed as a clue to the insight of project delivery date estimation. Note, this is not a question of the single developer’s efficiency but the efficiency of the team as a whole. After all, as a customer, you don’t need to know who exactly block or facilitate project progress. You need the job to be done within your deadlines.
When it comes to measuring software development team performance, there couldn’t be two similar KPI values for two different projects. Because each project is unique. Moreover, they are helpful only when they involve preliminary planning. In other words, you need to set certain targeted values first and compare actually achieved values then.
Here are some software development KPI examples for outsourced projects we will discuss here:
- Team velocity and its derivatives
- Cycle time
Team velocity and its derivatives
Team velocity shows how much value a team adds to the product within the set milestones and represents the team’s ability to hit project milestones and deadlines. Here there are two derivatives. First, team velocity per each iteration. Second, cumulative team velocity.
Typically, delivered value means features and functionalities built. However, when it comes to software development, value includes software quality and potential performance as well. For example, you can build a file storage feature for your CRM system that allows only 1 Mb files to be downloaded or a system that successfully deals with files of any size.
Team velocity per each iteration
Here, you get a picture of your team performance within each iteration (or a milestone, if you choose). This kind of KPI metrics for software development is useful to understand at what stage blocks for the project have appeared and how efficiently the team has overcome them.
To measure team velocity, check how many tasks (scored, for example, in a story points) developers have implemented in each iteration. Ideally, the estimated and actually achieved numbers should match. If not, you need to analyze what has caused this deviation.Also, readjust the value after each sprint. Depending on the exact case, adding an uncovered task to the next iteration, you can either exclude certain previously included tasks or not.This is ok if the deviation arises at one of the iterations, though you always need to inspect its reason. On the contrary, the red flag is when the deviation repeats again and again or team velocity tends to slow down.
Cumulative team velocity
This metric deals with the team performance not during a certain period (sprint, iteration) but during all the iterations the project has gone through. In other words, it gives you an understanding of how efficiently your project progresses to its end. Moreover, it provides you with a clue on whether you will get your software on time or will face a delay.So, evaluate and set how much tasks your vendor's developers should implement during one, two, and more iterations. For example, if you set three points to be completed within each iteration, you will score 3 at the end of the first iteration, 6 at the end of the second one, etc. The actually achieved values there should match the estimated ones after every iteration. However, it is ok if there is a negative deviation after one of the iterations. You need to be alert, but still, chances are the team will manage to get back on track in a few next sprints. The worst case is a continuous increase in deviation. This means, your project steadily run behind schedule.
Another useful example of KPIs for software development projects is cycle time. Cycle time stands for how many man-hours it takes to bring the exact feature to production and deploy in the perfect state. It includes the main time during which this functionality was developed and extra time to debug and improve it.
To clarify, often, new bugs and vulnerabilities emerge after you get your first product version regarding this feature. So, you have to open new tickets to get these issues fixed, and your outsourced developers work to eliminate these bugs and vulnerabilities.This metric is especially important when you are on a time and material basis. Definitely, in this case, the time your vendor's software engineers spend actually working on fixing all the bugs and improving product performance and can be considered as your additional expenditures. As for the main time, the situation is similar. To clarify, it is the one thing when, for example, you estimate (and/or negotiate) the feature takes 50 man-hours to build, but the thing turns differ when you actually have to pay for 70 man-hours instead.So, the best (but, perhaps, rare in reality) case is when the cycle time is equal to the main time during which this functionality was developed. And, once and again, when the estimated and actually got numbers match.
However, it is worth mentioning that all key performance indicators are no more than indicators in their very nature. They don’t say for certain whether your outsourced software development team is good or bad. To clarify, they give you a direction where to be alert. Thus, you need to analyze each of these metrics and take into account all the factors that accompany and affect your project health.