Quantified software engineer

Almost everything we do today generates some kind of digital footprint. This applies to our day-to-day life and even more so to the work we do as software engineers. When it comes to the data generated while developing software (data generated by issue trackers, version control, etc.) it’s already widely used by companies to track the performance of the company as a whole or of specific teams.

One of the most important virtues of software engineers is our strive to constantly improve ourselves. We try to stay on top of emerging technology trends, which require us to make changes in our lives every now and then. Speaking of making changes, we usually ask our employers to drive their decisions based on data, but when it comes to ourselves we often don’t have such high standards because we consider our personal lives and work too convoluted. This is where Quantified Self or Self-tracking comes into play.

We tend to think of our physical selves as a system that's simply too complex to comprehend. But what we've learned from companies like Google is that if you can collect enough data, there's no need for a grand theory to explain a phenomenon. You can observe it all through the numbers. Everything is data. You are your data, and once you understand that data, you can act on it.

Mark McClusky

What is Self-tracking?

Self-tracking is a practice of collecting data describing certain aspects of our lives in order to discover patterns in the data and use that knowledge to make adjustments to our behaviour leading to improvements in these aspects of our lives.

People have been logging their lives for centuries, for instance, in his biography, Benjamin Franklin described his project of “moral perfection”. He identified thirteen virtues he found important for his growth and then he proceeded to record every time he failed to respect that virtue. At the end of each week, he reviewed the logs and focused his attention on not making the same mistakes the next week.

The recent introduction of various technologies that facilitate Self-tracking practices has made starting similar self-improvement projects almost effortless. Various devices let us turn everything we do in our daily lives into data. The most common areas where self-tracking is used nowadays are health, well-being, fitness, and diet.

Unlike the allegedly subjective information that people receive from their senses and through observations, digital data carry with them an aura of scientific authority.

Deborah Lupton

Security and privacy

Self-tracking could generate a lot of data, often extremely sensitive data, therefore it’s important to think about the usage and protection of the data.

Unfortunately, many self-tracking solutions don’t give you full control over your data. When you start Self-tracking you are often forced to make compromises since many devices and applications don’t give you direct access to your data. Instead, they make you put your trust in them by uploading your data to their cloud. And sadly, sometimes they don’t make a very good job at protecting it. Back in 2014 Symantec conducted a review of self-tracking devices and applications. They found out that about 20% of the devices and applications transmitted sensitive data (including passwords) in clear text.

Luckily more and more open-source alternatives are emerging that allow you to keep your data. A great example is ActivityWatch which tracks your computer activity without giving up your data, which makes it a great alternative to other time-tracking services.

activitywatch (1)

Benefits and risks

Self-tracking allows you to become more aware of certain aspects of your life that may have been hidden from you before. It also provides an empowering feeling of being in control of your destiny, and it helps and motivates you to stay on track with your goals.

In some cases, Self-tracking could also be a great self-marketing tool. For example, Felix Krause and Stephen Wolfram are both doing a great job not only using the data to learn more about themselves but also to promote themselves.

There are some drawbacks to Self-tracking too. For instance, some people may become too obsessive about the data to the point where they stand the data above their own senses and feelings. Other people’s state of mind can be affected when they don’t see the numbers trending in the right direction. Some people may find themselves doing things they don’t really want, just for the sake of meeting their goals. In addition to that, running a Self-tracking project can be time-consuming, which makes many people drop it without achieving any of their goals. And the list goes on.

Even though Self-tracking has many indisputable benefits, you’ll only be able to benefit from it if you have enough discipline and self-awareness to tackle all of its problems. In other words, it's not for everyone, but as long as you are driven by a strong intrinsic motivation, you'll likely be able to tackle most of the risks of Self-tracking.

Communal self-tracking

Even though Self-tracking is centered around an individual, it’s not particularly individualistic. In fact, the Quantified Self movement encourages Self-trackers to share their data with the community. One of the many benefits is that it allows other people to help you understand the data, identify patterns and draw insights from the data you generated. You can either decide to share the data with your close ones or if you are brave enough you may as well share your data with the whole internet (e.g. on the Quantified Self forum or r/QuantifiedSelf).

Sharing your personal data with a small group of people that are close to you may help you garner support for the changes you are trying to make.

There are also many specialized social platforms designed for sharing and comparing data with other users, such as Strava which allows you to share your physical exercise data. The possibility of someone watching your activity may be a motivating factor for some people to exercise more often or work harder.

Self-tracking at work

The workplace has become one of the key sites of self-tracking. Many employers are using digital self-tracking technologies to increase the productivity of their employees but they also use them for health and safety reasons. For instance, some companies ask their truck drivers to wear wearables tracking their level of tiredness.

