Why Running 237km in Sahara and Being a Salesforce Dev is Exactly the Same

So I spent April in Morocco participating in Marathon Des Sables. Considered one of the hardest races in the world. A write up of the run itself can be found here.

We were also fortunate enough to be featured in a web series segment by MDS. A play list to our segments can be found here.

Around the 50km mark , when the usual questions started circling my head "What sort of person spends Easter running in a desert?" the answer was obvious "the exact sort of person who works as a SF dev for almost a decade." As I pondered this and what it meant over the next 50, this article wrote itself. Without further ado, here's why being a SF Dev and an ultra-runner is exactly the same.

1. Nobody Will Understand What You Do

SF: Are you a config specialist? How do you connect to the database? Where are the servers? Regular developers do not understand your trials and tribulations. They don't understand how you work with the environment. You'll be called everything from foolish to stupid.

Ultra-Running: So do you run the whole way? You're just hurting yourself! Did you win?  If you're a long distance runner the average joe/jane will not know what your day looks like, what a long distance run involves, how a human body is able to handle the distance and why you do it.

Lesson: Searching for validation from elsewhere is a wild-goose chase. Don't let others' opinions about what you do affect your self worth. Your identity is not defined by a title. Your successes and failures are internal first.

2. Test Everything

SF:Mandatory unit testing is not the end of your testing experience. Functionality test for all realistic scenarios both using Unit Tests, but have FUN with it. See what frameworks work, see what functions operate with what speed. Read blogs on frameworks and apply them to various projects.

Ultra-Running: You don't want to find out at the 30k mark that your shoes are too small, or don't handle rocky terrain, that your backpack chafes and that your gels make you sick. Buy the equipment early, try it out and simulate the conditions you'll be in. See what your backpack feels like with 15kg in it, what your shoes do when wet, if your shorts rub in sweat.

Lesson: Functionally testing for all scenarios may not eliminate all risk of things going wrong but can certainly prevent a long night with egg on your face. Also don't trust product documentation.

3. You Don't Know What You Have to Offer

SF:Being punched in the face in my kickboxing history means I am completely unphased when things get heated in a meeting room. Working in a busy kitchen for 3 years means I don't get stressed by deadlines. My degree was of questionable worth as a whole, but the week we spent on DFD diagrams and normalisation has been invaluable in my learning of system design. Buying a house meant I had an understanding of the general real estate industry and this led  to the successful sale and development of more than 10 SF projects.

Ultra-Running: SF taught me to focus on one problem at a time - the next kilometer, the next checkpoint. To know my resources and utilise them. I've got great proprioception in the mountains due to downhill biking, and a survival course taught me how to tell how much time I have left with the sun up (arm outstretched, hold up your hand just below sun and count how many finger widths you have until the horizon -  each finger is about 15 min). Years in acrobatics and martial arts means I can assist fellow runners with injuries via strapping, massage, or telling them to harden the fuck up.  All these skills come useful during an event, in training. Your approach to a run is going to be as unique as your experience.

Lesson: Having YOUR SPECIFIC SKILLS is your contribution. Just because your resume may not have the specific skills needed for the project does not make you worthless. You very well may be the x-factor that gels the team together and even you might not know what that trait or skill is.

4. Be a McGuyver, Not a Batman

SF:There's a reason experience counts for more than certs in our world. Even if you know the system backwards, hitting problems and resolving them is where you grow as a developer. Make your toolbox and resources malleable - your shortcuts, backlogged code base and communities to ask for assistance. Being able to solve a problem on the fly is infinitely more valuable than trying to predict every issue and edge case.

Ultra-Running: You can worry about how you'll portion your food, whether your shoes will fall apart etc. Just bring some rope, a small multi tool, some electrical tape and you'll be able to patch yourself and your equipment for 15 grams of weight.

Lesson: Knowing how to fix issues is more important than worrying about them occurring.

5. Be Self-Sufficient

SF:Carrying a laptop, charger, display adaptor and mobile phone is an absolute must as a contractor. Relying on client's equipment severely hampers your abilities. Personally I find it an incredibly rooky mistake to show up to a meeting on time only to discover that their wifi is slow, they don't have a HDMI cable or that they don't have a machine for you to work on. The number of times I mocked up a demo or put a hotfix together on the steps outside of a client's office, or at the local pub, is ridiculous.

