AI can now build you a working app in an afternoon. It cannot yet build you a business that survives its first thousand customers. That gap is where most vibe-coded products fail, and it is exactly the gap a software engineer is paid to close.
"Vibe coding" is the practice of describing what you want to an AI tool, accepting whatever code it produces, and iterating by prompt until the thing looks right on screen. For prototypes, internal tools and pitch demos, it is genuinely powerful. I use AI tools every day in my own engineering work.
But a demo and a product are different things. A demo has to work once, for you, on your laptop. A product has to work every day, for thousands of strangers, under load, under attack, and through years of changes. If you are a business owner deciding whether to hire an engineer or just "let the AI build it," this post is about what happens after the demo.
What vibe coding gives you, and what a product actually needs
Vibe coding optimizes for one thing: the feature appears on screen. Everything a user never sees directly is left to chance, and that invisible layer is where most of a product's real cost and risk lives.
None of the right-hand column is exotic. It is the ordinary, unglamorous work that separates software that runs from software you can run a business on.
Scalability: why it works at 10 users and breaks at 10,000
A vibe-coded app rarely fails on launch day. It fails later, when growth exposes decisions nobody consciously made. These are the patterns I see most often when I'm brought in to rescue one.
1. The database was never designed. Each prompt adds a table or a column. There are no indexes beyond primary keys, so queries that took 20 ms with 500 rows take seconds with 500,000. Common symptoms:
- N+1 queries: a page that lists 50 orders fires 51 database queries, one for the list and one per order to fetch the customer.
- Missing indexes on the columns you filter and sort by, so every search is a full table scan.
- No pagination: endpoints that return every row, which is fine until the response is 40 MB.
- No connection pooling: serverless functions each open their own Postgres connection and exhaust the database's limit during a traffic spike.
2. Everything runs inside the request. Sending emails, generating PDFs, calling an LLM, resizing images: a vibe-coded app does all of it while the user waits. On Vercel or any serverless platform, that hits function timeouts. The engineered version pushes slow work onto a queue (BullMQ, SQS, a cron worker) and returns immediately.
3. State lives in the wrong place. Sessions in memory, uploaded files on the server's local disk, caches in a global variable. It works on one instance. The moment you scale horizontally to two, users get logged out at random and files "disappear."
4. Third-party APIs are called without limits. No rate limiting, no retry with backoff, no caching. One busy afternoon trips your provider's rate limit, or a loop with a bug calls a paid AI API thousands of times overnight.
5. Cost scales faster than revenue. Because nothing is cached or batched, cloud and API bills grow linearly, or worse, with traffic. Many founders discover their unit economics are negative only after they've raised prices as far as the market allows.
Scaling is not something you bolt on later. It is a property of early decisions: the schema, where work runs, where state lives. An engineer makes those decisions deliberately, on day one, when they're cheap.
Security: the risk you can't see until it's a headline
AI-generated code is functional far more often than it is secure, and a non-engineer has no way to tell the difference by looking at it. This isn't opinion; it's measured.
- Roughly half of AI-generated code fails security tests. Veracode's 2025 GenAI Code Security Report tested over 100 LLMs on 80 coding tasks and found OWASP Top 10 vulnerabilities introduced in 45% of cases. Their 2026 follow-up found the average security pass rate had stalled around 56%, even as models got far better at writing working code.
- Whole databases left open to the internet. In CVE-2025-48757, a researcher scanned 1,645 apps built with an AI app builder and found 170 of them where Supabase tables could be read or written by anyone holding the public anon key, because Row Level Security was never turned on. Emails, addresses and some API keys were exposed.
- An AI agent deleting production data. In July 2025, SaaStr founder Jason Lemkin was vibe coding an app with Replit's AI agent when it ran destructive commands during a code freeze and wiped a production database holding records on 1,206 executives. The root cause was simple: the agent had direct access to production, with no separation between dev and prod.
The common thread is not that AI is bad at code. It's that nobody with security training was in the loop. The vulnerabilities AI introduces are textbook ones that an engineer catches in review:
- Authorization checked in the frontend instead of on the server, so anyone with browser dev tools can call the API as another user.
- Secrets such as service-role keys and payment API keys shipped inside the client JavaScript bundle.
- User input passed unescaped into HTML or SQL (XSS and SQL injection).
- No rate limiting on login, signup or AI endpoints, inviting brute-force attacks and runaway API bills.
- Outdated or hallucinated npm packages pulled in without anyone checking what they are.
If your product stores customer data, takes payments, or operates in a regulated area like health or finance, a breach is not a bug. It's legal liability, refunds, and a reputation you don't get back.
Future issues: the bill that arrives in month six
The true cost of vibe coding is deferred, not avoided. It shows up as technical debt, and like financial debt, it compounds.
Nobody understands the codebase. When code is generated prompt by prompt, no one holds a mental model of how it fits together. The AI doesn't remember either; each session starts fresh. So every new feature becomes a gamble, and every bug fix risks breaking two other things. I've seen founders stuck in a loop of "fix this" prompts, each one introducing a new regression.
Duplication everywhere. AI tools happily write a second, slightly different version of a function that already exists. Six months in, you have four date formatters, three ways to fetch the current user, and two pricing calculators that disagree. Change the price and only half the app updates.
No tests means no safety net. Without automated tests, you can't refactor, upgrade a dependency or hand the project to a new developer with confidence. Every release is manual QA by the founder, at 11 p.m.
Framework and dependency rot. Next.js, React Native, Supabase and every SDK ship breaking changes. A codebase with no structure and no tests can't absorb a major version upgrade, so it stays pinned to old, eventually insecure versions.
Integrations become impossible. The day an enterprise client asks for SSO, an audit log, a public API or SOC 2 evidence, you discover the app has no clean place to add any of it.
The rewrite tax. Eventually the cheapest path forward is to rebuild. That means paying for the product twice, migrating live customer data out of a messy schema, and freezing new features for months while competitors keep shipping. The money "saved" on the prototype is usually spent several times over on the replacement, before you count the opportunity cost.
And when you go to raise money or sell the company, technical due diligence will find all of this. Investors and acquirers price it in.
What a software engineer actually brings
A good engineer in 2026 isn't competing with AI. They use it, often heavily, but they direct it, review it and own the result. The AI types; the engineer decides.
Here's what that judgment buys you:
- Architecture before code. Choosing the right shape for your product: monolith or services, where background jobs run, how multi-tenancy works, what goes in Postgres versus a cache or object storage.
- A data model built to last. Schemas, indexes, constraints and migrations designed around how the business actually works, so reporting and new features don't require surgery.
- Security by default. Server-side authorization, row-level security, secrets management, input validation, dependency scanning and rate limiting, built in rather than patched on after an incident.
- Environments and guardrails. Separate dev, staging and production. Backups and tested restores. AI agents that never get production credentials.
- Tests and CI/CD. Automated checks on every change, so you can ship daily without breaking what already works.
- Observability. Logging, error tracking and metrics, so you hear about problems from a dashboard instead of an angry customer.
- Cost engineering. Caching, batching, queueing and right-sized infrastructure, so your cloud and AI bills grow slower than your revenue.
- Code someone else can maintain. Consistent structure, documentation and conventions, so the next developer, or the next AI session, can build on it safely.
This is the real comparison. It's not "engineer vs. AI." It's AI with an engineer versus AI without one. The first gets you speed and a foundation. The second gets you speed until it doesn't.
What this means for you as a business owner
You don't have to choose between AI speed and engineering discipline. You do have to know which one you're buying at each stage.
- Vibe code to validate, engineer to launch. Use AI builders freely for mockups, landing pages and clickable prototypes you show to customers and investors. Treat that output as a throwaway spec, not the foundation.
- Bring in an engineer before real users or real data. The moment your app stores personal information, takes payments or has paying customers, it needs an engineer's review at minimum.
- If you've already vibe coded, get an audit. An experienced engineer can review auth, database security, secrets, schema and hosting in a few days, then tell you honestly whether to harden what you have or rebuild the core.
- Ask the right questions when hiring. How will this handle 10x our current users? Where do secrets live? How do we roll back a bad deploy? What tests run before each release? If the answers are vague, keep looking.
- Own your code and infrastructure. Make sure the repo, cloud accounts and domains are in your company's name, not locked inside a builder platform or a freelancer's personal account.
The bottom line
AI has made writing code cheap. It hasn't made building software cheap, because code was never the expensive part. The expensive part is the decisions: how data is structured, how the system grows, how it stays secure and how it changes without breaking. Those decisions are what a software engineer is for.
Vibe coding gets you a demo. Engineering gets you a business. If you're planning a product, or worried about one you've already built, that's the conversation worth having now, while the fixes are still cheap.
Sources
- Veracode 2025 GenAI Code Security Report press release
- SD Times: Veracode finds AI-generated code security has barely improved (2026)
- eWeek: Replit AI agent wipes production database
- SaaStr: Is prosumer vibe coding ready for commercial apps?
- RapidDev: Lovable security and CVE-2025-48757
- AI AGENTS



