Software development: 5 career lessons from running 🏃🧑‍💻
Tags: career, motivation, productivity, beginners
Published: 2020-03-04 16:41:52

Last year I took up running and I wanted to share some things I learned along the way. Basic lessons, bordering on the self-evident, that can be applied to running, other sports or, why not, career development.

## #1 - Starting is the hardest part

At first I couldn't run five minutes without taking a walk break. After years of being a couch potato my body and my mind weren't prepared for this. Starting was going to be hard and I had no other choice than accepting it. But, as it usually happens, I'm not a special case.

{% youtube R2_Mn-qRKjA %}

> Every day it gets a little easier. You just have to do it every day. That's the hard part.

**Couch to 5K (C25k)** is a beginners 8-week program that starts with a mix of running and walking, gradually building up strength and stamina to fully running 5K.

So I went through the pain of completing the full program and, imagine what... I saw progress! Who would have imagined? Developing a new skill (like running) is a process made of different stages.

The **four stages of competence** are the psychological states involved in the process of progressing from incompetence to competence in a skill:

1. **Unconscious incompetence**: The learner isn't aware that a skill or knowledge gap exists.
1. **Conscious incompetence**: The learner is aware of a skill or knowledge gap and understands the importance of acquiring the new skill. It's in this stage that learning can begin.
1. **Conscious competence**: The learner knows how to use the skill or perform the task, but doing so requires practice, conscious thought and hard work.
1. **Unconscious competence**: The individual has enough experience with the skill that they can perform it so easily they do it unconsciously.

As software developers we go through these stages, not once, but multiple times in our careers. It's a cycle that starts over and over again at different levels. Starting a new job in a new position, new project with a different team, new programming language or paradigm, new framework... They all require us to master new skills.

## #2 - Don't compare to others

Once I finished the 8-week C25k program, I started looking at my times and comparing them to my running friends'. Then I started wondering. Why am I so slow?

There's an immediate and easy answer to that question. I had just started running. But very rarely do we just accept this obvious truth. Because... other people who have also just started running are faster than us. Well, the truth is that genetics also plays an essential role in running performance, along with age, exercising history and a myriad of other factors. It would be impossible for you to know how all of them are affecting other runners.

We tend to make a lot of assumptions. But the truth is that reality is way too complex to make these direct comparisons.

But the main reason why you shouldn't compare yourself to others is this one:

> Comparison is the thief of joy.

A much more positive approach is to compare with your previous self and focus on your progress.

Career comparison can also be dangerous, even if the original intention is positive. Pay inequality is a big problem for underrepresented groups, not only in tech. Making it visible might seem like a good idea. Trying to get everyone to go public with their salaries, however, starts an infinite loop of misleading comparisons where all the individual circumstances are ignored.


## #3 - Set achievable goals

Being able to run 5k was my first goal. Running a marathon wouldn't have been realistic given my fitness level. Setting long-term goals is a good way to improve motivation, but I prefer working towards short-term ones. Some short-term goals I've already achieved include:

- Completing C25K.
- Joining a running club.
- Doing a [parkrun](http://parkrun.org.uk/).
- Running a 5k race.
- Running 10k in under 1 hour.


These are **S.M.A.R.T.** goals, as defined by *George T. Doran* in a paper included in the November 1981 issue of *Management Review*:

- **S**pecific (simple, sensible, significant).
- **M**easurable (meaningful, motivating).
- **A**chievable (agreed, attainable).
- **R**elevant (reasonable, realistic and resourced, results-based).
- **T**ime bound (time-based, time limited, time/cost limited, timely, time-sensitive).

{% tweet 1207854448086835203 %}

Need inspiration for your programming goals? Have a look at the comments on this post.

{% link devmount/what-are-your-goals-as-developer-for-2k20-4g95 %}

## #4 - Slow down to avoid burnout

Ok, I can run. But I am very slow so I set a (SMART) goal to run 5k in under 25 minutes by the end of the year. So every time I go for a run, I push really hard to try to do a new PB. This, obviously, doesn't work. Your body and your mind need recovery.

Multiple studies have shown that runners of all ability and experience levels seem to improve the most when they do approximately 80 percent of their training at low intensity and 20 percent at moderate and high intensity.

Feeling drained from pushing too hard is not alien to software developers.

{% tweet 1213136318139699200 %}

Burnout is, unfortunately, a common phenomenon in our career. It can be defined as a state of physical or emotional exhaustion that also involves a sense of reduced accomplishment and loss of personal identity and is often due to long-term and unresolvable job stress.

Want some tips to avoid burnout? [Addy Osmani](https://twitter.com/addyosmani) has you covered.

{% tweet 1207395911405453312 %}

## #5 - Learn from others

Running is a sport that suits introverts and extroverts. A long run is perfect for those who enjoy having me-time. But it's also great as a social activity. You can do it with friends, colleagues or a running club. Even though I lean towards the introverted side of the spectrum and I do a majority of my runs solo, I've enjoyed running with my colleagues every Thursday or at my local [parkrun](https://www.parkrun.org.uk/hackney-marshes/) (where I also volunteer). Sharing my experience with others has increased my motivation and taught me a lot about running.

If you enjoy the social component of software development there are a lot of ways to keep yourself up-to-date with new technologies, get to know new interesting people and work on interesting projects:

- Meetups
- Hackathons
- Tech talks
- Open Source community

Some of these social gatherings can even push your performance to unimaginable limits...


{% tweet 1199794084669345792 %}

## Conclusion

Taking up running has made me reflect on basic aspects of career development like the four stages of skill competence, setting SMART goals, the importance of avoiding burnout, or the social aspect of learning.

Think about them. They will help your career in the long run.