Let’s talk about metrics: Courage Driven Development


Software metrics and a team’s metrics

How often do you check the metrics of your team?

If this happens more frequently than once per month, your team is rather unique. When working with various IT organizations, I have noticed that people tend to avoid this type of conversation. I was curious about the reasons, especially as I have seen many teams very much into software metrics who nevertheless did not pay very much attention to their team’s metrics.


Data-driven engineers

Our work relies on data. We want to know the technical statistics of our software. We are curious how many requests our system can handle per second or how large is the data volume processed by our servers. This data is often called “software metrics”. By observing them we can react whenever we see that our system is not as capable as we would like it to be.

Before we start to code our application, we need to know what we would like to build (our goal) and how we intend to get there (our path). Once we know that, we can start preparing a backlog for our product as well as the system’s architecture and infrastructure. Then we can finally start writing our code and making our first commits. However, to be successful in building our system we require something more. We should know where we are on our path and how we are progressing.


Position on the map

Of key importance for us is our position on the map. Sailors call this “latitude” and “longitude”. These two dimensions help us identify our current position along the route. These are the metrics of our journey. They tell us whether we are on route or whether we are drifting off course. And if we are drifting off course, these metrics enable us to correct our position. It sounds simple, but in fact, this principle allows drones to fly and autonomous cars to drive. It is called the “closed feedback loop system”.

These systems work thanks to the comparator element. It reads the output signal from the process (position of the drone) and compares it to the input value (set on the remote control) in order to achieve the desired outcomes (the flight route). This is executed by complex algorithms which do all the math behind it. Still, nevertheless, it is a fairly simple concept and these algorithms are successfully implemented in electronic devices such as drones.

Picture 1. Closed feedback loop system.


Courage to read metrics

This approach becomes more challenging, however, when it comes to human nature. Our biological computers are designed in a unique way. To simplify the process a little, we acquire an additional module in the closed feedback loop system. For now, let’s call this a “chemical module”. Input data flowing into our brain causes a chemical reaction in the “chemical module”. As a result, certain chemical substances are released into our blood to notify our body about current conditions. Thanks to this information we can react properly to a particular situation. People refer to this notification mechanism as “feelings” or “emotions”. And here when things get complicated. By checking the team’s data, we can see that we are not at the point we wanted to be and we may feel disappointed.

Picture 2. Closed feedback loop systems with emotions module.


The difficulty is when we read the team metrics. Then we may experience feelings we would rather not feel. So, we tend to avoid looking at this kind of data which may cause unwanted feelings. This is just like sailors who have just realized that they will not reach a safe place before a storm. It would have been better if they had checked their position and the weather forecast and changed the route, but that would have disturbed a pleasant sailing day. That’s why sailors sometimes forget about checking the weather - believe me, it happens.


Embrace metrics

It requires courage to look at metrics, which reveal some of the truth about us and our situation. But sometimes it is worth being bold. If we are not happy with the metrics it may lead to disappointment. However, confronting these though feelings can drive our development and help us achieve the results we desire. It will pay off at the end of the project. Thanks to this we can experience positive feelings, such as excitement and fun.

We just need to accept the risk of experiencing different feelings and instead embrace our metrics.

The author of the article is Tomasz Manugiewicz - Agile Coach in Gaming channel.