Provoking thought

Levels of AI Coder Adoption

I can’t go to parties anymore without the topic of AI coming up.

“How can I get started with vibe coding? What AI code editor should I use?”

I attend parties with a very specific audience. Indeed, parties filled with cool people.

Inevitably the party devolves into an ad-hoc consultancy session.

“Well that depends, where are you in Zef’s Level Framework of AI Coder Adoption (ZLFOAICA™)?”

I know right, I should really consider a career in consultancy. And get better at branding. If only I would start the clock for my astronomic consultancy fee to kick in before I reveal all my secrets.

“Level framework!? How exciting, tell me more!”

Fine, let me pull up my deck. Can somebody bring me a beer?”

Level 1: ChatGPT as The Source of All Coding Knowledge

Before November 2022, when encountering a confusing compiler error, or when hitting some random programming problem, we’d “Google it.”

Remember Google?

Ideally, this would (fingers crossed) lead to a StackOverflow question (remember StackOverflow?) that would provide exactly the answer to our problem. Not always, though. And the answer would not always be correct. But hey, it’s something.

This is when the “StackOverflow developer” was born. A threat to us real engineers, that had to struggle to gain our knowledge in a largely pre-Internet age. Imagine being able to get things done without having gone through all the suffering that builds much-needed character. Would you like to to see my scars?

Us — the programming elite — would sniff in disgust at this new-fangled approach.

The future would say: hold my beer.

Speaking of beer, I could really use a refill.


Then OpenAI launched ChatGPT, and people were quick to figure out that ChatGPT had read the Internet, including StackOverflow and Github, and could pretty accurately regurgitate relevant bits of it, sometimes capably translated to the programming language of your choice.

At first this was a faux pas. You don’t do that. Ask a chatbot a programming question? What are we? Animals?

Never.

But here we are, 2-3 years later and everybody’s doin’ it.

If you haven’t tried getting your coding problem solved with the help of ChatGPT, don’t even bother talking to me.

We’re all here now, at level 1.

Level 2: Telepathic tab complete

Chronologically slightly earlier (February 2022) — but for the purposes of our narrative: ages later — Github announced Github Copilot. This introduced the concept of “tab auto complete” to the world. Finally, a valid use case for the tab key.

Any IDE worth its salt has had completion for things like function and method names for ages (another feature that the Emacs and Vim programming elite long sniffed at: “you should just know your entire stack’s API by heart”), but Copilot’s tab complete was (occasionally) next level.

Rather than just completing a method name, it could autocomplete entire sections of code. In a moment of existential hesitation, whenever you’d pause your frantic code typing for a few seconds, it would all of a sudden, seemingly telepathically, complete the rest of a method for you; write you that for loop; suggest you that JSDoc that you definitely planned to write. All you had to do was hit Tab to accept.

Err, whut!?

This was a harsh reality check for a lot of us. Because, if a tool like this (built on the same LLM technology as ChatGPT), could successfully write the code we actually intended to write ourselves then... was our unique, creative, expensive skill really all that unique, creative and valuable?

Luckily, Copilot was still pretty bad. It would get basic things like balancing parentheses wrong, and would attempt to hallucinate all kinds of APIs into existence.

A fun toy, but not for serious engineers.

At first.

However, models evolved, and Copilot with it. Competition like Cursor made this telepathic tab complete so good that it became hard to ignore. Today, Cursor (and the most recent Copilot versions) even anticipates changes you are likely to want to make in other places, including other files in your code base.

And hence, the “Tab-tapping developer” was born.

Tab. Tab.

If you’re not using telepathic tab complete today, you’re missing out.

Many of us are here, at level 2. Just pay your $20/month to Microsoft or Cursor.

Up to this level, we don’t have to significantly adjust our day-to-day workflows. Rather than Googling things, we ask the same question to our new BFF ChatGPT. We still use an IDE, typin’ the codez, we “just” get telepathic code suggestions. Nobody saw you just hit tab on that suggestion. Just pretend you wrote it yourself. Unless it has an off-by-one error, then blame the AI.

Things start to shift at level 3.

Level 3: CHOP, CHOP!

At this level, I’m a bit fuzzy on the chronological order of things.

Even though Copilot may have launched with some sort of IDE-integrated chat, I’m not sure if it actually was able to change code in place or even read your code base, or if it was more like a “we heard you like ChatGPT, so we we put it in your VS Code #YouAreWelcome”

Anyway, at some point in ancient AI history (likely last week), a new type of tool started to emerge: the chat coding agent.

These agents wouldn’t just generate you some code based on a question, like ChatGPT, but they’re able to dig into your existing codebase and agentically make changes.

Before we proceed, let me give you the real definition of “agent,” because it’s a bit of an overloaded term.

An agent is a process that will autonomously (so without significant human intervention) go off and (attempt to) complete a non-trivial task.

There. Was that so hard?

While early chat coding agents were quite limited and dumb (I can say that, because they don’t have feelings), today such tools have grown to be shockingly competent. They happily grep through your code base, read documentation, browse the web, apply significant code changes, write and run tests, and in cases even spin up a browser and autonomously navigate the web app they’re building.

Here is 38 minutes of me pairing with Cursor to build a YAML patch library. No hands!

Steve Yegge coined the term “CHOP — Chat Oriented Programming” for this way of working in his dramatic article The Death of The Junior Developer. Regrettably, he seems to opportunistically have jumped on the vibe coding bandwagon, which in my mind is a big mistake. But hey, we’ll see. I’ll still refer to it as CHOP, to clearly separate it from vibe coding, which we’ll get to later.

