<?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>DEV Community: Heriberto Flores</title>
    <description>The latest articles on DEV Community by Heriberto Flores (@hfloresgu).</description>
    <link>https://dev.to/hfloresgu</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F124162%2F63ab3e33-30bc-43ab-abc8-a714801f81da.jpg</url>
      <title>DEV Community: Heriberto Flores</title>
      <link>https://dev.to/hfloresgu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hfloresgu"/>
    <language>en</language>
    <item>
      <title>If You Just Failed an Exam, This Post Is for You</title>
      <dc:creator>Heriberto Flores</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:41:48 +0000</pubDate>
      <link>https://dev.to/hfloresgu/if-you-just-failed-an-exam-this-post-is-for-you-392f</link>
      <guid>https://dev.to/hfloresgu/if-you-just-failed-an-exam-this-post-is-for-you-392f</guid>
      <description>&lt;p&gt;If you just failed an exam, this post is for you.&lt;/p&gt;

&lt;p&gt;Maybe you missed by a lot. Maybe you missed by a handful of points, which somehow hurts even more. Maybe right now you're wondering if you're really as good as you thought you were.&lt;/p&gt;

&lt;p&gt;I know that feeling, because I failed the Claude Certified Architect exam twice.&lt;/p&gt;

&lt;p&gt;By 30 points. Then by 20.&lt;/p&gt;

&lt;p&gt;And I passed on the third try with 845. But I want to tell you about the part in between, because that's the part nobody posts about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first fail
&lt;/h2&gt;

&lt;p&gt;I prepared the way a lot of us do. I paid for a practice exam and learned every question until I could answer all of them without thinking.&lt;/p&gt;

&lt;p&gt;Then I sat the real exam, and it was nothing like what I had studied. The questions were different and much harder. They didn't ask me to remember things. They asked me to make decisions, and they were designed to find out whether I really understood the foundations.&lt;/p&gt;

&lt;p&gt;I didn't.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The passing score was 720.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It stung, but I told myself it made sense. I just hadn't seen enough questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fail that really hurt
&lt;/h2&gt;

&lt;p&gt;So a month later, I tried harder. I bought a highly rated guide with more than 300 questions and memorised every one of them.&lt;/p&gt;

&lt;p&gt;This time the exam felt easy. Every question seemed to have a clear answer. I went fast. I walked out feeling good.&lt;/p&gt;

&lt;p&gt;700.&lt;/p&gt;

&lt;p&gt;I can't fully explain how that one felt. The first time, I could blame the surprise. This time I had done everything I thought I was supposed to do. I had felt ready. And I still wasn't good enough.&lt;/p&gt;

&lt;p&gt;I'll be honest: I got a bit depressed. It was hard to recover. I started questioning whether I was the engineer I believed I was, and whether I belonged in this new AI world I was so excited about.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I finally understood
&lt;/h2&gt;

&lt;p&gt;Here's what I couldn't see while I was in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Those fails weren't measuring me. They were measuring my strategy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Memorising questions teaches you to recognise answers, not to understand them. It feels exactly like knowing, which is why my second attempt felt so easy. But a good exam changes the scenario just enough that the answer you remember is the wrong one. My confidence was real. My understanding wasn't there yet.&lt;/p&gt;

&lt;p&gt;I wish I had realised that sooner. But I realised it, and that changed everything.&lt;/p&gt;

&lt;p&gt;So I stopped memorising. I put the question banks away and studied only the foundations, as hard as my mind could.&lt;/p&gt;

&lt;h2&gt;
  
  
  The third attempt
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend I walked in calm.&lt;/p&gt;

&lt;p&gt;I was scared. Terrified of failing a third time and proving to myself, once and for all, that I wasn't good enough.&lt;/p&gt;

&lt;p&gt;The exam was hard. Some questions confused me. But this time I didn't rush. I thought through every single one as well as I could, and I used every minute I had.&lt;/p&gt;

&lt;p&gt;845.&lt;/p&gt;

&lt;p&gt;I was so happy. Not only because I passed, but because I knew &lt;em&gt;why&lt;/em&gt; I passed. I hadn't remembered my way through it. I understood it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want you to know
&lt;/h2&gt;

&lt;p&gt;If you just failed, here's what I'd tell you if we were sitting together:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failing doesn't mean you aren't good enough.&lt;/strong&gt; It means something in how you prepared didn't work. That's fixable. You are not the problem; the approach is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Being close is not a reason to try the same thing again.&lt;/strong&gt; I missed by 30, then by 20, and I almost convinced myself that a bit more of the same would close the gap. It didn't. Changing how I studied did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fail is part of the story, not the end of it.&lt;/strong&gt; I'm grateful I didn't pass with a lucky 721. Those two fails forced me to build the understanding I now use every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it was worth it
&lt;/h2&gt;

&lt;p&gt;I didn't want this certification for the badge. I believe we're at the start of a new way of building software, and I wanted to be part of it from the beginning, ideally the first one to bring it into my company.&lt;/p&gt;