Ultra-Running: Have a spare change of clothing in the car. Have your own first-aid equipment and a few extra calories. Nothing sucks more than finding yourself with a spare hour to train next to a beautiful beach and not having your gym gear. You can't rely on event organisers having first aid supplies or having the time to deal with your injury. Having a strapping tape and knowing how to use it can save you valuable time and might also assist others.

Lesson: You will be more useful, more productive and feel better about yourself if you have the basic supplies to function. Even if you don't need the equipment, you may be able to be of help to others.

6. Know Your Limits

SF:SF limits and predicting hitting them, is arguably the most important aspect of the platform to learn.

Ultra-Running: Marathon race day is not the time to see if you can drop your mile time by a minute. Set your expectations, and by all means try to exceed them, but know that you're in the danger zone.

Lesson: Know thyself, know thy platform. Exceeding limits is dangerous and knowing where those limits are will help you bypass them.

7. Don't Be An Asshole

SF:How many times do you jump into a system and see the work of the past contractor and your first reaction is, “Great. A hotfix into a complex system, a bump test class, no comments, unmaintainable, unscalable with zero details of what caused the requirement” The worst part is that I’ve been on both sides of the fence and I’m deeply sorry to whoever had to look at the garbage I wrote. It's rude to the client and to the next poor sob who has to look at the work. It doesn’t matter what sort of pressures are exuded on you; it’s unfair to the next developer to write bad, unmaintainable code.

Ultra-Running: An additional 3 spots to move you from 157 ranking to 154, is not worth cutting off other runners, shoving through corales. Respect your fellow competitors, this may mean a whole lot more to them than you realise and while you’re trying to cut your 5k PB (personal best) down by 30 seconds, they are running their first race ever after a 30kg weight loss.

Lesson: Be considerate to others. You may be in their shoes one day.

8. It's Okay to Show Off

SF:Wrote a nifty trigger? An efficient algorithm? Finished a project just in time for a presentation? Tell people about it. There's a support network out there and there is nothing wrong with taking pride in your work. It drives you, it shares your solutions with others. Work SHOULD feel good.

Ultra-Running: This post is the essence of vanity and that's fine. Achievements can be shared and people will find your hard work inspiring, it doesn't have to go unnoticed in the trees and mountains where you sweat for your passion.

Lesson: Celebrate your achievements, it makes you a happier person.

9. Trust Your Body

SF:That failing project requiring 12 hour workdays, with a thankless client? Not worth your time or your health. The project will probably fail immediately after launch, and the client review will still be negative. A blown deadline is NOT WORTH your mental health, your time with family, or even time out of your hobby. You will not write good code at 2am if it's unusual for you. Of course there are 5 crashing projects at the same time. It's okay to push back on unfair deadlines or unfair managers and even if it makes the client or the manager unhappy, 7 years down the line, you'll be happier that in a time of turmoil you didn't compromise your principles or your dignity.

Ultra-Running: There’s a well known pain tolerance guideline: On a scale of 10, if at training you hit a 4, STOP, if at an event and you hit a 6, GAME OVER. Listen to your body, if it's hurting in an unusual way at a usual distance, there is very real possibility something is wrong. I shrugged off a pain in my shoulder for 2 months. Turned out a prolapsed disk was pinching a nerve. Almost grounded me from training for life, causing 7 months of rehab, 5k of expenses and 3 months of severe depression...mostly caused by not freaking listening to my body and getting treatment for the niggling injury. One of the runners from the event collapsed with 10k to go after finishing 220 and is being flown out of country to face skin grafts due to the blistering of the feet. No event, no medal is worth severe injury.

Lesson: Keep your ego in check and rest when you need it.

With all this in mind, have fun with what you do, professionally or personally, and don't let others define your worth. Keep hacking, keep running, keep being awesome.


  1. Thanks for sharing these nuggets, Dr. Nick. Stumbled into them from a SF Success Community Group. #4 says it all, for me.


Post a Comment

Popular posts from this blog

A Recursive Headache: Custom Security Solution

Magic Parents