In CHOP, the big shift that happens compared to level 2 is that your main interaction channel shifts from the code editor to the chat box.

Rather than typing code by hand, you have the agent write it for you.

Not snippets; all of it.

And good for me, a shocking number of management best practices apply, so this is a great opportunity for people managers to get back in the coding game.

“Make it work or you go to jail!”

Some notable tools in this field (at the time of this writing, but check in again tomorrow) are:

All of these evolve rapidly. Whatever you may be reading on X or Reddit (“it is over, <<insert flavor of the day>> won.”). It is not over. Nobody won. We still have long ways for these tools to get better, even if the models that power them (primarily Anthropic’s Sonnet models for now) will plateau in performance.

Is this real? Can we really now let all our code be generated by AI agents?

Well, there’s nuance to that. For now, and perhaps forever.

But already today, I would argue that a significant enough class of problems can be completed by AI. However, there’s engineering skill required to babysit these agents. And whatever people that are trying to sell you their $1000 AI coding courses may claim — we’re all still learning how to best approach this. And then a new model comes out, and we have to relearn things again. And then another release of Cursor or Cline comes out. And the rules change once more.

Far fewer people or companies are here, at level 3.

Nevertheless, this is now my aspirational level. It’s good to aim high.

The gains start to become significant at level 3. I complete tasks this way in 15 minutes that otherwise would cost me many hours. I take on projects that otherwise I wouldn’t bother to start, because I have confidence that an AI agent will be able to figure them out for me without me having to spend the same amount of brain cycles.

It does require building some skill. Not every task is suitable, not every prompt will work.

Except: “Fix it now, or you go to jail!”


So, this is it then? Is it over? No more artisan, hand-crafted code?

We’re not there yet. Nevertheless, we should be warming up to the idea that this will be our future, and to some degree can already be our reality today.

Is level 3 at least it then? Is this peak AI?

Likely not. There will be levels beyond, but those are more projection than reality. We’ll go there when we get closer.

In the mean time, let’s take a bit of a side step.

Level X: Vibe Coding

February 3rd, 2025 will the day that will go down in history as the day that vibe coding was coined.

Andrej Karpathy on X (formerly known as Twitter, originally known as twttr, once a fun place, now my primary place to get high on the AI hype wave):

There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like "decrease the padding on the sidebar by half" because I'm too lazy to find it. I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd have to really read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

(Emphasis mine)

Vibe coding, by its original definition, is where CHOP (which still depends on engineering skill) devolves into “forget the code even exists.”

Notable parts of that original tweet that have since been forgotten:

  • “Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away”
  • “It's not too bad for throwaway weekend projects, but still quite amusing”

A better name would perhaps have been “YOLO Coding,” but I think that ship has sailed.

My uncle is WhatsApp’ing me literally as I type these words asking for some tips to get started with vibe coding. My CEO is doing it. Our product managers are doing it.

Just do it. Adidas. I need to get myself some vibe coding glasses.

Leo:

my saas was built with Cursor, zero hand written code
AI is no longer just an assistant, it’s also the builder
Now, you can continue to whine about it or start building.
P.S. Yes, people pay for it

Leo, 2 days later:

guys, i'm under attack ever since I started to share how I built my SaaS using Cursor
random thing are happening, maxed out usage on api keys, people bypassing the subscription, creating random shit on db
as you know, I'm not technical so this is taking me longer that usual to figure out for now, I will stop sharing what I do publicly on X there are just some weird ppl out there

“Real engineers” will still have a job.

Fixing other peoples’ vibe coded train wrecks.

Valid vibes

Even though it’s attractive to make fun of vibe coders, and I’m happy to do so — vibe coding cannot be dismissed.

Vibe coding tools are already amazing for prototyping; for trying things out and see if they work. Vibe coded software, although its technical quality is anything but guaranteed, is way better than creating a sketch of an idea on a paper napkin. You can play with these prototypes, develop a feel for how they work in practice. You can have (potential) customers interact with it. And you really don’t need technical skills to do it.

That’s pretty cool.

There are many dedicated tools entering this space now with a non-technical audience in mind. Some notable examples:

These tools probably all aspire to have you ship production-grade apps, eventually. In some cases they may be able to get you there. But I think there’s still some ways to go.

What is the scope of what these apps will be able to deliver is still unclear to me. Will they truly be a full alternative to hiring “real” engineers? Existentially, I would surely hope not. But they are impressive nonetheless, and you should be trying them out.

Are they going to be level n + 1? This is the big question.


If you’re an engineer today, I’d recommend to start to make strides towards level 3: CHOP.

Even without the hand-wavy claims that “models will get infinitely better in the future.” Yes, likely, some of the techniques you need today to be effective will become irrelevant, some will not. Welcome to software development, who still hand-rolls assembly these days? What game designer still builds their own 3D engine? A few, but not many. Yet, there is still value in having followed along on the journey as the fundamentals were figured out.

And the fundamentals are being figured out right now.

Get comfortable chatting up your AI agent to build the stuff exactly the way you like it. With tests. With documentation.

Coach it into the standard of engineering that you sweated to attain, but do it within its context window. Then do it again after you are forced to hit Cmd-n, and it has forgotten everything you ever taught it.

This will be our legacy. This is where we hand over our craft to the next generation.

Of stochastic, probabilistic token predicting algorithms.

As we always hoped we would.