{
    "archive_path": "archive/1769964377.756382",
    "base_url": "www.anup.io/why-ai-coding-advice-contradicts-itself",
    "basename": "",
    "bookmarked_date": "2026-02-01 16:46",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/www.anup.io/why-ai-coding-advice-contradicts-itself",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=www.anup.io",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": null
    },
    "domain": "www.anup.io",
    "downloaded_at": "2026-02-01T16:46:20.064069+00:00",
    "downloaded_datestr": "2026-02-01 16:46",
    "extension": "",
    "hash": "ZXAANSTBGWC696VZA88G",
    "history": {
        "archive_org": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://web.archive.org/save/https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-02-01T16:47:02.520307+00:00",
                "index_texts": null,
                "output": "https://web.archive.org/web/20260201164646/https://www.anup.io/why-ai-coding-advice-contradicts-itself/",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:42.019239+00:00",
                "status": "succeeded"
            }
        ],
        "dom": [
            {
                "cmd": [
                    "/usr/bin/chromium-browser",
                    "--proxy-server=socks5://tor-socks-proxy:9150",
                    "--disable-features=DarkMode",
                    "--run-all-compositor-stages-before-draw",
                    "--hide-scrollbars",
                    "--autoplay-policy=no-user-gesture-required",
                    "--no-first-run",
                    "--use-fake-ui-for-media-stream",
                    "--use-fake-device-for-media-stream",
                    "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'",
                    "--headless=new",
                    "--no-sandbox",
                    "--no-zygote",
                    "--disable-dev-shm-usage",
                    "--disable-software-rasterizer",
                    "--disable-sync",
                    "--window-size=1440,2000",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "--user-data-dir=/data/personas/Default/chrome_profile",
                    "--profile-directory=Default",
                    "--dump-dom",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "131.0.6778",
                "end_ts": "2026-02-01T16:46:32.638045+00:00",
                "index_texts": null,
                "output": "output.html",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:24.075090+00:00",
                "status": "succeeded"
            }
        ],
        "favicon": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.google.com/s2/favicons?domain=www.anup.io"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-02-01T16:46:23.683486+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:20.256278+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-02-01T16:46:23.837540+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:23.710706+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [
            {
                "cmd": [
                    "(internal) archivebox.extractors.htmltotext",
                    "./{singlefile,dom}.html"
                ],
                "cmd_version": "0.8.5rc51",
                "end_ts": "2026-02-01T16:46:37.896301+00:00",
                "index_texts": [
                    "Why AI Coding Advice Contradicts Itself (https://www.anup.io/assets/built/screen.css?v=c1620a35f9) (https://www.anup.io/assets/built/main.min.js?v=c1620a35f9) (https://www.anup.io/assets/built/screen.css?v=c1620a35f9) (https://www.anup.io/content/images/size/w256h256/2025/08/ChatGPT-Image-Aug-31--2025--05_17_04-PM.png) (https://www.anup.io/why-ai-coding-advice-contradicts-itself/) (Anup Jadhav) (https://www.anup.io/rss/) (https://www.anup.io/webmentions/receive/) (/public/cards.min.css?v=c1620a35f9) (https://fonts.bunny.net) (https://fonts.bunny.net/css?family=poppins:400,500,600)  (https://www.anup.io) (Anup Jadhav)    (https://www.anup.io) Anup Jadhav  AI Engineering & Agent Orchestration              \u2318K   (https://www.anup.io/)    Home   (https://www.anup.io/blog/)       AI Engineering   (https://www.anup.io/til/)       TIL   (https://www.anup.io/works/)    My Projects   (https://www.anup.io/about/)     About     Resources (https://www.anup.io/resources/)    Tools   (https://www.anup.io/podcasts/)       Podcasts     Connect (https://linkedin.com/in/anupjadhav)      LinkedIn   (https://x.com/anup)    X   (https://bsky.app/profile/anup.io)       BlueSky   (https://www.youtube.com/@aiengineeringbrief)     Youtube        Subscribe Sign in      (https://www.anup.io)   Anup Jadhav     Dec 20, 2025   (/tag/vibe-coding/) Vibe Coding   Why AI Coding Advice Contradicts Itself If you don't know what you're doing, AI fails with death by a thousand cuts.  (/author/anup/) (Anup Jadhav) (Anup Jadhav)    by (/author/anup/) Anup Jadhav     (https://twitter.com/intent/tweet?url=https://www.anup.io/why-ai-coding-advice-contradicts-itself/&text=Why%20AI%20Coding%20Advice%20Contradicts%20Itself)    (https://www.facebook.com/sharer.php?u=https://www.anup.io/why-ai-coding-advice-contradicts-itself/)    (https://www.linkedin.com/shareArticle?mini=true&url=https://www.anup.io/why-ai-coding-advice-contradicts-itself/&title=Why%20AI%20Coding%20Advice%20Contradicts%20Itself)       (Why AI Coding Advice Contradicts Itself)   If you've tried to get better at AI-assisted coding, you've probably noticed something odd. The advice contradicts itself. Not in a hand-wavy \"it depends\" way. Actual opposing recommendations from people who all claim success. The Contradictions \u27a1 Keep prompts short vs write 500-word voice rambles  One school says the best results come from knowing exactly what you want and describing it in as few words as possible. More input equals lower quality. You're capped on compute, so shrink the problem space. Another school swears by voice transcription. Dictate long, rambling prompts. Talk at 120 WPM instead of typing at 70. The model figures out what you mean. The verbosity is a feature, not a bug. Both approaches work. For different people. \u27a1 Use planning mode vs planning mode lies to you  The official advice: use planning mode. Go back and forth until you like the plan. Review it. Then execute. The problem: execution diverges from the plan. The model agrees to do X, then does Y. So you end up copying the plan into a document and executing it piece by piece, checking each step. Now you're writing specs, reviewing AI-generated plans, chunking those plans, and monitoring execution. At some point you have to ask if this is faster than just writing the code. \u27a1 Maintain instruction files vs that's a red flag  Keep a CLAUDE.md or AGENTS.md file. Add context the model needs. Update it as you learn what trips it up. Some people update these files multiple times a week. But think about what that means. You're constantly discovering new ways the model misunderstands you. Each update patches another failure mode. That's not documentation. That's fighting your tools. The counter-argument: it's like onboarding docs for a new engineer. Except onboarding docs don't need updates every few days. Your code conventions aren't changing that fast. \u27a1 Reset context constantly vs preserve conversation history  Clear your context window often. The model is freshest with a clean slate. Auto-compaction degrades quality. Start fresh when things go sideways. But also: use iterative refinement. Have the model write code, talk through changes, ask for refactors. The conversation history IS the context. Reset and you lose it. \u27a1 Break tasks into tiny steps vs just write the code yourself  The micromanagement approach: break everything into small tasks. Ask for a plan. Review. Execute one step. Review. Course correct. Repeat. But if you're doing all that work, you're figuring out the breakdown, reviewing every output, catching mistakes. Why not just type the code? The answer is that AI generates boilerplate faster than you can type. But you still architect the solution, define the steps, verify correctness. You've become a manager of a fast but unreliable junior developer. Some people like managing. Some would rather code. Why This Happens These aren't best practices for a stable tool. They're workarounds for a moving target. People find something that works. For their brain. For their codebase. For their type of task. Then they generalise. But the underlying conditions differ. A greenfield React app has different constraints than a legacy Django monolith. Someone who thinks verbally gets more from voice prompts than someone who thinks by typing. Repetitive migrations benefit from detailed instruction files. One-off features might not. The model matters too. Opus behaves differently than Sonnet. Cursor has different affordances than Claude Code. What worked six months ago might be obsolete. So you get confident, contradictory advice. Everyone is telling the truth about their experience. Their experience just doesn't transfer cleanly. What This Tells Us ()  Maybe there are no best practices yet. Best practices emerge when a tool is stable enough that patterns generalise. We have best practices for Git because Git behaves predictably. We have best practices for code review because the dynamics of human collaboration are understood. AI coding tools aren't there. The models change every few months. The tooling changes faster. What worked in January might not work in June. The meta-skill isn't \"learn the best practices.\" The meta-skill is rapid experimentation. Try short prompts. Try long ones. Try planning mode. Skip it. Reset context. Preserve it. Notice what works for you, on this task, with this model, this week. And know when to abandon an approach. If the model isn't getting it after a few attempts, don't keep pushing. Revert. Start fresh. Try something else. The sunk cost fallacy hits hard when you've spent 20 minutes crafting prompts. The Gap There's a gap between how AI coding is marketed and how it works in practice. The pitch: 10x developer. Programming accessible to non-programmers. The reality: experienced developers sharing elaborate workarounds, disagreeing about fundamentals, reviewing every line, acknowledging the code quality isn't quite there. If you don't know what you're doing, AI fails with death by a thousand cuts. The people getting good results are the ones who'd be productive without AI. The tool gives them a speed boost on mechanical tasks. It's autocomplete on steroids, not a replacement for knowing what you're doing.  The honest answer to \"how do I get AI code to 90% of what I'd write by hand\" is: by being good enough to recognise the 10% gap and fix it yourself. That's the part nobody's figured out how to skip.  Join engineers getting weekly insights on agents, RAG & production LLM systems  (Enter your email) Subscribe      Email sent. Check your inbox!   No spam, no sharing to third party. Only you and me.     Member discussion  (comments-frame)    More like this (The Context Advantage)  The Context Advantage How to Turn AI Agents into High-Leverage Teammates  10 Dec       (/the-context-advantage/)   Engineering teams evolve from coders to orchestrators What I like about \"Conductors to Orchestrators: The Future of Agentic Coding\" by Addy Osmani is that it  24 Nov       (/engineering-teams-evolve-from-coders-to-orchestrators/)   (Cargo Cult Vibe Coding)  Cargo Cult Vibe Coding In the age of AI code generation, we risk trading craftsmanship for ritual\n\nIt's the 1940s in the  04 Oct       (/cargo-cult-vibe-coding/)   (The Rubber Duck That Talks Back)  The Rubber Duck That Talks Back How AI is Teaching Developers to Think Before They Code  10 Aug       (/the-rubber-duck-that-talks-back/)   (Vibe Coding, Revisited: From Weekend Chaos to Repeatable Craft)  Vibe Coding, Revisited: From Weekend Chaos to Repeatable Craft A sequel to \u201c10 Ways to Vibe Code\"  07 May       (/vibe-coding-revisited-from-weekend/)   (10 Ways to Vibe Code)  10 Ways to Vibe Code ....without losing the plot  25 Mar       (/10-ways-to-vibe-code/)       Anup Jadhav \u00a9 2026. Published with (https://ghost.org/) Ghost & (https://themex.studio/braun/) Braun     Join engineers getting weekly insights on agents, RAG & production LLM systems                (Close (Esc))  (Share)  (Toggle fullscreen)  (Zoom in/out)         (Previous (arrow left))  (Next (arrow right))           "
                ],
                "output": "htmltotext.txt",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:37.848543+00:00",
                "status": "succeeded"
            }
        ],
        "media": [
            {
                "cmd": [
                    "/usr/local/bin/yt-dlp",
                    "--restrict-filenames",
                    "--trim-filenames",
                    "128",
                    "--write-description",
                    "--write-info-json",
                    "--write-annotations",
                    "--write-thumbnail",
                    "--no-call-home",
                    "--write-sub",
                    "--write-auto-subs",
                    "--convert-subs=srt",
                    "--yes-playlist",
                    "--continue",
                    "--no-abort-on-error",
                    "--ignore-errors",
                    "--geo-bypass",
                    "--add-metadata",
                    "--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)",
                    "--skip-download",
                    "--cache-dir=/data/yt-dlp-cache/",
                    "--cookies=/data/yt-dlp-cache/cookies.txt",
                    "--proxy=socks5://tor-socks-proxy:9150",
                    "--no-playlist",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "2024.10.7",
                "end_ts": "2026-02-01T16:46:41.982806+00:00",
                "index_texts": [],
                "output": "media/",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:38.043345+00:00",
                "status": "succeeded"
            }
        ],
        "mercury": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/postlight-parser",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "2.2.3",
                "end_ts": "2026-02-01T16:46:37.826134+00:00",
                "index_texts": null,
                "output": "mercury/",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:35.438878+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/readability-extractor",
                    "/tmp/tmpnt7xtxw7",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-02-01T16:46:35.184181+00:00",
                "index_texts": [
                    "If you've tried to get better at AI-assisted coding, you've probably noticed something odd. The advice contradicts itself.Not in a hand-wavy \"it depends\" way. Actual opposing recommendations from people who all claim success.The Contradictions\u27a1 Keep prompts short vs write 500-word voice ramblesOne school says the best results come from knowing exactly what you want and describing it in as few words as possible. More input equals lower quality. You're capped on compute, so shrink the problem space.Another school swears by voice transcription. Dictate long, rambling prompts. Talk at 120 WPM instead of typing at 70. The model figures out what you mean. The verbosity is a feature, not a bug.Both approaches work. For different people.\u27a1 Use planning mode vs planning mode lies to youThe official advice: use planning mode. Go back and forth until you like the plan. Review it. Then execute.The problem: execution diverges from the plan. The model agrees to do X, then does Y. So you end up copying the plan into a document and executing it piece by piece, checking each step.Now you're writing specs, reviewing AI-generated plans, chunking those plans, and monitoring execution. At some point you have to ask if this is faster than just writing the code.\u27a1 Maintain instruction files vs that's a red flagKeep a CLAUDE.md or AGENTS.md file. Add context the model needs. Update it as you learn what trips it up.Some people update these files multiple times a week.But think about what that means. You're constantly discovering new ways the model misunderstands you. Each update patches another failure mode. That's not documentation. That's fighting your tools.The counter-argument: it's like onboarding docs for a new engineer. Except onboarding docs don't need updates every few days. Your code conventions aren't changing that fast.\u27a1 Reset context constantly vs preserve conversation historyClear your context window often. The model is freshest with a clean slate. Auto-compaction degrades quality. Start fresh when things go sideways.But also: use iterative refinement. Have the model write code, talk through changes, ask for refactors. The conversation history IS the context. Reset and you lose it.\u27a1 Break tasks into tiny steps vs just write the code yourselfThe micromanagement approach: break everything into small tasks. Ask for a plan. Review. Execute one step. Review. Course correct. Repeat.But if you're doing all that work, you're figuring out the breakdown, reviewing every output, catching mistakes. Why not just type the code?The answer is that AI generates boilerplate faster than you can type. But you still architect the solution, define the steps, verify correctness. You've become a manager of a fast but unreliable junior developer.Some people like managing. Some would rather code.Why This HappensThese aren't best practices for a stable tool. They're workarounds for a moving target.People find something that works. For their brain. For their codebase. For their type of task. Then they generalise. But the underlying conditions differ.A greenfield React app has different constraints than a legacy Django monolith. Someone who thinks verbally gets more from voice prompts than someone who thinks by typing. Repetitive migrations benefit from detailed instruction files. One-off features might not.The model matters too. Opus behaves differently than Sonnet. Cursor has different affordances than Claude Code. What worked six months ago might be obsolete.So you get confident, contradictory advice. Everyone is telling the truth about their experience. Their experience just doesn't transfer cleanly.What This Tells UsMaybe there are no best practices yet.Best practices emerge when a tool is stable enough that patterns generalise. We have best practices for Git because Git behaves predictably. We have best practices for code review because the dynamics of human collaboration are understood.AI coding tools aren't there. The models change every few months. The tooling changes faster. What worked in January might not work in June.The meta-skill isn't \"learn the best practices.\" The meta-skill is rapid experimentation. Try short prompts. Try long ones. Try planning mode. Skip it. Reset context. Preserve it. Notice what works for you, on this task, with this model, this week.And know when to abandon an approach. If the model isn't getting it after a few attempts, don't keep pushing. Revert. Start fresh. Try something else. The sunk cost fallacy hits hard when you've spent 20 minutes crafting prompts.The GapThere's a gap between how AI coding is marketed and how it works in practice.The pitch: 10x developer. Programming accessible to non-programmers.The reality: experienced developers sharing elaborate workarounds, disagreeing about fundamentals, reviewing every line, acknowledging the code quality isn't quite there.If you don't know what you're doing, AI fails with death by a thousand cuts. The people getting good results are the ones who'd be productive without AI. The tool gives them a speed boost on mechanical tasks. It's autocomplete on steroids, not a replacement for knowing what you're doing.The honest answer to \"how do I get AI code to 90% of what I'd write by hand\" is: by being good enough to recognise the 10% gap and fix it yourself.That's the part nobody's figured out how to skip.\n    \n                            \n                                    Join engineers getting weekly insights on agents, RAG & production LLM systems\n                            \n                                \n                            \n                                No spam, no sharing to third party. Only you and me."
                ],
                "output": "readability/",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:32.793893+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2026-02-01T16:46:32.722411+00:00",
                "index_texts": null,
                "output": "Why AI Coding Advice Contradicts Itself",
                "pwd": "/data/archive/1769964377.756382",
                "schema": "ArchiveResult",
                "start_ts": "2026-02-01T16:46:32.672500+00:00",
                "status": "succeeded"
            }
        ],
        "wget": []
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": "https://web.archive.org/web/20260201164646/https://www.anup.io/why-ai-coding-advice-contradicts-itself/",
        "dom": "output.html",
        "favicon": "favicon.ico",
        "git": null,
        "media": "media/",
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "Why AI Coding Advice Contradicts Itself",
        "warc": null,
        "wget": null
    },
    "link_dir": "/data/archive/1769964377.756382",
    "newest_archive_date": "2026-02-01T16:46:42.019239+00:00",
    "num_failures": 0,
    "num_outputs": 9,
    "oldest_archive_date": "2026-02-01T16:46:20.256278+00:00",
    "path": "/why-ai-coding-advice-contradicts-itself/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_abid": "snp_01KGD1J5PA9772CBA801NZFE9R",
    "snapshot_id": "ec86f28d-d5a5-4a95-bc76-0aec2bf7b938",
    "sources": [
        "/data/sources/1769964377-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1769964377.756382",
    "title": "Why AI Coding Advice Contradicts Itself",
    "url": "https://www.anup.io/why-ai-coding-advice-contradicts-itself/"
}