[{"data":1,"prerenderedAt":351},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions":204,"\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions-surround":346},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":129,"authors":206,"badge":212,"body":214,"date":335,"description":336,"extension":337,"image":338,"meta":341,"navigation":342,"path":130,"seo":343,"status":344,"stem":131,"__hash__":345},"posts\u002F2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"AI Tools",{"type":215,"value":216,"toc":326},"minimark",[217,222,226,229,232,235,239,242,245,249,252,258,261,264,280,285,288,291,294,298,301,304,307,310,314,317,320,323],[218,219,221],"h2",{"id":220},"the-2-hour-dead-end","The 2-Hour Dead End",[223,224,225],"p",{},"At work I had some data and needed to build a system that made predictions, using constraints from existing data. Not something I typically need to do. I thought I'd solve it by making a classifier to find common characteristics, and use those patterns to make the constraints. I worked on it, first working version, made 0% successful predictions. After another 15m its up to 5% success, sweet it's working. After another hour it's up to 21%. I'm confident that I'll have this done by end of the day.",[223,227,228],{},"Fast forward to the end of the day, and it's stalled at 23%. I'm generating so much code and it's not improving. In frustration I paused. Switched to Plan mode (Shift+Tab twice). Asked: \"I need to make predictions using constraints from existing data. How could we do that?\"",[223,230,231],{},"Claude immediately suggested sklearn—a library I know but don't use enough. It had the exact feature I needed, battle-tested and documented!",[223,233,234],{},"I'd wasted all those hours directing Claude to build my overcomplicated solution instead of 2 minutes in plan mode telling it my problem.",[218,236,238],{"id":237},"the-pattern-directing-vs-asking","The Pattern: Directing vs. Asking",[223,240,241],{},"The mistake wasn't a technical one. I was treating Claude like a junior developer executing my architectural decisions.",[223,243,244],{},"Here's the thing—Claude is trained on all of human knowledge. When you ask for its approach, you're tapping into solutions from thousands of developers who've solved similar problems. When you direct it to build your solution, you're limiting it to your knowledge alone.",[218,246,248],{"id":247},"the-mental-model-plan-mode-vs-edit-mode","The Mental Model: Plan Mode vs. Edit Mode",[223,250,251],{},"On the call, my brother and I worked out a simple rule that I hope makes this pattern stick:",[223,253,254],{},[255,256,257],"strong",{},"\"Plan mode for your problems, Edit mode for Claude's problems.\"",[223,259,260],{},"This is where you present the actual challenge you're facing. You're not dictating the solution—you're asking Claude to think, research, and propose an approach.",[223,262,263],{},"The workflow:",[265,266,267,271,274,277],"ol",{},[268,269,270],"li",{},"Hit Shift+Tab twice to enter Plan mode",[268,272,273],{},"Describe your problem (not your solution)",[268,275,276],{},"Ask: \"What approach would you take?\"",[268,278,279],{},"Review the plan critically",[223,281,282],{},[255,283,284],{},"Edit Mode = Claude's Problems",[223,286,287],{},"Once Claude has proposed a solution, now you're directing implementation specifics. This is where your domain knowledge and preferences matter.",[223,289,290],{},"\"Actually, use this library instead of that one\"\n\"Put this file here, not there\"\n\"Follow this naming convention\"\n\"Use our existing error handling pattern\"",[223,292,293],{},"Claude has given you the architecture and approach. Now you're steering the details based on your codebase, your team's standards, your production environment.",[218,295,297],{"id":296},"the-simple-rule","The Simple Rule",[223,299,300],{},"Next time you're about to tell Claude how to build something, pause.",[223,302,303],{},"Ask yourself: Am I solving my problem, or am I directing a solution?",[223,305,306],{},"If you're solving a problem, switch to Plan mode. Describe the challenge. Ask what Claude would do.",[223,308,309],{},"After reviewing, switch to Edit mode. Direct the implementation details. Steer it toward your codebase patterns, your team's preferences, your architectural constraints.",[218,311,313],{"id":312},"the-bottom-line","The Bottom Line",[223,315,316],{},"I wasted 2 hours building the wrong thing because I was directing instead of asking. A simple question—\"What approach would you take?\"—would have saved those 2 hours and produced better code.",[223,318,319],{},"The rule sticks because it maps to the two modes: Plan mode for your problems (asking), Edit mode for its problems (directing).",[223,321,322],{},"Try it. Next time you're about to tell Claude what to build, switch to Plan mode and ask for its approach first.",[223,324,325],{},"You might be surprised how often Claude's solution is better than the one you were about to direct it to build.",{"title":327,"searchDepth":328,"depth":328,"links":329},"",2,[330,331,332,333,334],{"id":220,"depth":328,"text":221},{"id":237,"depth":328,"text":238},{"id":247,"depth":328,"text":248},{"id":296,"depth":328,"text":297},{"id":312,"depth":328,"text":313},"2025-10-19","I spent 2 hours directing Claude to build my solution before realizing I should have asked for its approach. Here's the simple rule that changed how I use AI coding assistants.","md",{"src":339,"alt":340},"\u002Fimages\u002Fblog\u002F20251019-1435-plan-mode-edit-mode-workflow.png","A split-screen composition showing a software developer at their desk in two moments: left side shows frustrated late-night coding with multiple messy code windows and complexity diagrams, right side shows the same developer in contemplative pose with a clean interface showing a simple plan prompt \"What approach would you take?\", a subtle lightbulb or aha moment glow. Dramatic contrast between chaotic warm amber lighting on the left (representing wasted effort) and clean, focused cool blue lighting on the right (representing clarity), shallow depth of field. Cinematic realism, professional photography quality, 8k detail, rule of thirds composition with the developer positioned at the center dividing line, high contrast color grading emphasizing the before\u002Fafter transformation.",{},true,{"title":129,"description":336},"published","E_brMK60NNUVRcVh4sucRsMSPqAWFZiC3PiDVGz_Ijk",[347,349],{"title":125,"path":126,"stem":127,"description":348,"status":344,"children":-1},"AI capabilities are advancing faster than we can internalize. Here's why the next phase of development will look radically different.",{"title":133,"path":134,"stem":135,"description":350,"status":344,"children":-1},"I researched unsupported features, checked pricing, deployed the stack—then discovered IAM-only auth means 15-minute tokens. Here's why that killed it for my Cloudflare Workers deployment.",1776221196452]