{
  "path": "/posts/2026/externalize-your-thought-process/index",
  "site": "at://did:plc:mracrip6qu3vw46nbewg44sm/site.standard.publication/self",
  "$type": "site.standard.document",
  "title": "Externalize Your Thought Process",
  "updatedAt": "2026-03-17T21:09:13.397Z",
  "publishedAt": "2026-03-04T16:13:31.526Z",
  "textContent": "import ChatContainer from '@components/prose/ChatContainer.astro';\nimport ChatMessage from '@components/prose/ChatMessage.astro';\n\nWe're at least a solid year (more for some of us) into building software with LLM agents and as an industry, there is limited coherence of what it looks like to effectively build software with agents, or even learn how to do this well.\nThere are tons of great resources, but it's close to a full-time job to remain up to date with the latest.\nThis is not to say all the latest ideas are good or worth trying but if you are coding with Copilot using Claude Sonnet 3.5 today, you probably would be better served trying out a different model.\n\nAn approach I keep returning to when it comes to teaching use of these LLM-based tools is real-time collaboration, with another person.\nI've had this belief corroborated by enough people in the industry at this point that I'll share it.\nThe best way to teach agents is to learn by watching someone more experienced, or by having someone more experienced shadow you while you use them.\nIt isn't all that important how you achieve this mode of pair, just that you do it.\nLeaving someone alone to \"try the tools\" is a paltry attempt to get them to adopt them.\n\nHighly skilled individuals may struggle to effectively use AI tools for any number of reasons.\nThis does not mean they can't learn them - just that they have not learned them yet.\nTeaching AI tools has become a bit of a hobby of mine.\nI've successfully leveled up people from all ages and backgrounds.\nIt takes patience and mentorship but if the individual is motivated to learn, they will get results.\n\nA first principles approach\n\nGiven the abundance of resources, it can be difficult to know where to start learning and where to start teaching even if you are familiar with the tools.\nI take what I call a \"first principles\" approach to learning LLM-based tools.\nIt's possible for someone to learn to apply a tool like ChatGPT or Claude Code without having a strong mental model for what they are doing, but without this background, they'll develop tool-specific knowledge rather than domain-specific knowledge.\nIt will be hard to understand the difference between what is happening with a tool like amp which runs in \"YOLO mode\" by default compared to Claude Code which requires command approval by default.\nIt's also possible you or they haven't even heard of any of these things at this point and that is also fine.\n\nIf you understand the systems closer to what LLM inference is and does, that knowledge is durable across tools and contexts.\nThe first thing I teach is what LLM inference is, through the lens of ChatGPT, a tool most people are familiar with.\n\n> When you send a prompt to ChatGPT, the model receives a wall of text, kind of like a Google Doc.\n> Within that text are different sections.\n> First there are instructions that OpenAI wrote, that you never see, then there can be other instructions you've given to describe how you want ChatGPT to behave, and finally, there is the prompt you wrote and things like pictures or documents you attached.\n> The model receives all of this and then it starts adding more words.\n> Those additional words are what appear as the response when you send a prompt.\n>\n> If you send another prompt, 100% of this text is sent to the model again.\n> There is no memory or storage happening.\n> It all is sent all over again, and the same thing happens.\n> More words are added to the end of that wall of text.\n> The previous messages are just more content that happens to come before your most recent prompt.\n\nThis (currently) is a fundamental tenet of how a language model works.\nIt (sometimes) has instructions you can't see.\nIt sees your message.\nIt generates a response.\nThat entire block of prose is the unit that produces the response from the model.\nIt's a minor simplification because of the hidden prompt, but conceptually it's \"big block of text in, new text comes out\" over and over again.\n\nTool calls\n\nWith this first tenet in place, I move to tool calls.\nIf we take the basic ChatGPT example, typically text goes in and text comes out.\nBut then there are these other tools we call agents to perform actions on your behalf.\nHow does that happen?\n\nImagine a scenario like this.\n\n<ChatContainer>\n  <ChatMessage role=\"user\">\n    I have a folder of csv files: monday.csv, tuesday.csv, wednesday.csv, ... I\n    want to change the file names to dates. Monday was January 5th, 2026. How\n    can I do it?\n  </ChatMessage>\n</ChatContainer>\n\nIf you send a language model that prompt, it will respond with something like this:\n\n<ChatContainer>\n  <ChatMessage role=\"assistant\">\nRenaming Day-of-Week CSVs to Dates\n\nSince Monday is January 5th, 2026, the mapping is:\n\n| Old Name      | New Name       |\n| ------------- | -------------- |\n| monday.csv    | 2026-01-05.csv |\n| tuesday.csv   | 2026-01-06.csv |\n| wednesday.csv | 2026-01-07.csv |\n| thursday.csv  | 2026-01-08.csv |\n| friday.csv    | 2026-01-09.csv |\n| saturday.csv  | 2026-01-10.csv |\n| sunday.csv    | 2026-01-11.csv |\n\nBash (Linux/macOS)\n\n...\n\n  </ChatMessage>\n</ChatContainer>\n\nThis is nice and useful but with this approach you become the implementor of the agent's plan, copying, pasting, running, and reporting back on the results of the commands.\nThe agent clearly knows what it would try, so what if it could run those commands itself?\nThat's what tool calls do: they give the model the ability to act, not just suggest.\n\nTo make this work, a few changes are needed.\nInstead of returning prose, we prompt the model to return commands it wants to run using a special structure, then we wrap the language model's response in software that understands how to run those instructions on a computer.\n\nRather than responding with text, we prompt the model to return something like this:\n\nThis isn't prose for a human to read: it's an instruction for software to execute.\nThe wrapping software reads this structure, runs the command on the machine, and feeds the result back to the model.\nThe model can then issue the next tool call, and so on, until the task is complete.\nThis includes recovering from and making corrections if it runs into any errors along the way.\n\nWith the first approach, you might not have known exactly what the commands you were copying and pasting did, but with this approach you might not even see the commands that are running at all.\nDepending on who you are, this may be scary, liberating, or a combination of both.\nThis is the step function change that comes with agents.\nThe software that wraps the language model (the \"harness\") pushes the users a level above the specific commands and allows them to instruct the machine in natural language, provided the idea has grounding in something real and possible.\n\nWith these two concepts (inference as text-in/text-out, and tool calls as structured actions) the mental model is in place.\nThe less you treat a language model like a magic box and the more you work with it with a specific intent, the better results you will get.\nThe question becomes how to put this understanding to use.\n\nHarvesting context\n\nAn approach I've had success with is interviewing whoever I am working with about what they are working on and what they want to accomplish.\nI record the conversation, and this raw transcript becomes the primary text for the model to understand how things work and what the goal is.\nThese conversation transcripts don't need to be well organized or refined.\nThey should capture as much context as possible about what is going on.\nIt's fine for there to be diverging threads of conversation or mistakes that are corrected.\nIt doesn't need to be perfect or even close to.\nThe information just needs to be available to the model.\n\nA common challenge I see for inexperienced users of LLMs is they expect the tool to read their minds.\nNot in a literal sense, but in a way that they expect the tool to understand everything that is implied from their perspective without having to explain it.\nThis explanation of more of the parts that seem obvious is what grounds the model in what you actually want and steers it towards a good result.\nSome people are happy to type all this out, but many flow more freely when having a conversation that you can harvest as context for the model.\nI record the conversation using free, open source software like Handy, which records and transcribes audio on-device.\nYou can activate the tool in an empty editor and it will transcribe the audio into there.\nYou should of course ask if you can record, but don't make a big deal out of it.\nPut them at ease then try and learn in earnest about what they are working on, their vision, and their goals.\nThe resulting artifact becomes the jump off point for code specs or requirements, research in state of the art, or a brainstorm of options and tradeoffs for how to proceed.\n\nExternalizing your thought process\n\nWith an introductory taste to this process from the interview, the next step is to introduce whoever you're teaching to effective prompting. This can go a couple different ways, but is easiest when they lead and you shadow, since they're almost certainly going to understand the details of their domain better than you, and this is ok!\nYou are not teaching them about their area of expertise; you are teaching them to amplify that expertise through a language model.\nStarting from the artifact as the jump off point from the interview, you'll eventually need to make some changes or refinements to what the model understood from this initial conversation.\nThese changes will come in the form of prompts.\nI've found that the most useful instruction and help that I've been able to provide is helping the student learn to become confident in their prompts to steer the model.\n\nMore often than not, this process again takes the form of a conversation, unrecorded at first.\nIt becomes my responsibility to repeatedly, gently turn the student to providing the questions or context that they're giv",
  "canonicalUrl": "https://www.danielcorin.com/posts/2026/externalize-your-thought-process/index"
}