Oscar Hoang
Articles

· Product & Startups, software craftsmanship, vibe coding, AI coding agents, technical debt, UX design, indie hackers

Software Craftsmanship in the AI Era: Beyond Vibe Bloat

An open mechanical watch movement with warm brass gears on a wooden workbench beside a robotic arm stacking uniform glowing blue blocks

Writing software in 2026 often means prompting Claude Code or Codex, waiting twenty minutes, and coming back to an 800-line diff that reads like a stranger's codebase. The code runs, but working that way kills your flow and leaves users with noisy apps.

The short answer: Hand-written code isn't scarce anymore in 2026, and raw AI output still isn't a finished product. Unchecked vibe coding produces bloated architectures and cluttered screens because models are built to keep adding output, not to hold back. What separates a good product now is software craftsmanship. That comes down to deliberate constraints, knowing your codebase, quiet UX polish, and human trust.

Is hand-written code still a scarce input in 2026?

No. Typing syntax by hand isn't the economic bottleneck in software anymore, so raw code volume stopped being a moat.

Coding agents generate working features ten to a hundred times faster than typing by hand. You can still write code by hand for fun, like doing math on paper, but commercial projects can't compete by typing boilerplate.

Ruby on Rails creator David Heinemeier Hansson (DHH) summed this up in his Rails World 2026 Opening Keynote on September 23, 2026, when he explained why 37signals went "pencils down" on hand-written code.

"I spent a quarter of a damn century chiseling code by hand and loving every moment of it. [...] This is something to look back upon with joy and accept that it is over. Writing code by hand is no longer an economically productive enterprise for the vast majority of programmers working at the vast majority of companies."

DHH put an optimistic spin on this, calling the role a "professional maker of things, steering intelligence." Cheap code still hurts startups whose only product is the code itself. As I wrote in my build vs buy SaaS guide, competitors or customers can clone a simple utility over a weekend. Even DHH admitted in The Pragmatic Engineer that unguarded vibe coding on Basecamp 5 initially "left the architecture looking a little like a Swiss cheese."

The 800-page novel problem: losing touch with your codebase

Handing whole features to an AI agent without tight boundaries kills developer flow and turns your repo into a thick book you've never read.

Think about asking an AI to write a novel. You give Claude an outline and get back 300 pages. You won't read all of it, so you check character names, skim a few sections, and ask for edits. Soon you have 800 pages. You were never in the creative loop, you don't know what happens on page 412, and nobody wants to read it.

In software, losing touch with what you're building shows up in the numbers.

  • More code, same smells. A June 2026 study of 151 Java repos (arXiv:2606.13298) found agentic tools increased lines of code by 12.8% (p = 0.003) without reducing architectural smells.
  • Persistent debt. A March 2026 study of 304,362 AI commits (arXiv:2603.28592) found 24.2% of AI-introduced issues and 41.1% of security flaws survived to HEAD.
  • Structural entropy. Researchers (arXiv:2512.11922) show repeated regeneration leaves behind duplicated helpers and conflicting patterns.

Why vibe-coded software feels bloated (the luxury watch craft gap)

AI-generated apps feel tiring because it costs the model nothing to add another element, and it has no instinct to subtract.

Good human-crafted software is like a mechanical watch. You don't see the gears and springs inside the case, but you feel them in how the watch sits on your wrist. In software, most of that unseen craft is subtraction. It's the fields you deleted, the edge cases you smoothed over, and the screens you kept quiet.

I run into this building Kemisu, my event software for speed dating hosts. At a live event, forty guests meet across tables in a busy venue and pull out their phones before they leave to mark their end-of-night picks. Attention belongs to the person across the table, not my app. Left to itself, a coding agent adds banners, analytics cards, and long instructions that stall the room. Craft in Kemisu means stripping the screen down so a guest taps their picks in five seconds and looks back up.

Layer Vibe-Coded Default Human-Crafted Standard Why Users Feel It
UI & Copy Verbose text, 4 metric cards, gradients Primary action only, tight copy Finish a 5-second task fast
Scope Kitchen-sink settings and extra modals Deliberate subtraction Product feels calm, not noisy
Architecture +12.8% more lines, duplicated helpers Shared domain model, small diffs Fixes do not break adjacent flows
Verification Same agent writes code and tests Independent spec-first checks Edge cases hold up in production

