“If you know the way broadly you will see it in everything.”
Why do I have such high conviction on Vibe Coding? Why have I spent so much time doing it and communicating about it?
I'm not an AI expert. The last time I studied it was in college and I barely understood what a “random forest” was.
I'm not a coding expert either. I would probably have trouble solving nontrivial “Leetcode Easy” interview problems right now. I don’t remember how to implement a merge sort vs. quick sort.
I'm not an expert in any programming language. The programming language I know the best is the abomination that is Jenkins Groovy.
I'm not a systems design expert either. I can probably stumble through some cloud computing basics without Terraform code or a system diagram in front of me.
This sounds like I'm the last person who needs to not fully understand how every layer of the stack works and have AI Agents autonomously do things for me. But if you notice, I also know what I don’t know.

Approximate Knowledge of Many Things
What I do know, however, is when things look right. I have enough exposure through my Computer Engineering training in college and 11 years of professional experience in a wide variety of DevOps roles from mobile, to cloud, to on-prem.
Regularly getting air-dropped into new repos that I don’t own, but need to assist in fixing in some way, is an experience that has been invaluable for developing a generalized understanding of how these things work. I remember being intimidated by the first large codebase I had to work in as an intern and not knowing where to start. By being forced to start over and over again, I’ve quickly gotten over the fear of (the unknown of) a new codebase really quickly and treating the correct things as black boxes (like what an app does, or how it works, or its entrypoint) and the appropriate things like build scripts, Dockerfiles, Terraform, and CI/CD pipelines as white boxes. These standard DevOps tools all share the same standard set of functionality that everyone does a little bit differently when left to their own devices.
I know how things are supposed to go. I know the best practices and I can identify when something doesn't smell right. These shapes and patterns aren't limited to specific languages. These practices are written in the blood, sweat, and tears of tens of thousands of engineers who have come before me to iteratively and incrementally figure out better ways of solving problems with computers. I stand on the shoulders of giants in knowing how software problems generally should be solved.
Guiding Others’ Output
Sort of like how Dr. Dre (as problematic as he is, he’s just the clearest example that illustrates this concept) is known for not writing his own lyrics that he performs. This sounds strange and almost backwards, given that rap can be such a powerful form of personal self-expression in music.
Instead, he has someone else write for him, most notably Eminem for some of his biggest songs. He then corrects, guides, and edits the lyrics that were written for him. He knows what lyrics sound right for his style and flow of rapping. This is a very non-deterministic method to create music, yet it created some of the most popular songs that people still enjoy to this day.
I'll give you an example closer to home. Your engineering manager assigns you an epic. You, the senior engineer, are tasked with breaking down the high level business goal of the epic into stories and subtasks. These tasks are well-defined enough such that you or a junior engineer with some guidance can complete and advance the high level business goal.
What do these sound like? These sound like two different examples of people not having direct control over or typing in every character of every word that was generated. Yet, these people still have a process for refining and iterating on what was generated.
I think the weird feelings around Vibe Coding from engineers is largely due to the fact that we are ICs (individual contributors) and we're usually the ones that get work delegated to us. We aren't used to doing the delegating. But guess what? Your manager has been Vibe Coding this whole time.
Non-Deterministic Creation
Before you say that you have a perfectly logical, structured, ordered thinking and can't possibly be compared to an LLM: where do your thoughts come from? How does thinking work? Is it deterministic?
Where does the next word I'm going to write come from?
It feels an awfully lot like searching a massive compressed vector space of everything that I've ever experienced trying to find the next appropriate word given the current context window of all the tokens around this particular thought. If I start doing something else and get distracted, all of this context gets cleared. I have to start over and rebuild it.

I thought this was an xkcd, but I guess it wasn’t
It's sort of unsettling right? Even if it's not exactly how we work internally, it's scary that it even approaches an approximation of it. It makes you feel like you're not all that “special” (we’ll come back to this after I explain some Jiu-Jitsu stuff below). I think this is what people are afraid of: that even our innermost thoughts can potentially be reproduced in an automated fashion to a increasingly troubling degree of fidelity.
How troubled you are sort of depends on how you view the universe. Is it all fully deterministic or is there some element of randomness that is fundamentally unsolvable even if we could model everything out perfectly?
I think why management types are so gung-ho about Vibe Coding and AI in general is that it operates exactly how they have been working since forever. Anyone who is abstracted away from the Layer 1 (Gene Kim, Steven Spear), frontline type of work can only guide and give feedback on what is presented to them, regardless if it is human or AI-generated.
Giving feedback on actions that I can't directly control feels a lot like coaching Jiu-Jitsu.
Obligatory Jiu-Jitsu Analogue

