<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Simon Boudrias</title>
    <description>The latest articles on Forem by Simon Boudrias (@sboudrias).</description>
    <link>https://forem.com/sboudrias</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1264291%2Fdb463fb0-bbef-4164-bfa0-4060a7f3aa79.jpeg</url>
      <title>Forem: Simon Boudrias</title>
      <link>https://forem.com/sboudrias</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sboudrias"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Simon Boudrias</dc:creator>
      <pubDate>Thu, 12 Feb 2026 16:26:46 +0000</pubDate>
      <link>https://forem.com/sboudrias/-48cf</link>
      <guid>https://forem.com/sboudrias/-48cf</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/datadog-frontend-dev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11014%2F70c8a7b6-16dc-4409-a3f6-d5498adc0e97.png" alt="Datadog Frontend Dev" width="460" height="460"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51386%2F05ffc384-4b71-44dc-86ff-0d5eddccc382.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/datadog-frontend-dev/how-to-remain-relevant-in-this-ai-era-1mle" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;🧑‍💻 How to remain relevant in this AI era?&lt;/h2&gt;
      &lt;h3&gt;Yoann Moinet for Datadog Frontend Dev ・ Feb 12&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Generic Sub-Agents Are... Good?</title>
      <dc:creator>Simon Boudrias</dc:creator>
      <pubDate>Fri, 31 Oct 2025 14:24:11 +0000</pubDate>
      <link>https://forem.com/datadog-frontend-dev/generic-sub-agents-are-good-33o5</link>
      <guid>https://forem.com/datadog-frontend-dev/generic-sub-agents-are-good-33o5</guid>
      <description>&lt;p&gt;This week, I’m sharing something more practical!&lt;/p&gt;

&lt;p&gt;I’ve been a fan of &lt;a href="https://docs.claude.com/en/docs/claude-code/sub-agents" rel="noopener noreferrer"&gt;Claude code sub-agents&lt;/a&gt; for a while. I mostly used them to &lt;a href="https://github.com/SBoudrias/cocktails/blob/main/.claude/agents/ingredient-validator.md" rel="noopener noreferrer"&gt;split up context-heavy processes&lt;/a&gt; into smaller, focused agents.&lt;/p&gt;

&lt;p&gt;Recently, while chatting with my colleague Brad Carter, he mentioned the idea of replicating the different &lt;em&gt;personas&lt;/em&gt; inside a startup — having different AI roles work together. It sounded odd at first, but I had to try it for myself.&lt;/p&gt;

&lt;p&gt;After experimenting with a few personas, one combination stood out: a &lt;strong&gt;software engineer&lt;/strong&gt; and a &lt;strong&gt;code reviewer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I think the magic comes from how the two sub-agents collaborate — the reviewer always starts with a fresh perspective. This helps catch any hallucinations or deviations from the plan early on, preventing them from spreading through an entire coding session.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Your Agents
&lt;/h2&gt;

&lt;p&gt;I’ve published the agents in my &lt;a href="https://github.com/SBoudrias/claude-marketplace" rel="noopener noreferrer"&gt;Claude marketplace&lt;/a&gt; for easy access. You can also &lt;a href="https://github.com/SBoudrias/claude-marketplace/tree/main/startup/agents" rel="noopener noreferrer"&gt;copy-paste them freely&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude plugin marketplace add https://github.com/SBoudrias/claude-marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open Claude, run &lt;code&gt;/plugin&lt;/code&gt;, and select &lt;strong&gt;Browse and install plugins&lt;/strong&gt;. Choose the marketplace, then install &lt;strong&gt;startup-subagents&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use
&lt;/h2&gt;

&lt;p&gt;I’ve included a helper command, but it’s really just a one-liner prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Orchestrate work between the senior-software-engineer and the code-reviewer to implement [...fill in the blank!]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In practice, I often ask Claude to help me draft a technical plan inside a file like &lt;code&gt;PLAN.md&lt;/code&gt;, then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/orchestrate @PLAN.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For smaller tasks, I just run something inline, like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/orchestrate fix failing CI on the PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That’s it — simple and powerful. Give it a shot and let me know how it goes!&lt;/p&gt;