Why the AI startup FOMO rat race is a rigged carnival game

Chasing raw AI speed burns builders out on disposable apps that anyone can copy next week.

The tools promised to save labor are wearing builders out instead. On X, stories of founders in the ER from exhaustion sit right next to posts about the "greatest wealth creation event in history" and warnings about falling into a "permanent underclass," a panic covered in The New Yorker and The Guardian.

A February 2026 Harvard Business Review study of 200 tech workers found that AI consistently intensified work through task expansion, late-night prompting, and fatigue from juggling parallel agent tabs (with secondary survey coverage reporting 83% of workers feeling heavier workloads).

With zero-barrier vibe coding, the startup race is a rigged carnival game. Everyone keeps playing frantically while the noise gets louder and this week's build goes obsolete by next week. Step back from the booth and you realize you don't even want the giant stuffed animal.

Where differentiation moves next: constraints, provenance, and human connection

When synthetic output is endless, value and trust move to intentional constraints, human provenance, and real life.

Models are great at churning out syntax and blind to lived experience. That makes three things matter over the next decade.

  1. Intentional constraints. AI removes constraints, which makes shipping easy, but limits you choose on purpose make the work better and build trust. Following the Human-Crafted Software Manifesto rule that "if we cannot explain it, we do not ship it" shows someone is minding the store.
  2. Independent verification. An October 2026 study (arXiv:2610.28667) showed that when one agent writes both code and tests, faults slip through shared blind spots. In my Claude Opus 5.5 guide, I walk through setting completion criteria up front and running independent checks.
  3. Real-world connection. That's why I build Kemisu (event software for speed dating hosts), DanceRecap, attndnce (for live events like Latin Bangkok Fiesta), and loveltr.com. An LLM writes code in seconds, but it can't host forty singles in a room, run a dance community, or replace face-to-face trust.

My restraint checklist before merging AI code

  • 5-Second Screen Test. Delete at least 30% of the helper text, badges, or cards the agent generated.
  • Explainability Gate. Can I explain how every file fails at 3 a.m.? If it reads like a skimmed 800-page novel, I reject it.
  • No Duplicate Plumbing. Check whether the agent invented a second date formatter, API wrapper, or state store.
  • Separate Builder from Verifier. Don't rely only on tests written in the same agent run that built the feature.
  • Cap Diff Size. Break long agent runs into small slices inside a single human loop.

Key takeaways

  • Hand-written code isn't a standalone moat anymore, as DHH pointed out at Rails World 2026.
  • Unbounded agent runs create the "800-page novel problem", adding +12.8% lines of code while costing you comprehension.
  • Vibe-coded apps feel bloated because models default to adding more, while human craft relies on subtraction.
  • The AI FOMO grind intensifies workloads (as documented in a February 2026 HBR study) while producing easily cloned apps.
  • Differentiation moves to intentional constraints, independent verification, human provenance, and real-world connection.

FAQ

Why do all vibe-coded apps look and feel the same? AI models predict the most common UI patterns in their training data, so they default to card grids, gradients, and wordy text. Unless you set constraints and strip out the extras, most prompts land on the same generic dashboard.

Did DHH really say programmers should stop writing code by hand? Yes. At Rails World on September 23, 2026, David Heinemeier Hansson announced 37signals went "pencils down" and said "writing code by hand is no longer an economically productive enterprise for the vast majority of programmers working at the vast majority of companies."

Does vibe coding create more technical debt and codebase bloat? Yes. A June 2026 study of 151 Java repos (arXiv:2606.13298) found agentic tools increased lines of code by 12.8% without cutting smells, and a March 2026 study of 304,362 AI commits (arXiv:2603.28592) found 24.2% of AI-introduced issues stayed in the codebase.

Why is AI coding causing developer burnout instead of saving time? Instead of cutting hours, AI tools push builders into doing more at once as they juggle parallel agents across longer days. A February 2026 Harvard Business Review study of 200 tech workers found AI consistently increased workload through task expansion and context switching.

Sources