There are a surprising number of programmers training Brazilian Jiu Jitsu in my professional network. BJJ and programming seem like they have absolutely nothing in common, so why would two completely unrelated activities attract similar people? Although they are an unlikely pairing of interests, these two diverse activities complement each other astonishingly well. If you’re looking to improve your coding chops, consider the following.

1. Get moving

Programmers are stationary for much of the day. Research has linked sitting for long periods of time with a number of health concerns, including obesity and metabolic syndrome — a cluster of conditions that includes increased blood pressure, high blood sugar, excess body fat around the waist and abnormal cholesterol levels. Too much sitting also seems to increase the risk of death from cardiovascular disease and cancer.

Spending just one hour grappling a few times a week will dramatically offset any negative effects of a sedentary programming lifestyle.

The American Medical Association (AMA) recommends standing desks as one alternative to sitting, and many companies are providing standing desks as an option for their employees. However, new studies show that being on your feet for long periods of time at work can lead to painful back and muscle problems in later life.

Training one hour of BJJ burns over 1000 calories. The movements involved activate the entire core, including the abdominals, back, and hips. BJJ is unique among martial arts in that opponents can perform at 100% intensity without major risk of injury. Spending just one hour grappling a few times a week will dramatically offset any negative effects of a sedentary programming lifestyle.

2. Understand the importance of humility

There is absolutely nothing more humbling than having to tap out from a submission when rolling jiu jitsu. Everyone who trains BJJ has experienced this on a regular basis. Tapping is part of learning. And like grapplers, programmers should be acutely aware of the things they do not know.

I know that I do not know.

Socrates

In programming, as in many things, your greatest adversary is yourself. If you think you know it all, you are not actively improving your skill-set. Learning programming, and learning jiu jitsu, never stops. New techniques are constantly emerging, and it takes a significant effort to stay up to speed on the latest and greatest, or risk falling behind.

Humility will incentivize you to improve yourself, constantly. Stay humble, and keep learning.

3. Sharpen your technical chops

Details matter. In BJJ, the difference of just one inch can often mean scoring a submission, or losing your position. The techniques taught to beginners are constantly refined as a BJJ practitioner advances in rank. When I was a blue belt, I specifically remember re-learning the Americana (an arm drag), one of the first submissions taught to white belts, by changing the angle to make a much more effective submission.

Simply copying and pasting a solution into a production application without fully understanding what it does could spell disaster.

Similarly, the difference between a web request that takes milliseconds, and a request that takes 15 seconds could mean the loss of real money. As a programmer, the ability to optimize algorithms and queries, and to understand what is really happening when performing math or logic within an app is invaluable. Finding an answer on Stack Overflow, and simply copying and pasting a solution into a production application without fully understanding what it does could spell disaster for a project.

Having the respect for the attention to detail required for stable, optimized code will make you an indispensable programmer.

4. Work together, yet individually

Programming requires extended periods of time working alone, highly focused on the task at hand. However, it also requires being able to collaborate with other team members, and even paired programming in some situations. So really, you need the ability to work alone, managing your own time and effort, and the ability to work as a group, delegating and communicating effectively with others.

BJJ teaches both individual responsibility and teamwork.

BJJ is not a team sport, in the same way that golf or singles tennis is not a team sport. But you are often part of a team — representing your school or organization at competitions, and training with the same people at your gym day in and day out. When learning new techniques, it’s important to be a good drilling partner — providing just the right amount of resistance so that your partner can effectively complete the move without making the situation unrealistic. But when it comes down to competition, it’s just you against your opponent, and it’s up to you alone to face the task at hand.

BJJ teaches both individual responsibility and teamwork, the balance of which transfers directly over to life as a programmer.

5. Learn to improvise

Things rarely go exactly as planned. No matter how much time is spent up-front planning a project, unexpected issues or changes will inevitably materialize throughout the course of production. Being able to think on your feet, face the problem at hand, and quickly implement an effective solution is the mark of an experienced programmer.

Even though a chess board is setup the exact same way for each match, it’s impossible to predict exactly how everything will play out.

The same holds true in jiu jitsu. The sport is often compared to chess in its complexity and strategy. Even though a chess board is setup the exact same way for each match, and you may have an extensive plan in place for your opponent, it’s impossible to predict exactly how everything will play out. Experienced BJJ practitioners will react quickly and instinctively to a change in plan without even having to think about it.

Accepting that things will not always go according to plan will help prepare you for when new challenges or change requests arise in any project.

6. Embrace a lifelong endeavor

Achieving the level of black belt in BJJ can take upwards of 10 or more years of training. But the journey doesn’t end there. The sport is constantly evolving. New techniques are developed regularly, triggering even more new techniques to counteract those. At the highest level, black belts are continually learning and creating new techniques and counters as the sport continues to mature.

Embracing and falling in love with the lifelong journey is paramount to staying effective and relevant.

Similarly, a successful programmer is constantly learning. New web capabilities are emerging rapidly, the mobile space is only just beginning, and brand new technologies like artificial intelligence and virtual reality are still yet to go mainstream.

Embracing and falling in love with the lifelong journey is paramount to staying effective and relevant.

7. Become what you love

We are more than our actions, but immersing ourselves in our passion transforms us into something greater.

Immersing ourselves in our passion transforms us into something greater.

BJJ is addictive. It’s not for everyone, and the overwhelming majority of white belts never receive their black belt. But for those who connect with the sport, a flame is ignited in their soul, and BJJ becomes a part of them. This passion drives us to excel, to train harder, and to study the sport every way we can. It becomes the reason for the food you eat, why you trim your nails, how you look at the world.

Programming can simply be your job. Or it can just be a hobby. But when it becomes your passion, everything changes. Get involved with the programming community, follow leaders in the industry, and build your own side-projects. When you surround yourself with the art of coding, everything gets easier. You’ll solve challenging programming problems in your sleep. You’ll build works of substance. And you’ll give back to others.

Brazilian Jiu Jitsu’s technical nature, required dedication to learn, and its reliance on individual willpower and strength to succeed separates the sport from other endeavors. These qualities parallel the life of a programmer. I encourage every programmer to learn more about the sport, and to see for themselves how the principles and culture of BJJ will help to bring their skill-set to the next level. Most importantly, be passionate, have fun, and make awesome things!