&lt;p&gt;If you’re still struggling to get high-quality code from AI agents, &lt;a href="https://dev.to/datadog-frontend-dev/ai-coding-is-boring-and-what-to-do-about-it-5bji"&gt;check out my previous post&lt;/a&gt;. The most common mistake I see is &lt;strong&gt;delegating the thinking&lt;/strong&gt;. Once you describe &lt;em&gt;how&lt;/em&gt; the code should be implemented, you’ll realize the AI is there to assist — but you’re still in the driver’s seat.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Steering AI Agents in Monorepos with AGENTS.md</title>
      <dc:creator>Simon Boudrias</dc:creator>
      <pubDate>Fri, 26 Sep 2025 19:11:37 +0000</pubDate>
      <link>https://forem.com/datadog-frontend-dev/steering-ai-agents-in-monorepos-with-agentsmd-13g0</link>
      <guid>https://forem.com/datadog-frontend-dev/steering-ai-agents-in-monorepos-with-agentsmd-13g0</guid>
      <description>&lt;h2&gt;
  
  
  Why Steering Documents Matter
&lt;/h2&gt;

&lt;p&gt;A well-maintained &lt;code&gt;AGENTS.md&lt;/code&gt; is the &lt;strong&gt;contract&lt;/strong&gt; between your codebase and the agent ecosystem. It answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What can I ask this agent to do here?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What tools, conventions, or workflows are in scope?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good baseline of steering documents makes AI more predictable and reliable. Hinting it to follow your patterns, understands your architecture, and generates code that fits your codebase. It doesn't replace &lt;a href="https://dev.to/datadog-frontend-dev/ai-coding-is-boring-and-what-to-do-about-it-5bji"&gt;good AI practices&lt;/a&gt;, but it improves the OOTB experience.&lt;/p&gt;

&lt;p&gt;Remember it is written for AI agents, not human. Keep them concise and to the point. For example, see the &lt;a href="https://cookbook.openai.com/examples/gpt-5-codex_prompting_guide" rel="noopener noreferrer"&gt;GPT5-codex prompting guide&lt;/a&gt; and the terseness of the prompts. Characters add to an agent context window, so terseness allow them to do more.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Test Your Steering Docs
&lt;/h2&gt;

&lt;p&gt;Testing steering documents is similar to testing an onboarding guide. You need to walk through it step by step.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create a collection of example prompts.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Think of all the tasks an engineer might do inside your monorepo, make sure you have one or 2 example prompts per task.&lt;br&gt;
Example: “Migrate an email template to our new framework. Here's the previous code: [...]”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Store them somewhere durable.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A shared Google Doc or Confluence page works fine—these are lightweight, editable, and accessible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the prompts with all your supported tools.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Try Claude Code, Cursor, Codex CLI, or whichever agents your team supports. Different agents work differently, it's best to test across.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observe breakdowns.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Where did the agent get lost? What knowledge did it lack to properly complete the task? &lt;code&gt;git reset --hard&lt;/code&gt;, edit your steering doc, and retry until your agent one-shot your test prompt.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This may feel simple, but simplicity is a feature. You’ll uncover real gaps faster than if you over-engineer an evaluation framework. Over time, you can start introducing automated evals—but don’t let that block you getting started.&lt;/p&gt;

&lt;h2&gt;
  
  
  AGENTS.md and Its Variants
&lt;/h2&gt;

&lt;p&gt;Most tools today recognize &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; as a standard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A notable exception at the time of writing is Anthropic's Claude code which only supports &lt;code&gt;CLAUDE.md&lt;/code&gt;. (&lt;a href="https://github.com/anthropics/claude-code/issues/6235" rel="noopener noreferrer"&gt;let's hope this changes soon&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;To support Claude code, I recommend against a symlink. Instead I approach it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Read @AGENTS.md"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; CLAUDE.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I prefer this approach because it gives us the flexibility to expand it with Claude-specific features (like sub-agents.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo-root/
├── AGENTS.md
├── CLAUDE.md          # contains "Read @AGENTS.md"
└── src/
    └── ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Root AGENTS.md as your router
&lt;/h2&gt;

&lt;p&gt;Nested &lt;code&gt;AGENTS.md&lt;/code&gt; are the default recommendation for monorepo. This means the closest &lt;code&gt;AGENTS.md&lt;/code&gt; to the edited file wins, but I find this approach quite limited on its own! For one, that only work if working from a sub-folder/specific file or if a user &lt;code&gt;@&lt;/code&gt; reference the file manually. Doing only that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Limits the agent access to examples/patterns in the rest of the codebase.&lt;/li&gt;
&lt;li&gt;The user needs to know from which sub-folder to work; making discoverability harder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We can bridge that gap with a root &lt;code&gt;AGENTS.md&lt;/code&gt; to progressively disclose information to your agent. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Tasks

To create an email, read @emails/AGENTS.md
To create a Go service, read @go/services/AGENTS.md
To add unit tests, read @.agents/unit-tests.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever appropriate, we prefer adding documentation in an &lt;code&gt;AGENTS.md&lt;/code&gt; contextual to a folder's content. But a general &lt;code&gt;.agents/&lt;/code&gt; folder to collect the other type of content is quite valuable for more generic context.&lt;/p&gt;