A random Thursday at 6am in Las Vegas
On Tuesday and Thursday mornings at the world-famous 10th Planet Las Vegas, you can find me teaching regular 9-5ers how to wrestle each other better in a padded mat room. My students go from standing up, to taking each other to the ground, working through a series of pins (controlling positions), and eventually submitting each other (making the other person “tap out”) [2].
As much as I may try, I fundamentally cannot do the techniques for my students. I don't have control over their bodies. I can't hijack their muscles and nervous system to do the technique exactly how I would do it. Even if I could, it would feel and work differently because our bodies aren't the same. They have different limb lengths, flexibility, and strength attributes than I do. They need to figure out how to do it for themselves, in their own way, for their own body.
I can only give them goals for what they are trying to do. For example, we're trying to get our opponent's hands on the mat instead of on us. This is a generally good thing for us to do regardless of the situation. Another goal to try to accomplish in parallel is that we always want to try to get on top and stay on top. These “rules of thumb” start to constrain my student’s behavior towards certain desirable actions.
I can show them specific instances of techniques that they can try to do given certain conditions, and their bodies will try to emulate these movements with their mirror neurons. Ultimately, these mirror neurons are not connected to my neurons and they'll have to develop their own pathways for executing the technique based on their own attributes.
According to the above “Layers of Work” Gene Kim reference, as a coach, I operate at Layers 2 and 3. Layer 2 is where I ensure that we have a safe, clean mat space (tools used), and Layer 3 is the communication around what grappling work should be done (Layer 1).
The Upheaval
These fundamental facts are central to a massive upheaval that happened in Jiu-Jitsu over the past 3 years with the introduction of the Ecological / Constraints Led Approach / CLA (more specific definitions later).
Traditionally when you think of martial arts, you think of The Karate Kid drilling the same technique: "wax on, wax off” over and over again until it is "perfect." This is the traditional view of martial arts. Martial arts that interact with the real world don’t work like that.
On your first day of Jiu Jitsu, as soon as you slap bump your partner in a live sparring session (called a “roll”), they become an uncooperative, moving target. No amount of static, “perfect” drilling is going to help you do something to them unless they stay perfectly still and cooperate with you. You have to figure out how to apply these techniques in a chaotic tangled mess of limbs and sweat.
What comes out of this two-body (three-body problem including the mat 👀 ) system aren't even specific techniques. No single technique is ever applied the same way twice, as much as one man who steps into the same river twice.
No man ever steps in the same river twice, for it's not the same river and he's not the same man.
Yet, Jiu-Jitsu tradition dictates that we spend most of our class time statically “dead drilling” techniques on compliant partners. All “correct” technique comes from the Black Belt instructor and they know all. Traditional thinking dictates that you need to learn all of the fine details of every technique from the best coach possible.
If you couldn’t tell, this traditional approach is a very ego-boosting and coach-centric view of the world vs. CLA is a more decentralized, student-centric view. The traditional view makes the coach feel “special” (note where I’ve used this word before). The CLA view of the world turns the coach more into a facilitator of a learning environment than an all-knowing oracle of technique.
Greg Souders, who I interviewed near the beginning of his rise to notoriety as a coach, was the catalyst to openly question this long-held belief by the Jiu-Jitsu community that we needed to drill to be good at grappling.
He completely turned the idea of what a Jiu-Jitsu class looks like on its head. Nearly 100% of class time, save for rest periods, is spent live sparring from specific situations where each person has specific goals that they're trying to achieve [3]. This type of training is known as the “constraints-led approach” or CLA. It is based on Ecological Psychology where they study interactions between an organism and its environment.
A way to think about this type of training is by playing specific “mini-games” within the larger game of Jiu-Jitsu. The “constraints” are the specific goals from various positions that the coach defines to encourage desirable behaviors from the students.
By spending more time in live situations, Greg Souders’ students have demonstrated remarkable levels of skill compared to how long they have been training. They have won major competitions despite rarely, if ever, statically drilling.
Constraints-Led Approach to Vibe Coding
How can we possibly learn anything if don’t statically drill? How can we possibly learn anything if we don’t hand-write the code ourselves?
We iteratively and incrementally (notice where I’ve used these words before) constrain the outputs of the system. Over time, our bodies start to recognize patterns and shapes of behavior. It's not a strict, hardcoded, deterministic, “if this, then that”, but a bounded search space where the game is to look for a “right-enough” answer for the given contextual situation based on all of our prior experiences.
What does this sound like?
Sounds an awful lot like an LLM.
THIS is why I am so steadfastly high conviction on Vibe Coding. It is an extension of how we delegate things to other humans and how we learn, just taken one step further with an automated system called an Agent.
What does this mean? Do we just turn our brains off and not know anything anymore and delegate everything to Agents?
Do Staff and Principal level engineers turn their brains off and assign out work to junior engineers? Do managers do the same? Bad ones probably do. Good ones definitely don’t.
I think we just get to operate at a higher level from the get go. Junior engineers don’t have to grind for 10 years to make Senior Engineer to get to tell someone else what to do. They now have to learn how to manage agents from day one.
We don’t write the lines of code ourselves anymore. We need to study the outputs by reading and reviewing what the Agent is doing. If we’re really curious, we can always have the Agent walk us through how the code works, line by line if we have a need to ensure complete accuracy. Note, human code was never 100% accurate either for the record.
This doesn’t mean that we “don’t know anything” as software developers. It is almost the opposite now. We need to know more about team-level best practices and good patterns to give to the Agents so that they can most effectively carry out their work.
Evolution of the Role

