The Interplay of Brazilian Jiu-Jitsu and Programming
Written on
Chapter 1: Introduction to the Journey
Welcome to the world of Brazilian Jiu-Jitsu (BJJ) and programming! Whether you're a fan of one or both, this space is for you. It's important to note that while I hold a blue belt in BJJ, I’m not a black belt. On the other hand, I have over a decade of experience in programming!
The first steps in programming can feel chaotic. I still remember the thrill of writing my initial program in C, a simple “Hello World” that serves as an introduction to coding basics.
At first glance, it appears simple, but let’s delve deeper. This is the beginner's level, akin to the white belt of programming.
Step 1: Confirm you have a C Compiler installed. This essential tool converts your written code into a format that the computer can execute.
Step 2: Write your code. Syntax is crucial in C, as it’s a compiled language. One small mistake, like omitting a semicolon, can prevent your program from running! Here’s a basic example:
#include <stdio.h>
int main() {
printf("Hello, World!n");
return 0;
}
As you can see, writing code is more complex than it appears, requiring about five lines of C.
Step 3: Compile your program using the C compiler to prepare it for execution. The command looks like this: gcc -o hello hello.c.
Step 4: Execute your program, and you should see “Hello, World!” displayed on your screen with the command ./hello.
Congratulations, you’ve just created, compiled, and run your first C program!
Now, imagine it’s your first day at work, and instead of a simple “Hello World,” you’re expected to tackle a Game Engine project that involves intricate graphics and game logic. That’s more like advanced programming!
The comparison between the simplicity of a basic program and the complexity of a Game Engine leads us to my first insight:
I. There Are Levels to This Game
My initial experiences in BJJ were memorable. Coming from competitive sports like basketball and soccer, I was unaccustomed to losing. However, BJJ quickly taught me humility as I faced defeats and submission holds without understanding what was happening.
I entered the gym thinking my previous athletic skills would easily translate to BJJ. This was a miscalculation. My “Hello World” moment was a basic hip escape that I struggled with. Using unfamiliar muscles left me exhausted and confused.
Leaving the gym that day, I felt defeated but not broken—humbled, certainly. If you believe you can waltz into a BJJ gym and take on an experienced practitioner, you're in for a rude awakening.
Just like in programming, handling a complex project right off the bat is highly improbable. Dedication and effort are essential; there are levels to this journey.
My programming progression was gradual, as I discussed in my post: "There’s No Such Thing as a Self-Taught Programmer." Despite the differences between programming and BJJ, both paths require relentless practice, learning from failures, and pushing personal limits, which ultimately results in growth.
BJJ, however, is more immediate and challenging. The moment you step onto the mats, you're in for a rigorous experience. This challenge fosters resilience that can be applied across various life scenarios. In both pursuits, it’s vital to remember your purpose and goals. Embrace the challenges and reflect on your journey.
II. Savor the Learning Experience
Being a novice may seem frustrating, but it's also thrilling. During this phase, you encounter endless possibilities, and each day brings new learning opportunities.
You experience rapid growth, maintaining a broad perspective rather than zooming in on specific improvements, which often comes with more experience. Although being a beginner can be tough, it's a crucial time for development, as Lex Fridman eloquently stated.
Throughout my white belt journey, I often found myself on the receiving end of techniques. This experience not only provided valuable perspective on the hard work of others but also highlighted my need for improvement. A significant milestone was earning my Blue Belt.
As a novice, I am committed to learning, adapting, and welcoming constructive feedback. This mirrors my initial programming experiences more than a decade ago. While we don’t have belts in programming, diligent and consistent effort reveals various stages of mastery.
III. Seek Guidance from Mentors
A mentor is typically someone with extensive experience and a profound understanding of their field. Surrounding yourself with knowledgeable individuals can significantly accelerate your growth. Choose a mentor who is not only successful but also wise, as some may be fortunate rather than knowledgeable—particularly in programming.
Early in my programming career, I was eager to create but lacked direction. It was a challenging sink-or-swim situation. Thankfully, I found a mentor who provided invaluable support—shout out to Mahesh Kommareddi!
This doesn’t mean bombarding your mentor with trivial questions about your code. Instead, leverage their expertise by asking insightful questions that could yield valuable insights. Learning from their thought processes can also motivate you.
The same holds true for BJJ; having a mentor or a skilled training partner can significantly enhance your growth. They offer tailored feedback on techniques, making the learning experience immediate through sparring.
Final Thoughts
In conclusion, there are many parallels between Brazilian Jiu-Jitsu and programming. Just as I began my programming journey with a “Hello World” program, stepping onto the BJJ mats marked the start of a new challenge. Both fields require commitment, practice, and an understanding that progress is incremental.
As programming tasks evolve from basic syntax to complex projects, BJJ transitions from fundamental techniques to advanced maneuvers. The various levels in both disciplines emphasize the importance of perseverance, learning from errors, and pushing your limits.
Whether you're coding away or training on the mat, the shared experiences in BJJ and programming serve as a reminder that every challenge and lesson learned contributes to the ongoing pursuit of mastery.
Happy Coding and Training!
Osss.
PS: Looking forward to seeing you on the mats for the Masters II competition, Mark Zuckerberg!