&lt;p&gt;Folder structure example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo-root/
├── AGENTS.md
├── emails/
    └── AGENTS.md
├── go/
    └── services/
        └── AGENTS.md
└── .agents/
    └── unit-tests.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, the root &lt;code&gt;AGENTS.md&lt;/code&gt; becomes a map, pointing agents to only read the relevant document based on their task. This helps a lot managing the context window when working on longer running tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about documentation maintained elsewhere?
&lt;/h3&gt;

&lt;p&gt;At a high level, there's nothing wrong referencing external documentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;To create an email, use Atlassian MCP server to read https://...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The downside is the risk of filling the context window with documentation written with humans in mind. But because you're testing your core prompts, you'll see easily if you're causing an agent to hallucinates.&lt;/p&gt;

&lt;p&gt;We recommend a pragmatic approach at first, and expanding later on.&lt;/p&gt;

&lt;p&gt;Alternatively, you can ask the agent to summarize the content of the external documentation. Put the output in an &lt;code&gt;AGENTS.md&lt;/code&gt; file, and tell the agent they can search for more information if needed at the given URL.&lt;/p&gt;

&lt;p&gt;This will then need to be kept up to date as any documentation. And that's something we're hoping to delegate to autonomous agents soon enough...&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring your Platform Teams along
&lt;/h2&gt;

&lt;p&gt;At some point, centralized dev experience teams can’t be experts in everything. Platform and product teams must own their own steering content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The central team provides the scaffolding (AGENTS.md, routing, shared configs).&lt;/li&gt;
&lt;li&gt;Each partner team fills in domain-specific instructions (e.g., “how to add observability to a python backend service”).&lt;/li&gt;
&lt;li&gt;This shifts expertise closer to where the work happens, while maintaining a consistent navigation structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Supporting User Customization
&lt;/h2&gt;

&lt;p&gt;Not every engineer works the same way. Customization matters.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Global preferences. Example: tone, tool prioritization. Place these in &lt;code&gt;~/AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;User-repo-specific overrides. Example: which service they own, what's their scope, etc. Introduce &lt;code&gt;AGENTS.local.md&lt;/code&gt;. &lt;code&gt;.gitignore&lt;/code&gt; it. And instruct your root &lt;code&gt;AGENTS.md&lt;/code&gt; to check it first: &lt;code&gt;If present, prioritize instructions inside @AGENTS.local.md&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo-root/
├── AGENTS.md
└── AGENTS.local.md   # .gitignored, user-specific
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Steering documents are still a pretty new territory for us. So we’re more than eager to learn from the community!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you structure steering docs in your monorepos?&lt;/li&gt;
&lt;li&gt;Do you share other configs (beyond steering), when/what?&lt;/li&gt;
&lt;li&gt;Where have you seen agents get lost most?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This space is moving fast—best practices will come from the community as much as from tools. This is only an approach, and called to evolve.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Latest post!</title>
      <dc:creator>Simon Boudrias</dc:creator>
      <pubDate>Thu, 18 Sep 2025 14:21:02 +0000</pubDate>
      <link>https://forem.com/sboudrias/latest-post-1kap</link>
      <guid>https://forem.com/sboudrias/latest-post-1kap</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/datadog-frontend-dev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11014%2F70c8a7b6-16dc-4409-a3f6-d5498adc0e97.png" alt="Datadog Frontend Dev" width="460" height="460"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1264291%2Fdb463fb0-bbef-4164-bfa0-4060a7f3aa79.jpeg" alt="" width="460" height="460"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/datadog-frontend-dev/ai-coding-is-boring-and-what-to-do-about-it-5bji" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AI Coding Is Boring — And What To Do About It&lt;/h2&gt;
      &lt;h3&gt;Simon Boudrias for Datadog Frontend Dev ・ Sep 18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#vibecoding&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#coding&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Coding Is Boring — And What To Do About It</title>
      <dc:creator>Simon Boudrias</dc:creator>
      <pubDate>Thu, 18 Sep 2025 13:19:54 +0000</pubDate>
      <link>https://forem.com/datadog-frontend-dev/ai-coding-is-boring-and-what-to-do-about-it-5bji</link>
      <guid>https://forem.com/datadog-frontend-dev/ai-coding-is-boring-and-what-to-do-about-it-5bji</guid>
      <description>&lt;p&gt;When I first tried AI coding, I was bored out of my mind. I’d type in a prompt… and think ‘guess I’ll wait?’ A minute later, some half-baked code would appear. I’d ask for a refactor. More waiting. Another tweak. More waiting. Eventually I’d close the tab and move on.  &lt;/p&gt;

