Vibe coding has a learning side effect. The condition is whether the tool lets you watch.
Every argument on this topic asks the same flat question: does vibe coding teach you anything or not? Yes and no is a bad answer. The interesting question is whether the tool puts the agent's process in front of you in real time. If it does, the side effect is real and surprisingly fast. If it only shows you the final app, you learn nothing because outputs do not carry the why.
Direct answer (verified 2026-05-12)
Vibe coding teaches you something by accident, but only when the tool streams the agent's actions (file paths, tool calls, edits, browser navigation) into your view as it works. mk0r does this: the chat route at src/app/api/chat/route.ts forwards every agent_message_chunk and tool_use event to the browser via ACP. Over a one-hour session you will see hundreds of these scroll past. That stream is the curriculum. Tools that show you only the rendered app produce a finished artifact and no curriculum, and the learning side effect is roughly zero there.
The wrong question, and the better one
The wrong question is whether vibe coding teaches you to code. That collapses two different categories into one and the answer comes back ambiguous because it depends on the tool, the user, and the session length. Useless.
The better question is mechanical: through what channel could a non-technical user, while not actively studying, absorb technical information? There are two candidates. The final artifact (a running app) is one channel; it is almost empty, because a running app does not declare its own file structure or framework. The agent's working process is the other channel; it is dense, because every Edit tool call broadcasts a file path, every Bash call broadcasts a command, every Write call broadcasts a code shape.
A tool either pipes that second channel to you or it does not. That single design choice decides whether the learning side effect exists for users of that tool.
What scrolls past you while mk0r builds
The block below is a compressed sample of the events a user actually sees in the mk0r chat panel during a single "build me a habit tracker" session. Each line maps to a real ACP event type the chat route forwards from the agent running inside the VM. No content here is invented: these are the event shapes emitted by src/app/api/chat/route.ts (search for agent_message_chunk and tool_use).
Read that block again, slowly. A non-technical user did nothing to study and yet now has a passing acquaintance with: where React components live (src/components/), what an env file is, that types declare the shape of data, that a dev server runs on a localhost port, that React complains about missing keys in lists, and that fixing a console warning is a normal turn in the build loop. None of that was taught. All of it was overheard.
Tools that do not stream this channel rob the user of the same ambient learning. You can build a habit tracker on a platform that shows only the rendered preview and come out of the session knowing nothing about file structure or env vars because nothing in the preview talked about them.
“I think it's a fine tool to learn things, but I think it's a horrible idea to use it as a basis for stuff that you actually need to maintain.”
The half of Linus that is usually skipped
The Torvalds quote is everywhere, but the part that gets repeated is "horrible for maintenance." The first half ("a fine tool to learn things") is usually written off as a polite concession. It is not. It is a specific technical claim. Linus is saying that if you are reading what the agent does and reasoning about it, you are learning. The reading is the channel. Hiding the diff breaks the channel.
This means "does vibe coding teach you to code" has the same answer as "does this tool render the diff in front of me." If the answer to the second question is no, the answer to the first is also no.
The rulebook is a second curriculum
The agent does not freelance. Before your first prompt it loads a 2,438-line file at src/core/vm-claude-md.ts in the mk0r repo (github.com/m13v/appmaker). Six skills (frontend-design, copywriting, backend-services, algorithmic-art, website-builder, seo-page) and two CLAUDE.md files (one global, one per project) get copied into the sandbox.
Every rule the agent obeys in your session is a small lesson visible by inference. Extract components at ~100 lines, trim every env value before writing, prefer const, do not write outside /app, errors handled at boundaries not internally. When the agent does these things and the result works, the rule attaches itself to a memory of a thing you built. That is how style guides actually stick: with a concrete reference, not with a list.
What the side effect does not give you
Two honest limits. The first is depth. Watching the agent create a useState hook is not the same as being able to reason about why state is wrong in a different component three days later. Exposure trains pattern recognition; it does not train problem solving. You will be able to point at a file and say what kind of code lives in it long before you can write that code unaided.
The second is the adversarial layer. The rulebook handles named foot-guns (Inter font, purple gradients, trailing newlines in env vars). It does not handle the unnamed ones, and a real product has unnamed ones: production-grade auth that survives a competent attacker, multi-user real-time state with conflict resolution, payments compliance, native iOS review. A vibe coding session, even a careful one, gets you a convincing first draft of those and then leaves you to do the engineering. The side effect will not teach you what the engineering even looks like; it stops at the layer the rulebook reaches.
“Tools that only show the finished app produce roughly zero ambient learning. The diff is the channel; if it is hidden, there is no channel.”
Working definition used throughout this page
How to get more out of the side effect (if you want to)
If the goal is just to ship a weekend prototype, you do not need to do anything; the stream will scroll past whether you study it or not. If the goal is to convert exposure into actual technical literacy, three small habits stretch the yield:
- When the agent says "Edit
src/App.tsx," actually click on that file in a separate tab and read it after the edit lands. It is the cheapest review pass that exists. - When a tool call surfaces a word you do not know (HMR, env var,
fetch, Vite, JSX), pause and ask the agent for a one-paragraph explanation in the same session. Cost: 10 seconds. Benefit: the term sticks to a moment you remember. - Read the rulebook once. Not all 2,438 lines; just open
src/core/vm-claude-md.tson GitHub and skim the section headers. You will recognise patterns you already saw the agent obey.
The honest summary
Vibe coding has a learning side effect, and it is the channel most of the debate misses. The side effect is bounded: it tops out at the layer a rulebook can describe, and it does not turn an exposure into a skill on its own. But for someone who has never written code, an hour spent watching an agent build their own idea moves the needle further than an hour spent reading a tutorial that was not about their idea. Pick a tool that streams the diff. Watch what scrolls past.
Want to watch a build with someone narrating the side effect?
Twenty minute call. We start a mk0r session against your idea, I narrate every tool call as it happens, and you leave knowing what the file paths mean.
Frequently asked questions
Does vibe coding teach you anything by accident?
Yes, but only if the tool exposes the agent's process while it works. Tools that stream tool calls and file edits put a passive curriculum in front of you (file paths, framework conventions, debugging patterns). Tools that hand you a finished app teach close to nothing because the only artifact you see is the output, and outputs do not carry the why.
What specifically do you pick up by watching mk0r build?
Three things in the first hour. First, file structure (src/App.tsx, src/components/, /app/.env, package.json) because every Edit tool call shows the path. Second, the names of common operations (HMR, fetch, useState, env vars, package install) because the agent's narration uses them. Third, the rhythm of debugging (open the browser, read the console, change one thing, re-test) because the agent does that loop in front of you.
How is this different from following a tutorial?
A tutorial is a planned path; you stop learning the moment your project leaves the tutorial's scope. Watching an agent build YOUR app is contextual: every step is grounded in the thing you actually want to ship, so the references stick. The price is that the order is unplanned and there is no quiz at the end.
Is this enough to call yourself a developer?
No. Exposure is not the same as practice. You can absorb that React components live in src/App.tsx without being able to write one from scratch. The side effect is a head start, not a degree. If you stop at watching, you stay non-technical with a slightly bigger vocabulary.
Linus Torvalds said vibe coding is fine for learning, horrible for maintenance. Where does this fit?
It fits the first half exactly. The learning channel is real, and it is real because of the diff (Linus is talking about reading the diff). Tools that hide the diff cannot teach. The second half (horrible for maintenance) is a separate claim and is also correct. The same channel that teaches you is what you would have to keep reading to maintain the codebase, and most people do not.
Does mk0r show me the code while it builds, or just the final app?
Both. mk0r runs the agent in an E2B VM and streams every text delta and tool call back to the browser via ACP. You see the agent open files, edit them, run the dev server, navigate the browser to localhost, and read its own console output. The chat panel becomes a passive log of how the app got built.
What is in the agent's rulebook and why does that matter for learning?
There is a single TypeScript file at src/core/vm-claude-md.ts in the public github.com/m13v/appmaker repo. It is 2,438 lines and gets copied into the sandbox before your first prompt. The rules are explicit (extract components at ~100 lines, trim env values, do not write outside /app, prefer const over var). When the agent obeys them in your session, you are effectively reading a short engineering style guide enforced live.
Will I learn to write production code this way?
No. The side effect tops out at the layer the rulebook covers (file structure, naming, env hygiene, simple state). It does not teach you what to do when an attacker probes your auth flow, when your database under load melts, or when the App Store rejects your build. Those failure modes are not in any rulebook because they show up in adversarial conditions a sandbox does not produce.
Open the site, describe an app, and watch the stream. No account.
Start a session on mk0r
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.