Don’t worry, we’re not about to be replaced by Vibe Coding PMs. It’s just that the role of software developer has been up-leveled.
Similar to Jiu-Jitsu classes shifting away from being coach-centric to student-centric, software developer’s individual lines of code-wrangling skills are less “special” than before, and our focus is now more on facilitating an inference environment (context windows!) for Agents to do their best work.
When I coach Jiu-Jitsu, I still need to know something about Jiu-Jitsu. A brand new white belt student can’t run a class, much like someone brand new to software development probably can’t write good software, even with the best Agents available to them.
What I know about what good Jiu-Jitsu looks like are called “invariants”, or principles that I want to pass on to my students. I design class around these so that my students get as much exposure to them as possible. They get to viscerally experience them rather than just cognitively conceptualizing them. This is the difference between “knowledge of” vs. “knowledge about” a thing.
“Knowledge of” is gained by directly experiencing, iteratively trying and failing to do a thing. “Knowledge about” is meta-knowledge or “book smarts” about a given topic. In other words, you can read all the books you want about driving a car but you won't actually learn how to drive a car without trying (and failing!) to drive a car. [4]
You could also frame this as “theory” vs. “applied”.
This doesn’t mean we need to rediscover and re-invent the wheel for ourselves for every single little thing, but to re-prioritize what we spend our time on. The role of the coach and Vibe Coding software engineer is to deeply and directly engage with problems in order to come up with the constraints to help others search the solution space to those problems.
If we are stuck or if we need to reference existing solutions, that's fine. The pre-made, prescriptive solutions will only make complete sense after the direct experience we have with the problem. This means the vast majority of what we should be doing is gaining more “knowledge of” doing the thing itself.
Where Do We Go Now?
Where do we go now?
We go into The Discomfort. We have to sit in it, marinade in it, doing The Thing.
Not just thinking “about” The Thing and letting it hang over us like an essay that is due and we haven't started yet, but actively trying and failing at The Thing.
We have to understand the bounds of the problems that we work on, and are able to communicate those bounds to others, whether the others are humans or agents, to help them draw boundaries around the potential search space for solutions.
I know The Discomfort is still scary to me to this day. You have to face your ego and risk finding out that you're not as good as you think you are, but at the same time, you know you are capable of achieving the goal, just with an unknown amount of work.
The Discomfort is knowing there’s some gap between where you are and where you want to go, with an unknown amount of work in the way.
Why I follow Stevie Yegge and others as they lead from the front: they spend most of their time Vibe Coding, doing The Thing. They’re putting in 10,000+ hours before anyone else. They are seeing problems so far down the road that we are only just getting to the first set that they have been talking about.
Let's face The Discomfort together. Join the discord here.
[1] Super surface-level Jiu-Jitsu nerd quote, but I think it applies well here.
[2] Jiu Jitsu is the part of MMA (UFC) fights where both athletes are on the ground and are not punching or kicking. Instead, they are jockeying for control of each other. Crowds tend to boo this part, but it’s the most interesting part of fighting to me.
[3] Sometimes each person is trying to achieve the same goal from a neutral position, and other times they are trying to achieve equal and opposite goals.
[4] The same thing can be applied to getting more knowledge about the art of coaching. I haven’t read any books on this since I read “How We Learn to Move” (and a more technical follow on) by Rob Gray. I’ve been engaged twice a week with trying to get my students to see certain principles of Jiu-Jitsu that is sort of like the glue in between the books to get them to see things in terms of goals versus discrete techniques.