&lt;p&gt;Two fails made that feel very far away. Today I'm here.&lt;/p&gt;

&lt;p&gt;So if you're looking at a score that's lower than you hoped, take a few days. Feel it. Then change your approach, and go again.&lt;/p&gt;

&lt;p&gt;You've got this.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you ever failed something you really wanted? How did you come back from it? I'd love to read your story in the comments. And if you're preparing for the Claude Certified Architect exam right now, feel free to ask me anything.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>certification</category>
      <category>career</category>
    </item>
    <item>
      <title>From Coding to Lead Agents</title>
      <dc:creator>Heriberto Flores</dc:creator>
      <pubDate>Wed, 14 Oct 2026 16:02:54 +0000</pubDate>
      <link>https://dev.to/hfloresgu/from-coding-to-lead-agents-1jfk</link>
      <guid>https://dev.to/hfloresgu/from-coding-to-lead-agents-1jfk</guid>
      <description>&lt;p&gt;A while ago my relationship with Claude Code was simple: I typed a request, read what came back, corrected it and typed again. It worked. It was also me doing all the coordination. I was the one remembering what had been decided three messages ago, noticing when the model drifted, and deciding when something was "done".&lt;/p&gt;

&lt;p&gt;Today most of my prompts don't ask for code at all. They describe a &lt;strong&gt;process&lt;/strong&gt;: which phases run, in what order, who does each one, what counts as evidence, and when to stop. The agent writes the code. I write the rules it works under.&lt;/p&gt;

&lt;p&gt;I didn't get here in one jump. It happened in four stages, and each one started with something going wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: Prompting
&lt;/h2&gt;

&lt;p&gt;It was late in the afternoon, two hours into one long conversation. Early on, the model and I had agreed on how a validation rule should work. Now, deep in the scrollback, it rewrote that same rule the old way, and it did it with total confidence. I scrolled up to find where we had decided it, and I realised something uncomfortable: the decision only existed in the chat, and I was the only one still remembering it.&lt;/p&gt;

&lt;p&gt;That was the pattern back then. Ask for a feature, get a diff, point out what's wrong, repeat. The chat was the source of truth, and when the context got long, decisions quietly disappeared. Every fix polluted the next step: by the time I asked for tests, the model had already seen the implementation, so the tests matched the code, not the requirement. And "done" meant "the model said it's done". No evidence, just confidence.&lt;/p&gt;

&lt;p&gt;None of this was the model's fault. I was asking a single context to be the analyst, the architect, the developer, the tester and the reviewer, all at once, while remembering everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 2: Spec-driven development
&lt;/h2&gt;

&lt;p&gt;The first real change was adopting spec-driven development with &lt;a href="https://github.com/github/spec-kit" rel="noopener noreferrer"&gt;Spec Kit&lt;/a&gt;. It splits the work into explicit phases, each one producing a file: &lt;code&gt;spec → clarify → plan → tasks → analyze → implement → verify&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The first time I cleared the context between two phases, it felt wrong, like throwing away work. Then I watched the plan phase read the approved &lt;code&gt;spec.md&lt;/code&gt; and catch a requirement I had forgotten I'd written. That's when it clicked: each phase stays consistent with &lt;strong&gt;what is actually written down&lt;/strong&gt;, not with the half-decisions piling up in a conversation. If it isn't in a file, it didn't happen.&lt;/p&gt;

&lt;p&gt;The rule that surprised me most was that the implementer doesn't write the tests. Implementation writes product code only. Tests come later, in verify, written &lt;strong&gt;from the spec's acceptance examples&lt;/strong&gt; by an agent that isn't allowed to read the product source. A context that has seen the implementation writes tests that confirm the implementation. A blind tester writes tests that confirm the &lt;em&gt;requirement&lt;/em&gt;. That only works if the context is truly clean, so clearing it between implement and verify isn't a nice-to-have; it's the whole guarantee.&lt;/p&gt;

&lt;p&gt;Bugs fit the same pipeline. A feature starts from requirements, so the spec is &lt;strong&gt;authored&lt;/strong&gt;. A bug starts from a symptom, so the spec is &lt;strong&gt;discovered&lt;/strong&gt; from what the code does and what was reported. Both produce the same &lt;code&gt;spec.md&lt;/code&gt;, and the bug path is allowed to &lt;strong&gt;stop instead of guessing&lt;/strong&gt;: when it can't reproduce the symptom with evidence, when nobody has defined the correct behaviour, or when the bug comes from something the codebase doesn't own. Teaching an agent &lt;em&gt;when to stop&lt;/em&gt; turned out to be as valuable as teaching it what to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 3: Becoming the orchestrator
&lt;/h2&gt;

&lt;p&gt;SDD fixed the drift, but it created a new routine. Clear the context, run the next command, read the output, decide whether to continue, clear the context again. One day I counted how many times I had done that for a single feature and realised I was just a very attentive for-loop.&lt;/p&gt;

