‹ Back homeNotes

Natural language can turn into software more easily now. Judgment, verification, and responsibility have not gone away. On the gains, costs, and changing role of the engineer.

Oct 22, 2026·9 min read·Reads …

Contents
  1. 1. The Distance Between an Idea and Something Visible Has Shrunk
  2. 2. More People Can Turn an Intention into a Working Thing
  3. 3. The Engineer Becomes More Like a Director
  4. 4. The Easiest Result Is Something That Looks Usable
  5. 5. Faster Generation Can Create More Understanding Debt
  6. 6. Review Becomes the New Bottleneck
  7. 7. Security and Privacy Cannot Be Replaced by a Good Feeling
  8. 8. Taste and Architecture Can Drift Toward the Average
  9. 9. What Remains for Engineers?
  10. 10. How I Use Vibe Coding
  11. Exploration
  12. Commitment
  13. The Tool Makes Us Faster. People Still Choose the Direction.

Before we begin

Vibe coding is less a strict technical definition than an approach: describe an intention, let AI generate, modify, and run code, then continue the conversation through the result.

It has genuinely made many things easier. It has not made software engineering disappear.

Something subtle has changed about writing code.

Opening an empty file used to begin with translation. A centered card meant a container, flex layout, and responsive rules. Search meant an interface, state, and debounce behavior.

Now we increasingly say:

Build a page that feels like a quiet sheet of editorial paper, with a little depth, but not like a template.

Seconds later, code appears. The page mostly works; the atmosphere is approximately right. We look at it and continue:

The heading is too loud. Give it more room. Do not make mobile a smaller desktop.

That is the immediate experience of vibe coding: moving from writing code to conversing with a result.

It sounds like a productivity upgrade, but it is also a change of role. As generating code becomes cheaper, deciding what deserves to exist, judging whether it is right, and taking responsibility become more important.

1. The Distance Between an Idea and Something Visible Has Shrunk

The first change is not “programmers are obsolete.” It is a lower cost of trying.

Many ideas once felt too small to justify the setup.

A one-use script. An interaction prototype. A personal statistics page. A temporary automation. Something needed for a few hours could still demand project setup, documentation searches, dependency repair, syntax fixes, and environment debugging.

So we often did nothing.

Now we can describe a goal, generate a working version, and decide afterward whether it deserves more time.

The value is not just speed. It is keeping small ideas alive long enough to inspect them.

For people who make things, that matters. Many interesting projects begin not as requirements, but as vague questions:

  • Would this page feel better if it were quieter?
  • Could this process lose one step?
  • Could a script take over this repetition?
  • Would these datasets reveal something when placed together?

We used to price those questions before exploring them. Now we can hold a prototype in our hands.

Lowering the cost of exploration creates more opportunities to make something.

2. More People Can Turn an Intention into a Working Thing

Software used to be a relatively expensive form of expression.

A designer might know exactly when a control should appear without being able to build the interaction. An operations specialist might understand a broken workflow without being able to create a replacement. A person tired of repetition might have no way out of it.

AI removes part of that translation layer.

It does not instantly turn everyone into an engineer. It gives more people the ability to prototype: to create something clickable, testable, and discussable.

Discussion moves out of a requirements document and into a real artifact.

A working prototype exposes problems faster than ten pages of description. Suddenly the button is awkward, a simple process takes three steps, and an innocent feature turns out to need permissions, synchronization, and undo.

Vibe coding does not make professional expertise unimportant. It lets product thinking encounter reality earlier.

3. The Engineer Becomes More Like a Director

As implementation becomes easier to generate, an engineer’s work moves toward either end of the process.

At the beginning is understanding the problem.

Where is the user stuck? What deserves building? Which constraints sit behind the request? More generated code can mean more rework when the requirement is poorly understood.

At the end is verifying the result.

Running code is not necessarily correct code. A finished-looking page does not prove that permissions, failure paths, and edge cases are handled.

The mechanical work in the middle still matters, but it is no longer the only source of value.

The engineer increasingly directs:

  • Decide what problem the work should solve.
  • Turn ambiguity into verifiable steps.
  • Give AI sufficient context and boundaries.
  • Notice when it silently changes the meaning of a requirement.
  • Weigh alternatives.
  • Take responsibility for what ships.

This is not simply a lower barrier. The barrier has moved.

Syntax used to open many doors. It still helps, but system understanding, verification, and judgment now carry more weight.

4. The Easiest Result Is Something That Looks Usable

The dangerous output is often not broken code. It is code that just happens to work.

The page opens, buttons respond, data appears, and we conclude that the feature is finished.

Real problems sit beyond that happy path:

  • Does a timeout leave the interface loading forever?
  • Does a double click create duplicate records?
  • Does the backend enforce the permission shown in the UI?
  • Does state survive a refresh?
  • Does a successful build mean the feature is deployed?
  • Does a provider failure leave the records consistent?

While adding friend-link applications to my blog, I encountered an example.

The front end opened normally. The build passed. Local simulated tests passed. After deployment, the application endpoint returned 405.

The page itself was not the problem. The new endpoint had not entered the Cloudflare Worker’s route scope.

There was no syntax error or build failure. Only checking the actual deployment chain revealed it.

AI is good at making “this should work” look convincing. Real software also needs to work in its actual environment, and make failures visible.

