So I was checking out Harper Reed’s article on using AI for coding and it’s super practical. His non-TDD workflow is broken down into three main phases:
- Idea Honing Reed kicks things off with ChatGPT 4o/o3 using this exact prompt:
“Ask me one question at a time so we can develop a thorough, step-by-step spec for this idea. Each question should build on my previous answers, and our end goal is to have a detailed specification I can hand off to a developer. Let’s do this iteratively and dig into every relevant detail. Remember, only one question at a time. Here’s the idea: [YOUR IDEA HERE]”
After the brainstorming wraps up naturally, he follows with:
“Now that we’ve wrapped up the brainstorming process, can you compile our findings into a comprehensive, developer-ready specification? Include all relevant requirements, architecture choices, data handling details, error handling strategies, and a testing plan so a developer can immediately begin implementation.”
This gives you a solid spec document (spec.md) to work from. 2. Planning Next, Reed passes the spec to a reasoning model (Claude o1, o3, or r1) with this non-TDD prompt:
“Draft a detailed, step-by-step blueprint for building this project. Then, once you have a solid plan, break it down into small, iterative chunks that build on each other. Look at these chunks and then go another round to break it into small steps. review the results and make sure that the steps are small enough to be implemented safely, but big enough to move the project forward. Iterate until you feel that the steps are right sized for this project. From here you should have the foundation to provide a series of prompts for a code-generation LLM that will implement each step. Prioritize best practices, and incremental progress, ensuring no big jumps in complexity at any stage. Make sure that each prompt builds on the previous prompts, and ends with wiring things together. There should be no hanging or orphaned code that isn’t integrated into a previous step. Make sure and separate each prompt section. Use markdown. Each prompt should be tagged as text using code tags. The goal is to output prompts, but context, etc is important as well. [YOUR SPEC HERE]”
Then he gets the LLM to create a todo.md with a simple:
“Can you make a todo.md that I can use as a checklist? Be thorough.”
- Execution For this final stage, Reed has tried tons of tools but personally prefers using raw Claude and Aider. With the newly released Claude Code, developers now have another awesome option that lets you delegate coding tasks right from your terminal! If you go the Aider route, Reed says it’s basically like feeding it prompts and watching it “just do it” while you kick back. Just set up your repo, start Aider, paste in the prompts from your plan, and watch it dance! The only downside is Aider can get pricey if you’re providing your own API keys.
“I have built so so many things using this workflow: scripts, expo apps, rust cli tools, etc. It has worked across programming languages, and contexts. I do like it.”
The best part of Reed’s approach is how versatile it is—you can use it for pretty much any coding project, and it keeps things moving forward without getting overwhelmed.