When I started BJJ, I got submitted constantly. Not occasionally — constantly. By people who weighed 30 pounds less than me. By people who'd been training for six months. The submissions weren't even creative. They were the same handful of basic techniques, over and over.
This is the part that nobody tells you going in: you are going to be bad at jiu jitsu for a very long time, and there is no shortcut through it. You can't hustle your way past the fundamentals. You can't compensate with strength and aggression, at least not against anyone who knows what they're doing. You just have to show up, get tapped out, figure out what you did wrong, and try again.
I've been writing software professionally for almost a decade, and that experience on the mat is the closest I've come to feeling like a beginner again.
Fundamentals Are Embarrassingly Unglamorous
In BJJ, the fundamentals are things like: don't give up your back, control the frame, breathe. Simple. The problem is that under pressure — when someone is actively trying to choke you — simple goes out the window. Drilling fundamentals isn't exciting. It's repetitive. But it's the thing that holds when everything else falls apart.
Software has its own version of this. Writing tests. Naming things clearly. Keeping functions small and focused. Reviewing your own code before asking someone else to. None of that is exciting. Nobody writes blog posts about how they refactored a function to have a single responsibility. But when a system breaks at 2am, the difference between "I can trace this" and "I have no idea what's happening" usually comes down to whether someone cared about the boring stuff.
Getting Comfortable with Not Knowing
There's a particular kind of frustration that comes from being new at something hard. You can see what good looks like — you've watched enough rolls, read enough code — but you can't reliably execute. The gap between understanding and doing is wide, and closing it takes longer than you want.
In reliability engineering, I work with systems that are inherently complex. There are always parts I don't fully understand, emergent behaviors I didn't anticipate, failure modes that only show up under specific conditions. Getting comfortable in that space — staying curious instead of anxious when you don't know something — is a skill. BJJ forced me to practice it.
Consistency Over Intensity
The people I've watched improve fastest in BJJ aren't the ones who train hardest on any given day. They're the ones who just keep showing up. Four days a week, week after week, even when they're tired, even when they're frustrated. Consistent reps compound in a way that occasional intense effort doesn't.
Same with building good testing habits, or learning a new language, or understanding a new codebase. An hour a day for three weeks beats a ten-hour weekend sprint for actual retention. Your nervous system — and apparently your test coverage — needs time to consolidate.
The Tap Is Information
In BJJ, tapping out isn't failure. It's how you learn. You got caught, you acknowledge it, you reset, and you figure out what led to that position in the first place. Training partners who don't tap just get injured. That's not toughness, it's stubbornness.
Bugs are the same way. A system that fails loudly and gracefully — one that tells you clearly what went wrong and where — is infinitely more useful than one that fails silently or defensively. The tap is information. Build systems that tap.
I don't have a grand unified theory here. Just: go do something you're bad at, stay with it long enough to stop being bad at it, and pay attention to what that process feels like. It'll sharpen how you approach everything else.