What I Learned from Martial Arts as a Software Engineer
By: Ardy Dedase
Tags: Life Lessons, Programming, Startup, Self Improvement, Productivity

What I Learned from Martial Arts as a Software Engineer

Some striking similarities between Martial Arts and Software Engineering. No pun intended :)

Photo by Nathan Dumlao on Unsplash

As someone who sits in front of the computer as a profession, I take my health and fitness seriously. I started training Muay Thai and Brazilian Jiu-Jitsu (BJJ) about a year ago. It’s one of the best decisions I’ve made. Before that, I was doing mostly strength and cardio training for years. I got bored with the repetitive nature of such workouts, so I decided to try martial arts.

I’ve been a fan of martial arts movies since I was a kid. Jackie Chan’s Drunken Master was the first “Kung Fu” movie that I watched. My father introduced me to Bruce Lee movies. My fascination with martial arts has evolved into following combat sports like Boxing and Mixed Martial Arts (MMA). I’ve also been following the Joe Rogan Podcast for years now. That has made my decision to sign up for a martial arts gym an easy one.

I’ve been pondering the crossover of ideas between being a Martial Arts student and being a Software Engineer that I had to write an essay to get my thoughts out.

Before I dive into what I learned from Martial Arts, let’s start with why I chose Muay Thai and BJJ, among all other options.

Why Muay Thai and BJJ?

I chose both martial arts because:

They are proven to be effective over the years until now with the popularity of MMA. I don’t condone any form of violence. However, the engineer in me justifies that if I’m going to learn martial arts, I might as well choose the ones that I can use in any unlikely situations.

They involve explosive movements. Training teaches me the martial art as a skill while serving as an intense workout.

They are accessible to me logistically. My MMA gym is walkable from my workplace and a bus ride away from where I live.

They are opposites. BJJ is the “gentle art”; there’s an emphasis on neutralizing the opponent. Muay Thai is the “art of the eight limbs,” which combines fists, elbows, knees, and shins to attack.

They compliment each other. BJJ is for fighting on the ground, while Muay Thai is for stand-up striking.

Being proficient in both Martial Arts is akin to being a Full-Stack developer. You are skilled in both front-end and back-end development; hence it allows you to build your entire application stack just like being a well-rounded Martial Artist.

10,000 kicks

I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times. — Bruce Lee

In my Muay Thai class, trainers require the students to repeat drills after stretching and warm-up. These drills are usually knee strikes or roundhouse kicks on the bag. Roundhouse kicks and knee strikes could range from 50 to 100 reps in total for each leg.

The same goes for my BJJ class. We repeat the same drills, such as forward, backward rolls, and hip escapes, before practicing the techniques or grappling.

The benefits of these drills are two-fold. (1) I will master the Muay Thai strikes or BJJ movements that I repeat to the point that they become second nature. Upon mastery, I won’t have to think about the exact mechanics of a roundhouse kick, like rotating my hips, using my hand to guard my face, and pivoting on my tiptoe. I tell my mind that I want to do a Muay Thai roundhouse kick, and my body will follow. (2) It conditions my body. For example, in Muay Thai, my shins adapt to the stress of hitting the bag. In my first month of Muay Thai, I always go home with bruised shins while limping. Then my body started to adapt to a point where hitting the bag doesn’t hurt as much as it used to.

As a software engineer, tasks like writing code, facilitating a useful technical discussion and presenting demos follow the same principle. I have to do the same activities over and over again to become good at it. When I was new to coding, I remember that I had to flip the pages of a book to write a simple select SQL query or implement a for-loop statement. However, after doing it some time, forming a for-loop statement in my head and writing becomes second nature.

What are you willing to do your “10,000 kicks” for?

Continuous feedback loop

Make feedback normal. Not a performance review. — Ed Batista

My Muay Thai Krus and BJJ Professors are continually going around checking each student’s technique. If they spot a bad technique, they will correct it before it becomes a bad habit.

