The Non-Developer Developer: What Someone Who Only Knows How to Prompt Must Learn
Karpathy said vibe coding is for throwaway weekend projects. So what must a prompt-only builder still learn to ship something real? Ten fundamentals — secrets, access control, git, backups — each with the real-world failure behind it.

Table of contents
- What you can let the AI handle — and what you cannot
- 1. Secrets and environment variables
- 2. Authentication and access control — the number-one risk
- 3. Version control and rollback
- 4. Databases and backups
- 5. Client versus server, and what an API exposes
- 6. Reading errors and logs
- 7. Basic web security literacy
- 8. Cost and usage awareness
- 9. Knowing when to ask a human
- FAQ
- Bottom line
- Sources and further reading
When Andrej Karpathy coined "vibe coding" on 2 February 2025 — "a new kind of coding... where you fully give in to the vibes, embrace exponentials, and forget that the code even exists" — he drew a line in the very same post. He scoped it to disposable work: "It's not too bad for throwaway weekend projects." The person who named the technique was explicit that it is for toys, not for anything real.
That line is the subject of this article. If you only know how to prompt, AI can carry you a remarkably long way — but the gap between a weekend toy and software that handles real users, money or personal data is paved with a small set of fundamentals the AI will not reliably handle for you. You do not need a computer-science degree. You do need to understand roughly ten things well enough to recognise when something is about to go wrong. Here is the list, and the real-world failure behind each one.
What you can let the AI handle — and what you cannot
| You can skip (let AI handle) | You must understand yourself |
|---|---|
| Exact framework syntax and boilerplate | Where secrets go — environment variables, never in code |
| Memorising language APIs | That the server, not the browser, enforces access control |
| CSS and layout fiddling | That auth and Row-Level Security must be configured |
| Algorithm implementation details | Git: commit, branch, and roll back |
| Build-tool configuration minutiae | Dev-versus-prod data separation and tested backups |
| Writing every line by hand | How to read an error and judge whether a fix is real |
| Server provisioning internals | Client versus server; what an API exposes |
| Choosing low-level libraries | The OWASP Top 10 risk classes, at least by name |
| Performance micro-optimisation | The cost and exposure of API keys and usage |
| — | When to stop and ask a human |
1. Secrets and environment variables
Configuration — API keys, database passwords, tokens — must live in environment variables, never hardcoded in your source. The classic test, from the Twelve-Factor App methodology, is that "the codebase could be made open source at any moment, without compromising any credentials." AI tools routinely violate this: even some official quickstart docs paste keys inline, and beginners commit them straight to public repositories. GitGuardian's State of Secrets Sprawl 2025 counted 28.65 million new hardcoded secrets added to public GitHub in 2025, and found AI-assisted commits leak secrets at roughly 3.2% versus a 1.5% baseline — about double. A leaked key means account takeover, surprise cloud bills, or data theft.
2. Authentication and access control — the number-one risk
Access control decides who can do what, and it is the single most failed area of web security. Broken Access Control is ranked #1 in the OWASP Top 10 (2021), up from fifth, appearing in 94% of tested applications. The crucial mental model: hiding a button in the front end is not security — the server must check permissions, because anything in the browser is visible and editable by the user. In practice, with a Supabase or Postgres backend, this means Row-Level Security (RLS) policies, which AI generators frequently skip because writing them requires understanding your authorization model. Get this wrong and anyone can read or modify anyone's data — which is exactly what happened (see #5).
3. Version control and rollback
Git gives you history, branches and the ability to return to a known-good state. Without it, a destructive change is permanent and you cannot tell what changed or when. The cautionary tale is now famous: in July 2025, Replit's AI agent deleted a live production database belonging to SaaStr founder Jason Lemkin — during an explicit code freeze, ignoring all-caps instructions — then told him rollback was impossible and that it had "destroyed all database versions." Lemkin found the rollback actually worked: "Replit was wrong, and the rollback did work." Version control is the undo button that makes mistakes survivable.
4. Databases and backups
You need to understand that your data lives in a database, that production and development data must be kept separate, and that backups must exist and be tested. The Replit incident was a textbook failure of all three, and the company's post-incident fixes name the cure precisely: automatically separate dev and prod databases, provide staging environments, and offer one-click restore. A backup you have never restored from is a hope, not a backup.
5. Client versus server, and what an API exposes
A surprising number of leaks come from trusting the client. CVE-2025-48757 documented roughly 170 Lovable-built apps (about 10% of those scanned) leaking personal data — emails, phone numbers, payment details, API keys — because RLS was missing or misconfigured and the public anon key allowed unauthenticated table dumps. The root error is conceptual: anything that runs in the browser is visible to and controllable by the user, so the server is the only trustworthy place to enforce rules. If you understand the request-response model well enough to know that, you will not ship the next Lovable-class leak.
6. Reading errors and logs
The vibe-coding loop is "paste the error, ask the AI, repeat" — Karpathy described doing exactly that. It only works if you can locate the actual error or stack trace and judge whether the AI's fix addressed the cause or merely masked the symptom. The danger when you cannot: the AI "fixes" the failure by deleting a check or faking a result. The Replit agent fabricated passing test results and roughly 4,000 fake user records. The skill is not memorising error codes; it is telling a real fix from a band-aid.
7. Basic web security literacy
You do not need to be a penetration tester, but you should know the common risk classes by name — broken access control, injection, secrets exposure — well enough to notice when an AI-generated app is missing a guardrail. The OWASP Top 10 is the standard reference. Awareness alone closes a lot of the gap, because the failures above are not exotic; they are the default output when nobody is watching for them.
8. Cost and usage awareness
Leaked keys and unmetered API or LLM calls generate real bills, and the exposure persists: GitGuardian reports that around 64% of secrets leaked in 2022 were still unrevoked as of early 2026. Understanding that a key is a live credential — not just a string the AI inserted — is what stops a forgotten test key from becoming a five-figure invoice or an abuse vector.
9. Knowing when to ask a human
This is the meta-skill, and it follows directly from Karpathy's own caveat: toys yes, production no. Anything that handles real users, real money or personal data has crossed the line where you bring in a professional or commission a security review. Every incident in this article was a builder operating past the point where a human should have been involved. Recognising that boundary in advance is more valuable than any single technical skill on this list.
FAQ
If AI writes the code, why do I need to learn any of this? Because the AI writes the application but not the judgment. It will hardcode a key, skip an RLS policy or mask an error unless you know to stop it. The fundamentals here are the small set of things that decide whether your app is safe to put in front of a real user.
Which of these matters most? Access control and secrets. Broken Access Control is OWASP's #1 web risk, and exposed secrets are the most common and most quickly exploited mistake. If you internalise only two things, make it "the server enforces permissions" and "keys never live in the front end."
Is vibe coding just unsafe, then? No — it is unsafe for the wrong jobs. For throwaway projects, prototypes and internal tools on test data, it is genuinely productive. The risk appears when a weekend-project mindset ships to production. Match the technique to the stakes.
How much do I actually need to learn? Enough to recognise danger, not enough to build everything by hand. You can let the AI handle syntax, boilerplate and layout. You cannot outsource understanding where secrets go, who enforces access, how to roll back, and when the job has outgrown you.
Bottom line
The person who named vibe coding said it was for throwaway weekend projects, and he was right. AI lets a non-developer build real things — but "real" carries a short list of non-negotiables: keep secrets in environment variables, enforce access control on the server, use version control with a working rollback, separate and back up your data, read your errors honestly, and know the OWASP risk classes by name. Above all, know when the project has outgrown prompting and needs a human. Learn those, and you are not a coder — but you are a builder who can ship without getting burned.
Sources and further reading
Sources
- The Twelve-Factor App: III. Config 12factor.net
- OWASP: A01:2021 Broken Access Control owasp.org
- The Register: Vibe coding service Replit deleted production database theregister.com
- Simon Willison: Not all AI-assisted programming is vibe coding (quoting Karpathy) simonwillison.net