&lt;p&gt;So I wrote the for-loop as a prompt. The main session stopped doing work and became an &lt;strong&gt;orchestrator&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Orchestration rules&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Act only as an orchestrator; never do the work of a phase yourself.
&lt;span class="p"&gt;-&lt;/span&gt; Run phases sequentially. For each phase, create a new, isolated subagent
  and ask it to read and follow that phase's skill.
&lt;span class="p"&gt;-&lt;/span&gt; Before each phase, read the progress file. After it finishes, record the
  result before starting the next one.
&lt;span class="p"&gt;-&lt;/span&gt; Each subagent reports in at most 10 lines: status, artifacts, blockers.
&lt;span class="p"&gt;-&lt;/span&gt; If a phase fails or is blocked, record it, stop, and report why.
  Do not run later phases.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything else in the prompt is about making that trustworthy. Each phase gets a fresh subagent with only the minimum it needs: the goal, the phase instructions, the relevant artifacts and the acceptance criteria. No transcripts, no "here's everything we discussed". Every subagent returns the same short report (&lt;code&gt;PASS&lt;/code&gt;, &lt;code&gt;FAIL&lt;/code&gt; or &lt;code&gt;BLOCKED&lt;/code&gt;, plus artifacts, checks run and blockers), with one line I consider essential: &lt;em&gt;&lt;code&gt;PASS&lt;/code&gt; is only valid when the acceptance criteria were actually checked. The absence of reported errors is not evidence.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A progress file is the orchestrator's memory, updated after every step. The first time a session died halfway through a feature, a fresh one read that file and picked up exactly where the old one stopped. That's when I started trusting long flows.&lt;/p&gt;

&lt;p&gt;After the phases pass, an independent subagent reviews the whole change. If it finds issues, new subagents fix them, tests run again, and a new review checks the result, for a maximum of three rounds. After that, the flow stops and reports. It never declares success on its own word, and specs can't be edited just to make a finding go away. Only when every exit condition holds does it commit, push and open a pull request. If it can't determine the target branch with certainty, it stops and asks. &lt;em&gt;Do not guess the branch&lt;/em&gt; is literally in the prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 4: Planning for agents, not for humans
&lt;/h2&gt;

&lt;p&gt;Once execution was agentic, the weak point moved upstream. I handed the orchestrator a plan I had written the way I'd write it for a teammate, with tasks like "refactor the module" and "fix the tests". The agents did exactly what each line said, and almost nothing I meant. A human fills the gaps with context. An agent in a fresh, isolated context has no context to fill them with.&lt;/p&gt;

&lt;p&gt;So I wrote a second prompt whose only job is to produce plans an orchestrator can execute. Every task carries its own &lt;strong&gt;execution contract&lt;/strong&gt;: the objective, the files to load, what may and may not change, dependencies, acceptance criteria, how to verify it, and a short handoff for whoever comes next. Alongside the plan comes a dependency map (what's sequential, what can run in parallel, where agents could collide on the same files) and a checkpoint so work can resume in a fresh context.&lt;/p&gt;

&lt;p&gt;The test I use for a good plan: &lt;em&gt;could another agent execute this task using only its specification and the referenced files, without the original investigation?&lt;/em&gt; If not, the task isn't done being planned.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;Looking back, the code got better, but that's not the main difference. &lt;strong&gt;My job changed.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;When I was prompting&lt;/th&gt;
&lt;th&gt;When I lead agents&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;I write requests&lt;/td&gt;
&lt;td&gt;I write processes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The chat holds the state&lt;/td&gt;
&lt;td&gt;Files hold the state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One context does everything&lt;/td&gt;
&lt;td&gt;Each role gets a fresh, minimal context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Done" is the model's opinion&lt;/td&gt;
&lt;td&gt;"Done" is a list of verified conditions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I catch mistakes by reading everything&lt;/td&gt;
&lt;td&gt;Gates, limits and reviews catch them, and I review the artifacts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;More agents feels like progress&lt;/td&gt;
&lt;td&gt;Delegate only what's needed for the goal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few lessons I'd pass on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context is a resource you manage.&lt;/strong&gt; Load only what's needed, persist the rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teach agents to stop.&lt;/strong&gt; An agent that halts and explains is worth more than one that guesses and keeps going.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate who builds from who checks.&lt;/strong&gt; Blind tests and independent reviews only work when the checker hasn't seen the builder's reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demand evidence, not confidence.&lt;/strong&gt; Write it into the prompt. Agents will happily report success otherwise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You're still accountable.&lt;/strong&gt; I review the spec, the plan and the final diff. Leading agents doesn't mean leaving the room.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I could tell myself one thing on day one, back in that two-hour chat, it would be this: stop trying to remember everything. Write it down, and build something that checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Are you still in the long-chat phase, or have you started writing processes for your agents? I'd love to hear what guardrails you've found useful, or where agentic flows broke for you. Leave a comment.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>agents</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
