I went on my usual morning run early on Monday. When running, I like to have something to focus my thinking on so that I don’t think about how tough the run may be. Today I was thinking about an interesting topic for this blog and it dawned on me that there are some interesting parallels between running and software development.
Can anyone do it?
I thought back to the motivation that lead me to buy my first proper pair of running shoes. Basically, I had tried many times in the past to run distance but found that after just a few hundred metres, I was exhausted. I had made up my mind that running simply wasn’t for me. Then, many years later I subscribed to the notion that we can do anything that we apply our minds to, and so I challenged myself to try and run again. Within 18 months of training and running short races, I ran my first half marathon! Point proven – we CAN do anything we apply or minds to, but we have to dedicate ourselves in order to achieve.
In the same way, we all actually possess the aptitude for software development, but not everybody wants to be a developer. If you do want to, and you apply yourself, you can do it.
How quickly will I be able to master it?
Like running, you won’t be able to knock out a fully functional application overnight. You need to ‘train’. You need to put in the hours and apply yourself in order to make small wins daily. Set yourself goals and increase the difficulty of your goals as you go. Soon enough you will be coding fit and ‘agile’ – see what I did there?
Food for thought
As a runner starts to build fitness, so you start to realise that your nutritional needs are changing. Your body need more nutrients. If you are serious about your running, you will start to make healthier choices, increase your intake of water and eat more often to help fuel your run. A developer who wants to excel understands that to stay ahead of the pack, you need to fuel your brain. It’s tempting to talk about coffee, red bull and other sugar filled foods that developers typically enjoy, but the analogy I am using here is the need for more and more knowledge that developers gain from reading blogs and articles. It is vital to be researching and learning constantly. Even better is to actually engage with other developers. Ask questions, share your experiences with other developers on forums – this will give you and others great benefit.
Keep looking forward to your end goal
One of the first things I was taught when I started running was that posture is important. It is very tempting to let your head slump when you are feeling fatigued, to look only at the ground immediately in front of you, but this is not good running posture and actually tires you even more. Instead, you should keep your head up and look to the horizon.
By the same token, coders often get stuck on minutiae, trying to get the ‘perfect’ line of code. Don’t allow yourself to get stuck with your head down. Always keep looking forward to your end goal. This way you will code great lines of code, and meet your deadlines and promised deliverables.
Face your fears
As I continued to think about these analogies on my morning run, I started to climb a nasty hill. This brought to mind another parallel about facing your fears. As a runner it is important to keep your cadence, or pace, as constant as possible, but hills are hills and they’re a challenge. The best way to conquer the fear is to face it head on. It’s also good to remember that the hill does not go on forever.
When coding, there will be tasks that are more difficult (or tedious) than others. But they’re part of the project, so it’s best to face them head on. Know that these tasks are part of the overall project and they won’t last forever. The more you practice these tasks, the easier they will become and the less you will fear them.
Team vs. solo
The beauty of running is that you can run solo, or with a partner or group. While it is often more practical to run on your own, you improve your performance when you are pushed by other runners. Other runners will share tips and offer you support when you need it to keep you going. Likewise, developing code is more of a solo mission, but you grow more when you collaborate with others. Never fear reaching out to other developers for advice and help.
There are so many analogies and cliché’s to draw on, not least of which is that we should never look back unless it’s to see how far we have come.