In my first private session with a former Lumpinee champion, I realized that I wasn’t consistent with my techniques. My jab, cross, and hook weren’t generating as much power as possible because of my bad form. I tend to forget to pivot with my tiptoe when I do my roundhouse kick. I tend to fall into bad habits, especially when I’m gassing out; I’d unconsciously drop my hands, making my head open to attacks. Kru-Aek corrected all of these in one session. Now that I’m more aware of these bad habits, they are now stuck in my head every time I do my drills. Getting rid of bad habits and giving way to proper technique.

Some students can give you valuable feedback, as well. I recently sparred with a fellow white belt who’s ten years younger than me. He dominated our sparring session. It seemed too easy for him to take my back at will and submit me with a rear-naked choke. After our sparring, I asked him for feedback, which he gladly shared. We repeated the positions as to where I have holes in my game. He showed me what I did that made it easy for him to take my back. I learned a ton from feedback alone during my classes.

In my software engineering career, feedback could be in the form of a code review, document review, formal 360 feedback, Adhoc feedback, pair programming, or performance reviews. We don’t have to wait for the performance review cycle to gather feedback if we make feedback a norm. Constant and timely feedback course correct what could form a long-term bad habit. Seeking feedback has helped me become a better software engineer. Learning what areas you suck at and correcting them will bring you to the next level.

When was the last time you have asked for feedback? What was the most valuable feedback you have received recently?

Belt system and the software engineering ladder

The belt color in Judo indicates how hard your sparring partner can throw you down — Paraphrased from a YouTube or Reddit comment.

Your competence as a practitioner is the basis of the BJJ Belt System. Muay Thai does not have a belt system. However, some gyms do implement a similar approach using color-coded armbands or pra jiad [1]. Color and ranking follow a similar progression from no armband to earning one with color rankings similar to BJJ: white, blue, purple, etc. In my current gym, you have to have at least a white pra jiad (Level 2) before you can start Muay Thai sparring.

A black belt in BJJ takes on average at least ten to fifteen years to achieve. With a few exceptional cases like Gordon Ryan and BJ Penn. Gordon Ryan received his black belt when he was nineteen years old. BJ Penn received his black belt in three years and four months [2].

The belt system in martial arts somehow reminds me of the Software Career Engineering Ladder. Depending on your company, you start as an Entry Level Software Engineer, progress to mid-level then to Senior Software Engineer, Staff Engineer, Principal Engineer, and Distinguished Engineer. In theory, your “competence” determines your career progression. Every company has its own set of criteria for what it takes to reach a specific level. It’s not consistent across companies. A Senior Engineer in Company A becoming an Entry Level Software Engineer when they move to Company B is not uncommon. It’s similar in martial arts. In BJJ, for example, some gyms will require you to move down to a lower ranking belt when you join them. Or some gyms could get you promoted relatively faster than if you joined other gyms.

However, in martial arts, especially BJJ, instructors could put their gym’s reputation and their students at risk if they give away belt promotions to those who are not “ready.” Let’s say you have a group of BJJ black belt students from Dojo A who went out to challenge BJJ students in Dojo B. Dojo A’s black belt students somehow got beaten by Dojo B’s purple belts. Dojo A is most likely not the gym that I want to go to in this example because of the “watering down” that happens. “Watering down” is similar to software engineers’ “title inflation” in some tech companies. You get the prestige of the job title just like how you get the prestige of getting a black belt in “watered down” dojos [3].

The beauty of the BJJ belt system is that sparring sessions and competitions can test their accuracy. Similarly, they could also test an engineer’s readiness for promotion by assigning them responsibilities meant for the level they are aiming for. However, Software Engineering ladders in any organization are prone to inconsistencies, with people finding ways to shortcut their way to promotion [4], which will be harmful to their engineers’ careers in the long run. In BJJ, most of the practitioners I met, including myself, are focused on enjoying the journey. The belt promotion is not an end goal by itself. There is more focus on mastering the art.

