Contact us
Insights

A Ton of Unmaintainable Vibe-Coded Apps Is Coming

AI can help teams build faster, but vibe-coded software without requirements, architecture, review, and ownership can turn into a maintenance problem very quickly.

7 min read
A photo of Daniela Kuhn
Daniela Kuhn Sales Development Representative

AI coding tools are already changing software development. Used well, they are powerful. They can speed up boilerplate, help with refactoring, explain unfamiliar code, draft tests, and give experienced engineers a faster way to explore options.

But there is a problem hiding behind the excitement: a lot of vibe-coded applications are going to be very hard to maintain.

Not because AI is useless. It is not. The problem is that software does not become valuable when code appears on the screen. It becomes valuable when the right system keeps working, changing, and surviving production reality over time.

That is the part vibe coding often skips.

The prompt is already part of the architecture

Many non-software engineers misunderstand how AI coding actually works. They treat the prompt like a product requirement, but a prompt is usually much weaker than a real specification.

“Build me a booking app” is not a requirement. It says almost nothing about domain rules, data ownership, concurrency, security, auditability, deployment constraints, error handling, integrations, or future change.

The AI will still produce something. It will often be syntactically correct. It may even look impressive in a demo. But it is filling gaps with assumptions from its training data and from the local context it can see. If the prompt is broad, missing context, or written without technical requirements, the output is not “the system”. It is a guess.

That guess becomes dangerous when nobody knows which decisions were intentional.

Maintainability is not optional work

Even without AI, maintainability is often underestimated. Teams regularly spend a large share of total effort after the first version: fixing defects, changing requirements, updating dependencies, migrating infrastructure, improving performance, and keeping the system secure.

Software maintenance is not a small afterthought. It is usually the longest phase of a system’s life. Some software engineering sources describe maintenance as the majority of lifecycle cost, and even conservative project planning often leaves 30-50% of effort for long-term maintenance and evolution.

AI does not remove this cost. In many cases, it moves the cost.

The first version gets cheaper. The review, validation, debugging, documentation, refactoring, governance, and ownership questions get bigger. GitLab’s 2026 AI Accountability reporting, summarized by ITPro, found that many organizations see faster code output, but also that AI has shifted the bottleneck from writing code to reviewing and validating it, with widespread concern about technical debt and maintainability.

That is the real tradeoff. Fast generation is useful only if the team can still understand, verify, and evolve what was generated.

Correct syntax is not the same as correct meaning

AI-generated code is often syntactically correct. That does not guarantee semantic correctness.

This matters most where software touches real constraints: embedded systems, specific MCUs, industrial protocols, payment flows, medical workflows, security-sensitive systems, or any domain where a small wrong assumption can break the product.

Try using AI to write embedded software for a specific microcontroller, with exact peripheral behavior, timing constraints, memory limits, vendor SDK quirks, power states, and interrupt behavior. The answer may compile. It may look plausible. It may also hallucinate APIs, invent register behavior, miss hardware errata, or produce code that works for a different board than the one you actually have.

This is not just an embedded problem. It is the same pattern everywhere: the code can be valid in the programming language and still wrong for the business, the runtime, the security model, or the operational environment.

Research on AI-assisted code generation keeps pointing in that direction. Studies have found correctness gaps, security weaknesses, and technical debt in generated code. The exact numbers vary by model, language, benchmark, and task, but the lesson is stable: generated code still needs engineering judgment.

The codebase can grow faster than understanding

Another risk is volume.

AI is very good at producing more code. That can be useful when the code is simple, isolated, reviewed, and deleted when no longer needed. It becomes a problem when the codebase grows faster than the team’s understanding of it.

Large generated chunks often come with repeated abstractions, unnecessary layers, duplicated logic, inconsistent naming, and overly generic helpers. Each generated feature may look acceptable alone. Together, they can turn into a codebase where every small change requires reading through a maze of accidental complexity.

At some point the team no longer maintains a product. It maintains an AI-generated history of guesses.

That is why some vibe-coded apps will be cheaper to rewrite than to rescue. Not because rewriting is always good, but because the original system may lack the basic properties that make maintenance economical: clear boundaries, tested behavior, simple data flow, meaningful names, consistent conventions, and documented decisions.

The hidden cost is externalized to reviewers and maintainers

One recent paper on AI slop in software development describes the concern well: individual productivity gains can externalize costs onto reviewers, maintainers, and the wider engineering community.

That is exactly what happens inside companies too. A founder, product person, or junior developer can generate a lot of code quickly. The bill arrives later for the person who has to answer:

  • What does this code actually do?
  • Which behavior is required and which behavior is accidental?
  • Where are the tests?
  • Is this dependency safe and maintained?
  • Can we change one part without breaking five others?
  • Who owns this when it fails in production?

If those answers are missing, the code is not an asset yet. It is inventory with unknown quality.

Vibe coding is fine for prototypes

There is a good use case for vibe coding: prototypes, internal experiments, learning, throwaway tools, and quick product exploration.

The mistake is treating prototype speed as production readiness.

For production software, AI-generated code needs the same discipline as human-written code, and in some cases more discipline:

  • clear requirements before generation
  • small changes instead of giant generated dumps
  • architecture owned by an engineer, not by the model
  • code review by someone who understands the system
  • tests that define expected behavior
  • security checks and dependency review
  • documentation of important decisions
  • refactoring before the mess becomes normal

AI can absolutely be part of that workflow. But then it is not magic. It is a tool inside a professional engineering process.

The next wave will need cleanup

A lot of apps are being created right now by people who would not have been able to build them two years ago. That is exciting. It will create useful products.

It will also create a wave of unstable, hard-to-maintain software.

The companies that benefit from AI coding will not be the ones that generate the most code. They will be the ones that combine AI speed with strong requirements, architecture, testing, review, and ownership.

The rest will discover a familiar software engineering lesson in a new form: building the first version is not the hard part. Keeping it alive is.

Further reading