5. Faster Generation Can Create More Understanding Debt

In traditional development, writing and reading often move at comparable speeds.

As you implement, you build a mental model: why a cache exists, why a retry is limited, why a state cannot simply be deleted.

Rapid AI generation can skip that learning.

The code exists, but nobody really understands why it works this way.

This resembles technical debt, but it is less obvious. Traditional debt often comes from a conscious trade-off: we need time, so we will do this for now.

Understanding debt can come from an illusion: because it runs, we must understand it.

Then a supposedly small change raises questions:

  • Why are there two synchronization layers?
  • Which hidden behavior does this hook depend on?
  • Why is this error swallowed?
  • Can this code be removed?
  • What else will break?

AI can help repair it, but each repair may rest on code nobody understood the previous time.

Eventually the system resembles a room without a plan. Everything is there; nobody knows which wall carries the load.

6. Review Becomes the New Bottleneck

AI speeds up writing. It does not automatically speed up review.

A change of several thousand lines can appear in minutes and take hours to understand.

Worse, generated code often looks plausible. Names are complete, comments read naturally, and the structure resembles professional work. Errors hide inside that apparent competence.

The bottleneck moves toward questions such as:

  • Are important behaviors covered?
  • Can the critical path be reproduced?
  • Are permissions and data ownership clear?
  • Can logs identify a failure?
  • Can we roll back?
  • Is the change small enough to review?

Faster generation makes focused commits, explicit verification, and recoverable releases more important.

Otherwise the productivity gain merely transfers work from today’s implementation to someone else’s future repair.

7. Security and Privacy Cannot Be Replaced by a Good Feeling

A polished page invites broad trust. We assume the code must be equally careful.

But a good interface does not establish security.

Are secrets bundled into the front end? Is user input escaped? Does the backend authenticate? Are upload types and sizes bounded? Can the mail endpoint be abused? Are deletes authorized?

Many of these cannot be checked by opening a page once.

AI tools also need explicit boundaries: which files they may read, which data they may change, whether they may access production, and whether they may publish.

Handing an agent a repository, a database, and production credentials, then expecting it to infer every boundary, is not a reliable development method.

Automation improves throughput. It does not replace authorization design.

8. Taste and Architecture Can Drift Toward the Average

AI learns popular patterns very well.

Ask for something “premium,” “Apple-like,” and “minimal,” and you may get rounded corners, translucent panels, fades, whitespace, and neat cards.

Each can be useful. Together they can also become a familiar template.

Architecture follows the same tendency: common folders, common frameworks, common state tools. That is often helpful for ordinary work. It can also smooth away a product’s character.

Quality is not a CSS property. It depends on:

  • What the visitor should notice first.
  • Which information belongs and which does not.
  • Whether motion provides feedback or merely advertises itself.
  • Whether every detail supports the same character.

AI can help implement taste. It cannot decide what your taste should be.

Give away all judgment and the result tends to be an average, not a work with a point of view.

9. What Remains for Engineers?

I do not think engineers disappear.

Their work changes.

The valuable abilities increasingly include:

  1. Defining the problem: identify the actual need, not merely the surface request.
  2. Understanding systems: follow data, states, and failures.
  3. Verification: design evidence of correctness, not just elegant-looking code.
  4. Trade-offs: balance time, cost, maintainability, security, and experience.
  5. Responsibility: AI may generate the code, but people remain accountable after release.

Coding still matters. It is simply not the whole job.

The advantage is not necessarily typing thousands more lines. It is understanding what those lines mean.

10. How I Use Vibe Coding

I now think in two modes.

Exploration

This stage can move quickly and tolerate mess.

The aim is to see whether an idea deserves more work. AI is particularly useful for scaffolds, prototypes, and temporary tools.

The condition is simple: a prototype does not automatically become production software.

Commitment

Once other people will use something, or real data enters the picture, the standard changes.

That means:

  • Clear permissions and data boundaries.
  • Small changes and recovery points.
  • Real verification of critical workflows.
  • Useful failure states.
  • No assumption that a provider is always available.
  • Reviewing generated code rather than merely checking that it runs.
  • Retaining tests, logs, and observability.

The difference is not how much AI is used. It is how much failure we can responsibly tolerate.

The Tool Makes Us Faster. People Still Choose the Direction.

I remember the excitement of turning an idea into a working page for the first time.

Something that existed only in my head suddenly became something I could touch. Making things became more enjoyable, and more people could discover that they, too, could build software.

That is the best part of vibe coding.

It is also where the misunderstanding begins.

Generating code is not understanding a system. Building an interface is not finishing a product. Running successfully is not the same as being ready to take responsibility.

AI reduces friction in implementation. Quality still depends on defining problems, verifying outcomes, facing failures, and accepting responsibility.

The scarce resource is probably not prompt tricks or familiarity with a particular number of models.

It is judgment.

Knowing what is worth doing and what merely looks impressive. Knowing when speed helps and when inspection is necessary. Knowing what can be delegated and which responsibilities cannot.

The tools will keep improving.

People still choose the direction.

H
Henry

Notes on technology, design, and the slower observations of everyday life.

About the author
DISCUSSION

Comments 0

Leave a thought or add to the conversation. Comments appear after moderation.

Loading comments…