&lt;h2&gt;
  
  
  When the Magic Trick Falls Flat
&lt;/h2&gt;

&lt;p&gt;The hype told us AI would be like waving a wand: type a prompt, get production-ready code. So when the output is clumsy, we don’t ask ‘What did I miss?’—we jump straight to ‘This thing is dumb.’&lt;/p&gt;

&lt;p&gt;You’re not alone if you’ve felt that way—nearly half of developers don’t trust AI’s accuracy according to the &lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;2025 Stack Overflow Survey&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2tuxqxm7xpi9cuq5xjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2tuxqxm7xpi9cuq5xjh.png" alt="Stackoverflow survey data" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AI is just a tool—am I the problem here?
&lt;/h3&gt;

&lt;p&gt;Here’s the shift: AI isn’t magic. It’s a tool. And tools only become powerful once you learn how to use them. These days, I’ll hash out a technical plan chatting with AI—what the interfaces look like, where the code should live, how the algorithm should work. Once the plan feels solid—something the size of a PR milestone—I send it off. The agent spends twenty minutes or more grinding through implementation while I'm free to move on to something else. That’s when AI stopped boring me and started being empowering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are you delegating the thinking?
&lt;/h2&gt;

&lt;p&gt;I'll quote my colleague &lt;a href="https://outoftime.github.io/" rel="noopener noreferrer"&gt;Mat Brown&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We shouldn’t merely give the AI a goal; we should describe the code we want to see at the level of individual functions, data structures, control flow structures, and so on. “Use detailed prompts” is &lt;a href="https://graphite.dev/guides/best-practices-ai-coding-assistants#crafting-effective-prompts" rel="noopener noreferrer"&gt;commonplace advice&lt;/a&gt; for users of AI tools, but this goes beyond optimizing the AI’s output. Our prompts should be detailed because we shouldn’t delegate the thinking to the AI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tell the AI &lt;strong&gt;what code you want it to write&lt;/strong&gt;. That oughta fix most concerns of code quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stop Babysitting, Start Leading
&lt;/h2&gt;

&lt;p&gt;Now I want to challenge you. If you’re prompting AI to refactor a few lines at a time, &lt;a href="https://chrisbeckman.dev/posts/the-babysitter-problem" rel="noopener noreferrer"&gt;you’re babysitting&lt;/a&gt;. This is the uncanny valley you must leave!&lt;/p&gt;

&lt;p&gt;Your goal is to get your agent to “one-shot” a large chunk of work independently over a meaningful period of time. Aim for at least 20 minutes.&lt;/p&gt;

&lt;p&gt;If it fails? &lt;strong&gt;Don’t patch its mistakes, jump on &lt;code&gt;git reset --hard&lt;/code&gt;&lt;/strong&gt;. Do it as often as you need.&lt;/p&gt;

&lt;p&gt;Ask yourself: what context was missing? Can I update &lt;a href="http://agents.md" rel="noopener noreferrer"&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt;, add some rules, or just refine my prompt with more clarity? Do those edits and start over. Don't give up until that code output is close to perfection.&lt;/p&gt;

&lt;p&gt;You'll find yourself in no time preparing much better prompts. And you'll find your agent much smarter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Determinism Always Wins
&lt;/h3&gt;

&lt;p&gt;One more tip: AI is probabilistic. Request deterministic workflows whenever you can. For example: Codemods, other AST transformation, linting rules, a small &lt;code&gt;jq&lt;/code&gt; command or even a &lt;code&gt;grep&lt;/code&gt;/&lt;code&gt;sed&lt;/code&gt; combo, are predictive operations.&lt;/p&gt;

&lt;p&gt;You can ask the agent to generate the script, review it, and then run it with confidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don’t Forget the Craft
&lt;/h3&gt;

&lt;p&gt;Once the AI has cranked out code that's complete and well architected, ditch the prompts and dive back into your IDE. Prompting to refactor gets you back into babysitting mode. It's slow and expensive.&lt;/p&gt;

&lt;p&gt;At that point, edits should be minor and simple. Don't overthink it, grab that IDE, get in the flow. Use your uniquely human taste and judgement to shape the final code.&lt;/p&gt;

&lt;p&gt;That last 10% of engineering—the craftsmanship—still belongs to us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Move
&lt;/h2&gt;

&lt;p&gt;Silence the hype, there's no magic. If you treat AI as a tool that gets better the more you learn to use it, you’ll find yourself less bored and more empowered. Don’t settle for babysitting. Push AI to work for you, reset when it fails and iterate until you improve. Keep the final touches for yourself; that’s where the fun lives.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