If you are a software engineer the chances are that your employer most likely won’t ask you to do anything like that. But if you want to grow as a software engineer you may want to adapt some kind of self-tracking to your work life because as many people say: unless something is measured it cannot be improved.

When it comes to measuring things like the number of commits, pull requests, etc. we, software engineers, tend to look down on these metrics because we know that they are not perfect. They are missing the necessary context and it is easy to game them. This makes them quite unusable when measuring company or team goals. On the other hand, using them in the context of Self-tracking makes a lot of sense, because we can easily provide the missing context, and we don't have the motivation to game the metrics.

How to start self-tracking?

1. Define a set of questions you want to answer

Articulate the reasons why you want to start Self-tracking. Maybe you don’t have any specific problem in mind and you just want to get a better understanding of some aspects of your work life. Maybe you want to answer a very specific question, e.g. “How much time do I spend doing code reviews?”.

It is usually a good idea to define when it is appropriate to start analyzing the data. This time parameter is specific to the behaviour you are tracking. For instance, you may only need 1-2 weeks' worth of data to be able to tell how many pull requests you review daily. On the other hand, if you want to find out how the number of reviewed pull requests correlates with your team's number of production deployments, you may need to collect at least a couple of months' worth of data before you delve into the data analysis.

2. Collect data

Based on your goals, decide what kind of data you need to collect. For instance, you may want to make sure your team delivers solutions as quickly as possible. You may then ask yourself what measurable aspect of your work-life may be relevant in contributing to this goal. One of the many interesting metrics for you to look at here could be: How long does it take for you to review the code of your peers?

For more complex questions it may be difficult to correctly identify what kind of data is worth observing. Don’t feel bad if you don’t manage to identify the correct metric on the first try. Try to redefine the question or try to look at the problem from a different angle.

At this point, it's worth reviewing the available sources of data or looking for new sources to get the data you need. Should you need data from GitLab to answer your questions, you can try to access the database or query it through API to get the data you need. If there's no easy way to get the data you need you may always fallback to the good old notebook, or a slightly better solution would be to use one of the journaling tools such as AskMeEvery or Daily Journal Questions on FlowDashboard to ask you some questions on a daily basis.

Another important thing to consider is how much work collecting the data requires. If it’s going to take a significant amount of your time, you’ll most likely drop it at some point. If you have defined a set of questions that require a lot of metrics, try to look if there’s a metric that’s more impactful than others and focus on it. It also helps if you automatize some parts of the data collection process.

3. Observe the data

Now that you have started collecting data, you may start analyzing it. It's usually a good idea to create a baseline as a first step. By understanding the current state of things you'll be able to observe the impact of your changes later.

In case you are collecting data from various sources you may want to aggregate it. There are solutions like QS Ledger that can help you with that, but keep in mind that the number of supported integrations is usually quite limited, so you most likely won’t be able to find a perfect aggregator that covers all your data sources.

Since the main goal of Self-tracking is discovering patterns you need to find a way of visualizing your data. You can either use the tools you already have, such as GitLab Analytics, or some of the specialized personal analytics apps such as Flow dashboard or exist.io.

If you don’t have experience with data analysis you may have difficulties making sense of the data you collected. If that’s the case, you may consider talking about the possible ways to approach this with someone who has some experience with data analysis. Alternatively, you can check out how other people in the Quantified self community approach similar problems (e.g. Quantified Self forum or r/QuantifiedSelf).

An important thing to keep in mind when analyzing the data is the context. Self-tracking is not merely about collecting data and looking for patterns. You sometimes may need to make meaningful connections to other things, such as life events, your personality traits, etc. For example, if you see that you only manage to resolve a small number of issues every month, it doesn’t necessarily mean you have not been as productive as you could have been. Perhaps you just prefer tackling big problems rather than a lot of small ones.

4. Draw insights

Now that you have a better understanding of your data, you can start acting on it. If you’ve managed to identify problems or room for improvement when analyzing the data, you can start implementing changes to your habits.

Self-tracking isn’t about achieving perfection, so don’t feel bad if you don’t see your charts skyrocket after making a small change to your daily routine. Instead, try to either redefine your questions or switch your focus to solving a different problem that may be more impactful now.

Final thoughts

In case you weren’t a Self-tracker already, I hope reading this article gave you a better understanding of the Quantified Self movement, and hopefully, it sparked some ideas to look into some aspects of your life that could benefit from it. Remember, if you decide to start a Self-tracking project of your own, it doesn’t have to be perfect from the very beginning. You don’t have to use dozens of devices and apps to measure every aspect of your life. Start simple.

As a software engineer, you most likely already have a ton of data at your disposal, that’s just lying around unused. If the Quantified Self movement caught your interest a relatively easy way to become a better version of yourself would be to start utilizing the data you already have.