Regardless of whether it’s a BJJ belt system or Software Engineering Ladder, any form of ranking judged by humans is still flawed. Testing the individual is the best way to achieve accuracy in the system. We should strive to give promotions to those who are ready for it. Give the belt to deserving people who can carry it. Otherwise, people will underperform if we promote them prematurely. It’s a long journey. Imagine the satisfaction of achieving your blackbelt after training in BJJ consistently for more than ten years.

What do you think about the career ladder that you are in? Is there anything you could do to improve it?

Humility

There is no losing in Jiu-Jitsu. You either win or you learn. — Carlos Gracie

“Styles make fights” — I always hear this phrase from boxing analysts. It means that no matter how good a fighter is, they eventually get beaten, regardless of skill disparity. There are fighters with a no-loss record, to name some of them: Floyd Mayweather (retired) in boxing, Jon Jones (discounting the disqualification), and Khabib Nurmagomedov (retired) in MMA. However, these fighters are one-in-a-million. A combat fighter is still bound to lose a match at some point, especially if they are undefeated in the early stage of their career [5].

When I roll with a sparring partner on the mats, my goal is to either win or learn [6]. “Losing” a roll is part of the process. Rolling reminds me to be humble. No egos on the mat. No matter how much I master a submission, someone else has already figured out a way to defend it. No matter how much I have practiced my defense, someone will find a way to sweep me. The goal is to finish the class as an incrementally better grappler than before I came in.

In my software engineering career, I’ve had so many “failures.” No matter how much experience you have under your belt or how much you have mastered a tech stack, the software you’ve built is not bulletproof to outages and bugs. No matter how much you’ve tried to help your team, some things are out of your control that could go wrong. No matter how good you think you are at what you’re doing, failure is inevitable.

I’m not saying that we shouldn’t aim to win. My point is to take full responsibility when we lose. However, don’t get too fixated. Learn from losing, stay humble, and move on.

What have you “learned” recently?

A never-ending journey

If you’re going to try, go all the way. Otherwise, don’t even start. — from Charles Bukowski’s Go All The Way

The world of martial arts is in constant progress. Martial arts practitioners invent new techniques. I don’t have a glamorous end goal in practicing martial arts. I want to become the best martial artist that I can be in my lifetime. I don’t aspire to fight professionally or even compete at an amateur level. I’m happy to regularly go to my gym, learn new techniques, have fun sparring, polish my game, and go home a happy man. It’s something that I look forward to every time I schedule my class. There is always something new to learn in every class; it’s either a new defensive technique, a new Muay Thai combo, or a new BJJ submission. I see myself practicing martial arts until I’m able to.

The world of software engineering is in constant progress. New software tools get introduced regularly. Open-source developers build new libraries to help software engineers become more efficient in writing software. I need to get better at my craft continuously. Like martial arts, I don’t have a glamorous end goal in my career as a software engineer other than becoming the best software craftsman that I can be. I always look forward to my day job as a software engineer. There is still something new to learn every day. I see myself writing code until I’m able to.

What’s your never-ending journey?

Staying true to the art

In closing, I will share an excerpt from the poem translated from Russian: My Sister — Life by Boris Pasternak. This poem reminds me of how I feel about practicing Martial Arts and being a Software Engineer.

And never for a single moment

Betray your credo or pretend,

But be alive — only this matters -

Alive and burning to the end.

I got to know about this poem from the Joe Rogan Podcast Episode with Lex Fridman. To quote Lex Fridman’s interpretation, which I think perfectly hit it home [7]:

Fame, recognition, money; none of that matters. The winning and losing; none of that matters. What matters is the purity of the art. Just giving yourself completely over to the art. Others will write your story, others will tell whether you did good or bad. Others will inspire using your story. But as the artist, you should think about the art, the purity of it and the love of it…

References