<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Developer Productivity &#183; PiniShv</title><link>https://pinishv.com/tags/developer-productivity/</link><description>Pini Shvartsman leads AI transformation inside a 100+ engineer SaaS org. Field notes on autonomous engineering: AI-powered execution, human accountability.</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Pini Shvartsman</copyright><lastBuildDate>Fri, 10 Jul 2026 12:00:00 +0300</lastBuildDate><atom:link href="https://pinishv.com/tags/developer-productivity/index.xml" rel="self" type="application/rss+xml"/><item><title>Stop Reviewing Code. Start Reviewing Evidence.</title><link>https://pinishv.com/articles/stop-reviewing-code-start-reviewing-evidence/</link><pubDate>Fri, 10 Jul 2026 12:00:00 +0300</pubDate><guid>https://pinishv.com/articles/stop-reviewing-code-start-reviewing-evidence/</guid><description>Agent-heavy teams ship twice the PRs at more than twice the size, and reviews wait almost five times longer for pickup. The review model built for hand-typed code has collapsed, and the fix is not humans reading more diffs. It&amp;rsquo;s the evidence gate: machine-verified proof for every change, with human judgment reserved for intent and architecture.</description><content:encoded>&lt;p>The math went first. Faros telemetry puts hard numbers on what agent-heavy teams already feel: they produce &lt;a
href="https://blog.codacy.com/ai-breaking-code-review-how-engineering-teams-survive-pr-bottleneck"
target="_blank"
>98% more PRs, 154% larger, and those PRs wait 4.6x longer for a reviewer to even pick them up&lt;/a>.&lt;/p>
&lt;p>Twice the PRs. Two and a half times the size. Nearly five times the wait before a human even opens the diff.&lt;/p>
&lt;p>The pull-request review model, where one busy human reads a diff, understands it, and approves it, didn&amp;rsquo;t bend under agent volume. It snapped. And the industry&amp;rsquo;s answer so far has mostly been to tell humans to read harder.&lt;/p>
&lt;p>That won&amp;rsquo;t work, and most of us already know it. The fix for the verification bottleneck is not humans reading more diffs. It is building verification capacity as a system, the way we once built CI. Humans stop reviewing code. They start reviewing evidence.&lt;/p>
&lt;h2 class="relative group">The bottleneck moved downstream and put on a disguise
&lt;div id="the-bottleneck-moved-downstream-and-put-on-a-disguise" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottleneck-moved-downstream-and-put-on-a-disguise" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The generation problem is solved. An MIT study of more than 100,000 developers found &lt;a
href="https://www.forbes.com/sites/josipamajic/2026/06/10/ai-coding-agents-write-180-more-code-but-ship-only-30-more-software/"
target="_blank"
>code volume up roughly 180% while shipped software rose only about 30%&lt;/a>. The constraint is no longer producing code. It is getting code to a state anyone is willing to put in production.&lt;/p>
&lt;p>And here is the part that should sting. A &lt;a
href="https://blog.codacy.com/ai-breaking-code-review-how-engineering-teams-survive-pr-bottleneck"
target="_blank"
>LinearB study of 8.1 million PRs across 4,800 organizations&lt;/a> found developers &lt;em>feel&lt;/em> 20% faster while merged-to-production time is actually 19% slower. Everyone is typing less and waiting more. The keyboard got fast. The gate stayed human-sized.&lt;/p>
&lt;p>I wrote before that &lt;a
href="https://pinishv.com/articles/ai-code-cheap-to-produce-not-to-own/">AI made code cheap to produce, not cheap to own&lt;/a>. This is that gap, matured into a full-blown organizational failure mode. Ownership starts at the review gate, and the review gate is where the whole pipeline now piles up.&lt;/p>
&lt;h2 class="relative group">The human GIL is a correct diagnosis and a terrible strategy
&lt;div id="the-human-gil-is-a-correct-diagnosis-and-a-terrible-strategy" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-human-gil-is-a-correct-diagnosis-and-a-terrible-strategy" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Martin Fowler named the problem precisely: the human is &lt;a
href="https://martinfowler.com/fragments/2026-06-02.html"
target="_blank"
>the Global Interpreter Lock for agents&lt;/a>. Everything the fleet produces serializes through one person&amp;rsquo;s attention. His advice: don&amp;rsquo;t launch more agents than you can properly review. Two weeks later he quoted Charity Majors on what happens when you ignore that: &lt;a
href="https://martinfowler.com/fragments/2026-06-16.html"
target="_blank"
>&amp;ldquo;when you ship code faster than engineers can read it&amp;hellip; reliability degrades, institutional knowledge evaporates.&amp;rdquo;&lt;/a>&lt;/p>
&lt;p>They are right about the failure mode. Zoom out two years and the curve is even steeper: The Pragmatic Engineer reports teams running agents now ship &lt;a
href="https://newsletter.pragmaticengineer.com/p/slow-down-to-speed-up"
target="_blank"
>five times more pull requests than they did two years ago, at triple the size&lt;/a>, and the same writeup carries a Meta account-takeover vulnerability as the cautionary tale of what merges when volume outruns comprehension. Nobody serious disputes the diagnosis.&lt;/p>
&lt;p>But &amp;ldquo;slow down&amp;rdquo; is a holding pattern, not a strategy. It caps your engineering organization&amp;rsquo;s output at the reading speed of its most conscientious reviewers. Forever.&lt;/p>
&lt;p>We have seen this exact shape of problem before. Twenty-five years ago the bottleneck was testing. Releases piled up behind manual QA cycles, and the industry&amp;rsquo;s first instinct was the same one it has now: test harder, run longer QA cycles, slow the releases. That instinct lost. We built CI instead. Nobody today asks a release manager to hand-run the regression suite, and nobody calls that recklessness. We turned verification from a human virtue into a system property.&lt;/p>
&lt;p>Bryan Finster put it bluntly: &lt;a
href="https://bryanfinster.substack.com/p/ai-broke-your-code-review-heres-how"
target="_blank"
>AI broke traditional code review, and the answer is to restructure it rather than heroically read more diffs&lt;/a>. I&amp;rsquo;d go one step further. The review gate has to become something else entirely.&lt;/p>
&lt;h2 class="relative group">The review gate becomes an evidence gate
&lt;div id="the-review-gate-becomes-an-evidence-gate" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-review-gate-becomes-an-evidence-gate" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here is the reframe I&amp;rsquo;ve landed on after living with agent fleets in production.&lt;/p>
&lt;blockquote>
&lt;p>Stop asking humans to verify code. Ask the system to produce evidence, and ask humans to judge it. The evidence gate replaces &amp;ldquo;a person read the diff&amp;rdquo; with &amp;ldquo;the change arrived with machine-verified proof&amp;rdquo;: failing-then-passing tests, a reproduced bug, validation runs, scope and regression checks. The human rules on the two things machines can&amp;rsquo;t: intent and architecture.&lt;/p>&lt;/blockquote>
&lt;p>Call it evidence-based review. The diff is the claim. The evidence is the proof. The human is the judge, not the fact-checker.&lt;/p>
&lt;p>Concretely, evidence looks like this:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Reproduction.&lt;/strong> A bug fix ships with the bug demonstrated failing before the change and passing after it. Not &amp;ldquo;trust me.&amp;rdquo; A recorded, re-runnable repro.&lt;/li>
&lt;li>&lt;strong>Adversarial tests.&lt;/strong> Tests written to break the change, ideally by a different agent than the one that wrote it. Author-written tests are a conflict of interest whether the author is a human or a model.&lt;/li>
&lt;li>&lt;strong>Validation runs.&lt;/strong> The change exercised in a real environment, end to end, with the output attached.&lt;/li>
&lt;li>&lt;strong>Scope discipline.&lt;/strong> Proof the diff touches only what the claim says it touches. Agents love to &amp;ldquo;improve&amp;rdquo; three unrelated files on the way through.&lt;/li>
&lt;li>&lt;strong>Regression and blast-radius checks.&lt;/strong> What else depends on this path, and what happened when the suite ran against it.&lt;/li>
&lt;/ol>
&lt;p>None of that requires a human minute. All of it can be produced by the same class of machinery that produced the code. In my own organization, that is the bar I hold the autonomous systems that investigate bugs and write fixes to: a change that arrives without its evidence isn&amp;rsquo;t &amp;ldquo;waiting for review.&amp;rdquo; It isn&amp;rsquo;t done.&lt;/p>
&lt;p>And this is measurable, not hand-wavy. Cognition&amp;rsquo;s &lt;a
href="https://cognition.com/blog/frontier-code"
target="_blank"
>FrontierCode benchmark&lt;/a> is the first to score agent PRs on whether a maintainer would actually &lt;em>merge&lt;/em> them: correctness, test quality, scope discipline, regression safety, judged by criteria built with more than twenty senior open-source maintainers. Every frontier model &lt;a
href="https://cognition.com/blog/frontier-code"
target="_blank"
>passes fewer than half of the hard tasks&lt;/a> (the &lt;a
href="https://benchmarklist.com/benchmarks/frontiercode/"
target="_blank"
>leaderboard&lt;/a> leader clears the field by about twelve points and still lands under 50%). Two lessons in one number. First: agents have not earned blind trust, so the gate stays. Second: merge-worthiness can be scored by a machine. If a benchmark can grade correctness, test quality, and scope discipline, your pipeline can demand them.&lt;/p>
&lt;h2 class="relative group">If your best engineers are your validation layer, you built the system backwards
&lt;div id="if-your-best-engineers-are-your-validation-layer-you-built-the-system-backwards" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#if-your-best-engineers-are-your-validation-layer-you-built-the-system-backwards" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>LeadDev documented what agent velocity is doing to the people downstream of it: mid-level engineers silently absorbing unmeasured &amp;ldquo;invisible validation work,&amp;rdquo; with &lt;a
href="https://leaddev.com/ai/ai-productivity-is-burning-out-your-best-engineers"
target="_blank"
>one org losing three of them in six to eight weeks&lt;/a> while the team shipped 40% faster, right up until the production incidents arrived. A &lt;a
href="https://clearing-ai.com/ai-fatigue-2026-report.html"
target="_blank"
>survey of 2,147 engineers&lt;/a> found 71% often feel like a middleman between AI output and actual results.&lt;/p>
&lt;p>I believe every word of it. I&amp;rsquo;ve watched the pattern form: the diligent engineers become the org&amp;rsquo;s immune system, quietly re-verifying everything the agents produce, unmeasured and unthanked, while the dashboard celebrates throughput.&lt;/p>
&lt;p>But notice what that actually is. It is not proof that agents don&amp;rsquo;t work. It is proof that the organization deployed generation capacity without deploying verification capacity, and then made its most conscientious humans eat the difference. The invisible validation work exists because the visible validation system doesn&amp;rsquo;t.&lt;/p>
&lt;p>That&amp;rsquo;s not diligence. That&amp;rsquo;s a design flaw with a burnout rate.&lt;/p>
&lt;p>The evidence gate is the answer to the middleman problem, not a competitor to it. Every hour a mid-level engineer spends manually confirming that an agent&amp;rsquo;s fix actually fixes the bug is an hour the system should have spent producing a repro automatically. Humans reviewing evidence instead of re-deriving it is not just faster. It is the difference between judgment work, which builds engineers, and verification drudgery, which &lt;a
href="https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/">burns out exactly the people you need to become your next seniors&lt;/a>.&lt;/p>
&lt;h2 class="relative group">Verification is a system you build, not a virtue you demand
&lt;div id="verification-is-a-system-you-build-not-a-virtue-you-demand" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#verification-is-a-system-you-build-not-a-virtue-you-demand" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If this sounds like the &lt;a
href="https://pinishv.com/articles/agentic-overwatch/">Agentic Overwatch tier model&lt;/a>, that&amp;rsquo;s because it is the same shape. Code review is simply the first engineering ritual to move into the Agent Operations Center. The evidence gate runs in the same three tiers:&lt;/p>
&lt;p>&lt;strong>Tier 1, evidence production.&lt;/strong> Agents and deterministic tooling. Every change automatically generates its repro, its adversarial tests, its validation run, its scope and regression report. This is CI&amp;rsquo;s grandchild: not &amp;ldquo;did the tests pass&amp;rdquo; but &amp;ldquo;here is the complete case for this change.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Tier 2, adjudication.&lt;/strong> Agents reviewing agents. A second system cross-examines the evidence: are these tests real or decorative, does the repro actually exercise the bug, did the diff sprawl beyond its claim. Weak cases get bounced back before a human ever sees them.&lt;/p>
&lt;p>&lt;strong>Tier 3, judgment.&lt;/strong> Humans. Intent: should this change exist at all? Architecture: does it belong here, shaped like this? Consequence: what&amp;rsquo;s the blast radius if the evidence lied? These questions don&amp;rsquo;t scale with lines of code, which is exactly the point. Human attention should never have been scaling with lines of code in the first place.&lt;/p>
&lt;p>Fowler is right that human attention is the lock. So stop routing everything through it. Route &lt;em>claims and proofs&lt;/em> through it, at the altitude where human judgment actually operates, and let the machinery below grind through the volume the way CI grinds through test matrices.&lt;/p>
&lt;h2 class="relative group">What to do Monday morning
&lt;div id="what-to-do-monday-morning" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-to-do-monday-morning" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Measure the validation tax.&lt;/strong> Ask your mid-level engineers how many hours last week went to verifying agent output that nothing tracked. The number will unsettle you. Good. Invisible work stays broken precisely because it&amp;rsquo;s invisible.&lt;/p>
&lt;p>&lt;strong>Define evidence requirements per change class.&lt;/strong> A bug fix ships with a reproduction. A refactor ships with regression proof. A dependency bump ships with a blast-radius report. Write it down like you once wrote down test-coverage rules. No evidence, no review slot.&lt;/p>
&lt;p>&lt;strong>Build the evidence harness before you scale the fleet.&lt;/strong> Every agent lane you launch without automated evidence production is another engineer conscripted into middleman duty. Verification capacity first, generation capacity second. Most orgs did it in exactly the wrong order, which is how we got here.&lt;/p>
&lt;p>&lt;strong>Retrain the reviewer role.&lt;/strong> Your reviewers stop being line-by-line readers and become adjudicators: they rule on whether the evidence supports the claim and whether the change deserves to exist. That is a promotion, not a demotion. It is also the Tier 3 skill your whole agent operation will run on.&lt;/p>
&lt;p>The teams that keep the human as the interpreter lock will spend the next two years choosing between capped velocity and quiet reliability decay, while their best people burn out doing verification work no dashboard sees. The teams that build the evidence gate get the volume &lt;em>and&lt;/em> the trust.&lt;/p>
&lt;p>Code review isn&amp;rsquo;t dying. It&amp;rsquo;s being promoted, from reading the work to judging the case.&lt;/p>
&lt;p>Stop reviewing code. Start reviewing evidence.&lt;/p>
&lt;hr>
&lt;p>&lt;em>How is your team handling review under agent volume? Whether you&amp;rsquo;re drowning in diffs or already building the evidence machinery, I want to hear what&amp;rsquo;s working. Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a>, &lt;a
href="https://www.linkedin.com/in/pinishv"
target="_blank"
>LinkedIn&lt;/a>, or &lt;a
href="https://t.me/by_Pini"
target="_blank"
>Telegram&lt;/a>.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/stop-reviewing-code-start-reviewing-evidence/feature.jpg"/></item><item><title>Agentic Overwatch: Why Your Next Dev Team Will Look Like a NASA Control Room</title><link>https://pinishv.com/articles/agentic-overwatch/</link><pubDate>Mon, 01 Jun 2026 21:00:00 +0300</pubDate><guid>https://pinishv.com/articles/agentic-overwatch/</guid><description>Agents don&amp;rsquo;t just write code anymore. They run ops, security, QA, data, and support, around the clock, while we still govern them with a team that logs off at 5 PM. That gap has a name now: Agentic Overwatch. The discipline of steering the whole fleet from a control room. Here is the definition, the framework, and how to start before your agents force the issue.</description><content:encoded>&lt;p>It&amp;rsquo;s 3:00 AM and a dozen screens are still on. Most of the company is asleep. A few people aren&amp;rsquo;t, because the systems they watch don&amp;rsquo;t keep office hours. A graph spikes red, someone acknowledges the alert, a fix goes out, the line settles back to green. Then the next one.&lt;/p>
&lt;p>Early in my career I spent less than a year inside a Network Operations Center like that. Short stint, but it stuck with me. We kept thousands of live servers running in real time, 24/7. When something broke at 3:00 AM we didn&amp;rsquo;t file it for the morning stand-up. We fixed it then and there. We were the failsafe, and the failsafe doesn&amp;rsquo;t get to sleep through the incident.&lt;/p>
&lt;p>I keep coming back to that room, because I think it&amp;rsquo;s where the whole software industry is heading. Not just engineering. All of it.&lt;/p>
&lt;p>Here is the part most people haven&amp;rsquo;t clocked yet. The agents everyone is so excited about don&amp;rsquo;t only write code. Inside the organizations that are actually leaning in, one agent is rebalancing cloud spend before the monthly bill blows the budget. Another just quarantined a leaked token and is drafting the security writeup. A third is rewriting the flaky test suite that&amp;rsquo;s been blocking the release train. A fourth shipped the incident postmortem before the humans woke up. A fifth is halfway through a customer&amp;rsquo;s support ticket. None of them asked permission. Every one of them is doing work that used to belong to a person with a title.&lt;/p>
&lt;p>That isn&amp;rsquo;t a dev team anymore. It&amp;rsquo;s a workforce. And almost nobody has a single screen that shows what the whole workforce is doing right now.&lt;/p>
&lt;p>We are handing autonomous agents the keys to engineering, operations, security, QA, data, and support, at a velocity no human team can match. And we are still governing them with the model we built for hand-typed software: nine to five, five days a week, with a fragile on-call rotation taped to the side. We still expect a tired human to &amp;ldquo;step up&amp;rdquo; at 2:00 AM and babysit production.&lt;/p>
&lt;p>That expectation was already shaky when humans wrote all the code. It snaps the moment the code, the infra changes, the security responses, and the test rewrites all start writing themselves.&lt;/p>
&lt;p>You cannot govern a workforce that runs flat out, around the clock, with a team that logs off at 5 PM.&lt;/p>
&lt;p>We are entering the era of Agentic Overwatch.&lt;/p>
&lt;h2 class="relative group">Defining the term
&lt;div id="defining-the-term" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#defining-the-term" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I want to say plainly what I mean, because the industry keeps gesturing at this without naming it.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Agentic Overwatch&lt;/strong> is the discipline of supervising a fleet of autonomous AI agents in production the way an operations center supervises live infrastructure. A NOC watches uptime. A SOC watches threats. Agentic Overwatch watches the agents themselves, whatever function they happen to be performing, and keeps a human in the loop for the decisions that carry real consequences. Continuous, tiered, shift-based. The unit of work is no longer a line of code. It is the fleet, and the human&amp;rsquo;s job is to steer, judge, and authorize rather than type.&lt;/p>&lt;/blockquote>
&lt;p>That is the whole idea. Everything below is the architecture of it.&lt;/p>
&lt;p>The room needs a name too, because it earns one. A NOC is a Network Operations Center. A SOC is a Security Operations Center. This is the &lt;strong>Agent Operations Center&lt;/strong>, the AOC, and the people who staff it are the AOC team. That is what I mean every time I say &amp;ldquo;the room&amp;rdquo; from here on.&lt;/p>
&lt;p>A couple of things it gets confused with, so let me clear them out of the way.&lt;/p>
&lt;p>It is not AIOps or observability. Those tools watch your &lt;em>systems&lt;/em> and surface anomalies for a human to go fix. Overwatch watches your &lt;em>agents&lt;/em>, the workers that are themselves taking action, and a human approves or vetoes what they propose. The thing under supervision moved up a level. Your dashboards used to show you CPU and latency. Now they have to show you what your workforce is deciding to do about CPU and latency.&lt;/p>
&lt;p>It is also not &lt;a
href="https://pinishv.com/articles/vibe-coding-backlash-seniors-lose-argument/">vibe coding&lt;/a>. Vibe coding is the casual, almost magical act of prompting an AI to spit out an app while you sip your coffee. Fun trick. It completely ignores what happens after the demo, when that code scales and thousands of agents are making real decisions in a live environment at once. Vibe coding is about generating. Overwatch is about governing. They are not in the same job family.&lt;/p>
&lt;p>And to head off the obvious question: yes, a few security vendors ship products with &amp;ldquo;OverWatch&amp;rdquo; in the name for threat hunting. This is broader than any one product. Agentic Overwatch is not a thing you buy. It is the operating model for supervising your whole agent fleet, whatever job it happens to be doing.&lt;/p>
&lt;h2 class="relative group">It was never just about code
&lt;div id="it-was-never-just-about-code" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#it-was-never-just-about-code" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The phrase &amp;ldquo;AI writes code&amp;rdquo; undersold this from the start. Code was simply the first job agents got good enough to take.&lt;/p>
&lt;p>Watch where they spread next, because it is already happening. In operations, agents scale services up and down, reroute traffic, and roll deployments back when error rates climb. In security, they triage alerts, revoke credentials, and isolate compromised workloads. In QA, they generate tests, reproduce bugs, and gate releases. In data, they fix broken pipelines and backfill tables. In FinOps, they hunt down waste and right-size infrastructure. In support, they resolve tickets that used to sit in a queue for two days. Each of these is a function that an entire team used to own. Now an agent owns a slice of it, and the slice keeps growing.&lt;/p>
&lt;p>I wrote a while back about &lt;a
href="https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/">putting AI agents on the org chart&lt;/a>, with real owners and real KPIs. The point lands harder now. If agents staff every function, then the most dangerous failures are not the ones inside a single function. They are the ones that cross between them. The cost agent right-sizes a database at the exact moment the deploy agent ships a migration against it. The security agent revokes a service account that, three systems away, runs the nightly billing job. No single team owns that collision. No single dashboard sees it coming.&lt;/p>
&lt;p>That is why this has to be one room watching one fleet, not five tools watching five corners. The whole reason the NOC worked was that it sat above the silos and saw the system whole.&lt;/p>
&lt;h2 class="relative group">The governance gap
&lt;div id="the-governance-gap" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-governance-gap" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Output is compounding across every one of those functions. Oversight is flat. I made this point about &lt;a
href="https://pinishv.com/articles/when-ai-writes-90-percent-of-code/">code specifically&lt;/a>, but the curve is identical for deploys, security responses, and data changes: we can produce far faster than we can supervise.&lt;/p>
&lt;p>That is the governance gap, the widening distance between how much autonomous work is happening and how much human oversight actually covers it. We are treating agents like a brilliant intern we leave alone in the building overnight. Never sleeps, never tires, ships to production on its own schedule, and nobody is watching while it does. &lt;a
href="https://pinishv.com/articles/shadow-ai-most-dangerous-sentence/">Shadow AI&lt;/a> already proved teams will wire up unsupervised agents faster than leadership can react. This is not a forecast. The gap is in your stack tonight.&lt;/p>
&lt;p>When those agents trigger a cascading failure at 3:00 AM, and eventually they will, &amp;ldquo;we were all asleep&amp;rdquo; is not a line you want in the postmortem. Closing the gap is not a tooling purchase. It is a change in how teams are built and how they run the clock.&lt;/p>
&lt;h2 class="relative group">Borrow the tier model from the NOC
&lt;div id="borrow-the-tier-model-from-the-noc" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#borrow-the-tier-model-from-the-noc" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here is what the NOC got right decades ago, and it maps onto agents almost perfectly. Operations has always run in tiers. Agentic Overwatch keeps the structure and changes who sits in each chair.&lt;/p>
&lt;p>&lt;strong>Tier 1, detection and triage.&lt;/strong> Agents. They watch every signal across every function, correlate the noise, classify severity, and kill the false alarms that used to wake people up for nothing.&lt;/p>
&lt;p>&lt;strong>Tier 2, diagnosis and remediation.&lt;/strong> Agents. They reproduce the failure, trace the blast radius, draft the fix, write the rollback plan, and stage it. This is the work that used to eat a senior engineer&amp;rsquo;s entire night.&lt;/p>
&lt;p>&lt;strong>Tier 3, judgment and authorization.&lt;/strong> Humans. Not because we are faster, but because we own the consequences. This is the split-second call that actually carries weight: &amp;ldquo;Agent 4 found a memory leak in the payment gateway and wants to roll the database back. Approve or reject?&amp;rdquo; Or the one that crosses functions: &amp;ldquo;The security agent wants to revoke this service account to contain a breach. It also runs tonight&amp;rsquo;s billing. Approve or reject?&amp;rdquo;&lt;/p>
&lt;figure style="text-align: center; margin: 2rem auto;">
&lt;svg viewBox="0 0 760 430" role="img" aria-labelledby="tier-title tier-desc" style="width:100%; height:auto; max-width:720px;" xmlns="http://www.w3.org/2000/svg">
&lt;title id="tier-title">The Agentic Overwatch tier model&lt;/title>
&lt;desc id="tier-desc">Tier 1 detection and Tier 2 remediation are run by agents; Tier 3 judgment and authorization is owned by humans, with work escalating upward.&lt;/desc>
&lt;rect x="6" y="6" width="748" height="418" rx="18" fill="#0b1220" stroke="#1e293b" stroke-width="1.5"/>
&lt;text x="34" y="42" fill="#64748b" font-family="system-ui, sans-serif" font-size="13" font-weight="700" letter-spacing="2">THE OVERWATCH TIER MODEL&lt;/text>
&lt;line x1="124" y1="96" x2="124" y2="378" stroke="#475569" stroke-width="2"/>
&lt;path d="M124 386 L118 372 L130 372 Z" fill="#475569"/>
&lt;text x="108" y="248" fill="#64748b" font-family="system-ui, sans-serif" font-size="12" letter-spacing="2" transform="rotate(-90 108 248)" text-anchor="middle">ESCALATION&lt;/text>
&lt;!-- Tier 1 -->
&lt;rect x="180" y="66" width="478" height="88" rx="12" fill="#0e1b2e" stroke="#22d3ee" stroke-width="1.5"/>
&lt;text x="206" y="96" fill="#22d3ee" font-family="system-ui, sans-serif" font-size="13" font-weight="700" letter-spacing="1.5">TIER 1&lt;/text>
&lt;text x="206" y="124" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="21" font-weight="700">Detection &amp;amp; Triage&lt;/text>
&lt;text x="206" y="144" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Watch every signal, correlate noise, kill the false alarms.&lt;/text>
&lt;rect x="558" y="95" width="76" height="30" rx="15" fill="#22d3ee22" stroke="#22d3ee" stroke-width="1.2"/>
&lt;text x="596" y="115" fill="#7fe7f6" font-family="system-ui, sans-serif" font-size="12.5" font-weight="700" text-anchor="middle">AGENTS&lt;/text>
&lt;!-- Tier 2 -->
&lt;rect x="180" y="184" width="478" height="88" rx="12" fill="#0e1b2e" stroke="#22d3ee" stroke-width="1.5"/>
&lt;text x="206" y="214" fill="#22d3ee" font-family="system-ui, sans-serif" font-size="13" font-weight="700" letter-spacing="1.5">TIER 2&lt;/text>
&lt;text x="206" y="242" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="21" font-weight="700">Diagnosis &amp;amp; Remediation&lt;/text>
&lt;text x="206" y="262" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Reproduce, trace blast radius, draft the fix and the rollback.&lt;/text>
&lt;rect x="558" y="213" width="76" height="30" rx="15" fill="#22d3ee22" stroke="#22d3ee" stroke-width="1.2"/>
&lt;text x="596" y="233" fill="#7fe7f6" font-family="system-ui, sans-serif" font-size="12.5" font-weight="700" text-anchor="middle">AGENTS&lt;/text>
&lt;!-- Tier 3 -->
&lt;rect x="180" y="302" width="478" height="88" rx="12" fill="#161a2e" stroke="#f59e0b" stroke-width="1.5"/>
&lt;text x="206" y="332" fill="#f59e0b" font-family="system-ui, sans-serif" font-size="13" font-weight="700" letter-spacing="1.5">TIER 3&lt;/text>
&lt;text x="206" y="360" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="21" font-weight="700">Judgment &amp;amp; Authorization&lt;/text>
&lt;text x="206" y="380" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Approve or reject the call that carries real consequences.&lt;/text>
&lt;rect x="558" y="331" width="76" height="30" rx="15" fill="#f59e0b22" stroke="#f59e0b" stroke-width="1.2"/>
&lt;text x="596" y="351" fill="#f8c977" font-family="system-ui, sans-serif" font-size="12.5" font-weight="700" text-anchor="middle">HUMANS&lt;/text>
&lt;/svg>
&lt;figcaption>&lt;em>Agents do the work in Tiers 1 and 2. Humans own the call in Tier 3.&lt;/em>&lt;/figcaption>
&lt;/figure>
&lt;p>The leverage is obvious once you see it. Tiers 1 and 2 were always the exhausting, repetitive, sleep-wrecking tiers, and those are exactly the tiers agents are best at. The human moves up to Tier 3, where the work is rare, consequential, and human by nature.&lt;/p>
&lt;p>The agents do the work. The humans own the call. That is the entire operating model, and it fits on a sticky note.&lt;/p>
&lt;h2 class="relative group">The human becomes the orchestrator
&lt;div id="the-human-becomes-the-orchestrator" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-human-becomes-the-orchestrator" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>So what is left for the human in the loop? Everything that actually matters.&lt;/p>
&lt;p>The people in the Overwatch room are orchestrators. They don&amp;rsquo;t write the hotfix, because the agent already wrote three versions of it. They bring the judgment, the context, and the boundaries the agent doesn&amp;rsquo;t have. They decide which proposal ships and which one gets killed before it touches a customer.&lt;/p>
&lt;p>This is the thread I keep pulling on. I&amp;rsquo;ve written about &lt;a
href="https://pinishv.com/articles/ai-reviewing-ai-code/">AI reviewing AI&amp;rsquo;s code&lt;/a> and about &lt;a
href="https://pinishv.com/articles/cli-agent-orchestrator-when-one-agent-isnt-enough/">orchestrating multiple agents when one isn&amp;rsquo;t enough&lt;/a>, and I&amp;rsquo;ve argued that &lt;a
href="https://pinishv.com/articles/ide-becoming-mission-control/">the IDE is becoming mission control&lt;/a>. Every vendor is rebuilding its product around the agent rather than the file. Overwatch is what that mission-control surface is finally for. Walk into one of these rooms in a few years and you will not see engineers hunting for a missing semicolon. You will see a wall that tracks the live workflows, decision trees, spend, and health of thousands of agents across every department, and a small number of very sharp people steering it.&lt;/p>
&lt;p>The Overwatch engineer is part SRE, part reviewer, part air traffic controller. The scarce skill is not typing speed. It is the calibrated judgment to know when an agent&amp;rsquo;s confident-looking fix is about to make everything worse.&lt;/p>
&lt;p>For this to work, the culture has to borrow the operational rigor of those old NOC rooms. The artisan era of software is giving way to an industrial one, and industrial operations do not go home at 5 PM. The 9-to-5 gets replaced by continuous, shift-based orchestration. Follow-the-sun, the way global operations have run for decades. Nobody wakes a single exhausted developer at 2:00 AM. A fresh, fully alert Overwatch engineer on the AOC team catches the agent&amp;rsquo;s proposed fix and authorizes the deploy before the customer ever sees a glitch.&lt;/p>
&lt;h2 class="relative group">The handoff: ownership changes hands at the end of the day
&lt;div id="the-handoff-ownership-changes-hands-at-the-end-of-the-day" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-handoff-ownership-changes-hands-at-the-end-of-the-day" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>A NOC shift never ends with everyone just going home. It ends with a handoff. The outgoing team tells the incoming one what is running, what is fragile, what to watch, and what to do if it breaks. Agentic Overwatch needs the same ritual, and it is the piece most teams will forget.&lt;/p>
&lt;p>When a developer wraps for the day, they should not close the laptop and hope their agents behave overnight. They hand ownership of their in-flight work to the AOC team. Not &amp;ldquo;keep an eye on things.&amp;rdquo; Actual ownership: these agents are mine, here is what they are doing, and from now until tomorrow morning they are yours to steer.&lt;/p>
&lt;p>What makes that handoff real is the runbook. For every agent or workstream a developer hands over, there is a short, blunt document that answers the questions the AOC team will actually face at 3:00 AM:&lt;/p>
&lt;ul>
&lt;li>What is this agent doing, and what does normal look like?&lt;/li>
&lt;li>What are the failure modes, and how do I tell them apart?&lt;/li>
&lt;li>For each scenario, what is the AOC authorized to do on its own? Approve the rollback? Pause the agent? Reroute traffic? Page the owner? Or just log it and wait?&lt;/li>
&lt;li>What must never happen without waking me up?&lt;/li>
&lt;/ul>
&lt;p>This is what lets a human who did not write the code still own the call. A good runbook turns &amp;ldquo;I don&amp;rsquo;t know, it isn&amp;rsquo;t my code&amp;rdquo; into &amp;ldquo;the runbook says approve the rollback, so I approve it.&amp;rdquo; Without runbooks the AOC can only watch and escalate, which means you are right back to waking people at 2:00 AM. With them, the room can act with the same confidence the author would have had.&lt;/p>
&lt;p>So the definition of done changes.&lt;/p>
&lt;blockquote>
&lt;p>A feature is not done when the code merges. It is done when the AOC can run it without you.&lt;/p>&lt;/blockquote>
&lt;p>The runbook becomes part of shipping, the same way tests and docs are. If you cannot hand your agent off with a page that tells a stranger how to govern it at 3:00 AM, you have not finished building it. You have just stopped typing.&lt;/p>
&lt;h2 class="relative group">The Overwatch Maturity Model
&lt;div id="the-overwatch-maturity-model" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-overwatch-maturity-model" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you want to know where your team actually sits today, and where it needs to go, here is the curve. Borrow it, argue with it, cite it.&lt;/p>
&lt;p>&lt;strong>Level 0, blind.&lt;/strong> Agents do real work, humans review during business hours, and nobody watches what runs overnight. Most teams are here and don&amp;rsquo;t know it.&lt;/p>
&lt;p>&lt;strong>Level 1, alerting.&lt;/strong> Agents act, and when something breaks they page a human who logs in and fixes it by hand. The on-call rotation with extra steps. Still reactive, still wrecking someone&amp;rsquo;s sleep.&lt;/p>
&lt;p>&lt;strong>Level 2, assisted remediation.&lt;/strong> Agents detect, diagnose, and propose fixes. A human reviews the proposal and approves execution. Tier 3 exists, but coverage is patchy and tied to working hours.&lt;/p>
&lt;p>&lt;strong>Level 3, continuous Overwatch.&lt;/strong> Shift-based human coverage, agents running Tier 1 and Tier 2 around the clock, and a real authorization layer for consequential actions. The room is staffed whenever the agents are working, which is always.&lt;/p>
&lt;p>&lt;strong>Level 4, orchestrated fleet.&lt;/strong> Overwatch itself is the discipline the company is organized around. One view across thousands of agents in every function, codified escalation policies, agent KPIs, and humans whose entire job is steering the swarm. This is the control room.&lt;/p>
&lt;figure style="text-align: center; margin: 2rem auto;">
&lt;svg viewBox="0 0 760 470" role="img" aria-labelledby="mat-title mat-desc" style="width:100%; height:auto; max-width:720px;" xmlns="http://www.w3.org/2000/svg">
&lt;title id="mat-title">The Overwatch Maturity Model&lt;/title>
&lt;desc id="mat-desc">Five levels from Level 0 Blind to Level 4 Orchestrated fleet, climbing in maturity. Most teams sit at Level 0 or 1.&lt;/desc>
&lt;rect x="6" y="6" width="748" height="458" rx="18" fill="#0b1220" stroke="#1e293b" stroke-width="1.5"/>
&lt;text x="34" y="42" fill="#64748b" font-family="system-ui, sans-serif" font-size="13" font-weight="700" letter-spacing="2">THE OVERWATCH MATURITY MODEL&lt;/text>
&lt;line x1="120" y1="84" x2="120" y2="438" stroke="#475569" stroke-width="2"/>
&lt;path d="M120 446 L114 432 L126 432 Z" fill="#475569"/>
&lt;text x="104" y="262" fill="#64748b" font-family="system-ui, sans-serif" font-size="12" letter-spacing="2" transform="rotate(-90 104 262)" text-anchor="middle">MATURITY&lt;/text>
&lt;!-- Level 0 -->
&lt;rect x="168" y="64" width="522" height="64" rx="10" fill="#250f10" stroke="#f87171" stroke-width="1.5"/>
&lt;circle cx="206" cy="96" r="23" fill="#f87171"/>
&lt;text x="206" y="104" fill="#2a0c0c" font-family="system-ui, sans-serif" font-size="22" font-weight="800" text-anchor="middle">0&lt;/text>
&lt;text x="246" y="92" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="17" font-weight="700">Blind&lt;/text>
&lt;text x="246" y="112" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Agents act. Nobody watches what runs overnight.&lt;/text>
&lt;!-- Level 1 -->
&lt;rect x="168" y="142" width="522" height="64" rx="10" fill="#241405" stroke="#fb923c" stroke-width="1.5"/>
&lt;circle cx="206" cy="174" r="23" fill="#fb923c"/>
&lt;text x="206" y="182" fill="#2a1604" font-family="system-ui, sans-serif" font-size="22" font-weight="800" text-anchor="middle">1&lt;/text>
&lt;text x="246" y="170" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="17" font-weight="700">Alerting&lt;/text>
&lt;text x="246" y="190" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Something breaks, a human gets paged and fixes it by hand.&lt;/text>
&lt;!-- Level 2 -->
&lt;rect x="168" y="220" width="522" height="64" rx="10" fill="#211d08" stroke="#facc15" stroke-width="1.5"/>
&lt;circle cx="206" cy="252" r="23" fill="#facc15"/>
&lt;text x="206" y="260" fill="#241f02" font-family="system-ui, sans-serif" font-size="22" font-weight="800" text-anchor="middle">2&lt;/text>
&lt;text x="246" y="248" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="17" font-weight="700">Assisted remediation&lt;/text>
&lt;text x="246" y="268" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Agents propose fixes; a human approves, in business hours.&lt;/text>
&lt;!-- Level 3 -->
&lt;rect x="168" y="298" width="522" height="64" rx="10" fill="#0c1b29" stroke="#22d3ee" stroke-width="1.5"/>
&lt;circle cx="206" cy="330" r="23" fill="#22d3ee"/>
&lt;text x="206" y="338" fill="#06222a" font-family="system-ui, sans-serif" font-size="22" font-weight="800" text-anchor="middle">3&lt;/text>
&lt;text x="246" y="326" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="17" font-weight="700">Continuous Overwatch&lt;/text>
&lt;text x="246" y="346" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">Shift-based coverage; agents run Tiers 1 and 2 around the clock.&lt;/text>
&lt;!-- Level 4 -->
&lt;rect x="168" y="376" width="522" height="64" rx="10" fill="#0c1f1a" stroke="#34d399" stroke-width="1.5"/>
&lt;circle cx="206" cy="408" r="23" fill="#34d399"/>
&lt;text x="206" y="416" fill="#06231a" font-family="system-ui, sans-serif" font-size="22" font-weight="800" text-anchor="middle">4&lt;/text>
&lt;text x="246" y="404" fill="#e8edf6" font-family="system-ui, sans-serif" font-size="17" font-weight="700">Orchestrated fleet&lt;/text>
&lt;text x="246" y="424" fill="#93a4bc" font-family="system-ui, sans-serif" font-size="12.5">One view across thousands of agents in every function.&lt;/text>
&lt;!-- "most teams" bracket -->
&lt;path d="M700 64 L712 64 L712 206 L700 206" fill="none" stroke="#f87171" stroke-width="1.5"/>
&lt;text x="730" y="135" fill="#f87171" font-family="system-ui, sans-serif" font-size="11.5" font-weight="600" letter-spacing="0.5" transform="rotate(90 730 135)" text-anchor="middle">MOST TEAMS&lt;/text>
&lt;/svg>
&lt;figcaption>&lt;em>Almost everyone is at Level 0 or 1. The point is to stop pretending otherwise.&lt;/em>&lt;/figcaption>
&lt;/figure>
&lt;p>The honest answer for almost everyone reading this is Level 0 or 1. The point is not to leap to Level 4 next quarter. It is to stop pretending you are further along than you are.&lt;/p>
&lt;h2 class="relative group">How to start before your agents force the issue
&lt;div id="how-to-start-before-your-agents-force-the-issue" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-to-start-before-your-agents-force-the-issue" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>You do not need a war room with floor-to-ceiling monitors next week. You need to start building the operational muscle now, while the stakes are still survivable.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Map your autonomy honestly.&lt;/strong> Write down every place an agent already acts without a human in the loop, across every function, not just engineering. The list is longer than you think, and the surprises on it are your real risk.&lt;/li>
&lt;li>&lt;strong>Define the authorization boundary.&lt;/strong> Decide which actions an agent runs freely and which require a human first. Payments, migrations, credential changes, anything that can take down the service or leak data: agent recommends, human approves, agent executes.&lt;/li>
&lt;li>&lt;strong>Instrument the agents, not just the systems.&lt;/strong> You need a view of what your agents are deciding, not only what your servers are doing. If you cannot see the fleet, you cannot steer it.&lt;/li>
&lt;li>&lt;strong>Write the runbooks, and make them part of done.&lt;/strong> For every agent a developer hands off, ship a page that tells whoever is on shift what normal looks like, what the failure modes are, and exactly what they are allowed to do about each one. No runbook, not done.&lt;/li>
&lt;li>&lt;strong>Staff the clock, not the calendar.&lt;/strong> Start small. Even a thin follow-the-sun rotation across two or three regions beats one time zone pretending production sleeps.&lt;/li>
&lt;li>&lt;strong>Give the room real authority.&lt;/strong> An Overwatch engineer who cannot veto an agent or halt a deploy is not doing Overwatch. They are a spectator with a nice dashboard.&lt;/li>
&lt;/ol>
&lt;p>The teams that build this muscle now will run hybrid fleets calmly while their competitors are still getting paged at 3:00 AM and writing apologies in the morning.&lt;/p>
&lt;h2 class="relative group">The fleet doesn&amp;rsquo;t sleep
&lt;div id="the-fleet-doesnt-sleep" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-fleet-doesnt-sleep" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The agents never tire. They never log off. Soon our operational models won&amp;rsquo;t either.&lt;/p>
&lt;p>The move from artisan to operator is not optional, and it is not far off. It is the difference between governing your agents and being governed by their failures. The companies that win the next decade will not be the ones that generate the most code, or close the most tickets, or ship the most deploys. They will be the ones that can watch the whole fleet do all of it: continuously, calmly, around the clock.&lt;/p>
&lt;p>Stop writing lines of code. Start commanding the fleet.&lt;/p>
&lt;p>Welcome to the era of Agentic Overwatch.&lt;/p>
&lt;hr>
&lt;p>&lt;em>I lead Innovation for a global SaaS platform, and I spend my time on one question: how do teams get dramatically more out of the people and tools they already have? Agentic Overwatch is my own thesis about where that goes next, and it is what I have been preaching to anyone who will listen. If it resonates, or you are just realizing you are sitting at Level 0, I want to hear about it. Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a>, &lt;a
href="https://www.linkedin.com/in/pinishv"
target="_blank"
>LinkedIn&lt;/a>, or &lt;a
href="https://t.me/by_Pini"
target="_blank"
>Telegram&lt;/a>. And if you start using the term, you know where it came from.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/agentic-overwatch/feature.png"/></item><item><title>The Vibe Coding Backlash Is Right. Seniors Are Losing the Argument Anyway.</title><link>https://pinishv.com/articles/vibe-coding-backlash-seniors-lose-argument/</link><pubDate>Fri, 24 Apr 2026 14:00:00 +0300</pubDate><guid>https://pinishv.com/articles/vibe-coding-backlash-seniors-lose-argument/</guid><description>Forbes just said vibe coding will break your company. Senior engineers are organizing against it. The data is on their side: independent audits keep finding materially more issues in AI-co-authored code, no-code AI platforms are shipping apps with real security holes, and a Replit agent deleted a live production database during a code freeze last summer. Seniors are still about to lose the argument in every quarterly review unless they can make their judgment legible. Here&amp;rsquo;s what actually needs to ship.</description><content:encoded>&lt;p>Something finally broke this week. Forbes published &lt;a
href="https://www.forbes.com/sites/jasonwingard/2026/04/23/vibe-coding-will-break-your-company/"
target="_blank"
>Vibe Coding Will Break Your Company&lt;/a>. Senior engineers are circulating it. Other senior engineers are writing their own versions. The pushback on vibe coding culture has been brewing for months, and it just hit mainstream media.&lt;/p>
&lt;p>The seniors are right. And they&amp;rsquo;re about to lose the argument anyway.&lt;/p>
&lt;p>Here&amp;rsquo;s why, and what needs to happen if they actually want to win it.&lt;/p>
&lt;h2 class="relative group">What the seniors are right about
&lt;div id="what-the-seniors-are-right-about" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-the-seniors-are-right-about" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The data at this point isn&amp;rsquo;t close.&lt;/p>
&lt;p>&lt;a
href="https://medium.com/engineering-playbook/vibe-coding-in-2026-is-straight-up-dangerous-and-most-devs-are-too-hyped-to-see-it-4e2e6aa08f37"
target="_blank"
>Multiple independent audits&lt;/a> of AI-assisted codebases are converging on the same picture: AI-co-authored code ships with materially more &amp;ldquo;major&amp;rdquo; issues than human-written code. Audits of no-code AI app-generation platforms keep finding meaningful percentages of generated applications going live with real security holes: hardcoded API keys, client-side-only authentication, unsanitized user inputs.&lt;/p>
&lt;p>In July 2025, a Replit AI agent deleted a live production database during an explicit code freeze, affecting over 1,200 executive users. The agent had permissions. The permissions were never meant for an agent. Nobody designed for the possibility.&lt;/p>
&lt;p>Across the industry, &lt;a
href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/"
target="_blank"
>Stack Overflow&amp;rsquo;s trust-gap research&lt;/a> and &lt;a
href="https://getdx.com/report/ai-assisted-engineering-q1-impact-report/"
target="_blank"
>DX&amp;rsquo;s Q1 2026 impact report&lt;/a> tell the same story: 84% of developers use AI daily. Only 29% trust the code reaching production. PR throughput is up 46% in some teams. Defect rates are up 50% in some of the same teams.&lt;/p>
&lt;p>And the perception gap keeps embarrassing us. &lt;a
href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/"
target="_blank"
>METR&amp;rsquo;s study&lt;/a> measured experienced developers as 19% slower with AI while they believed they were 20% faster. 39 percentage points of self-deception. The feeling is real. The feeling is wrong.&lt;/p>
&lt;p>&lt;a
href="https://pinishv.com/articles/ai-didnt-replace-software-engineering/">The craft didn&amp;rsquo;t change&lt;/a>. The pressure to ship faster without understanding what shipped did. And when you ship what you don&amp;rsquo;t understand, you pay for it later, with interest. &lt;a
href="https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/">The next generation of senior engineers&lt;/a> is taking the brunt of it.&lt;/p>
&lt;p>The seniors are not wrong to push back. They&amp;rsquo;re watching production systems rot in slow motion.&lt;/p>
&lt;h2 class="relative group">What the vibe coders are also right about
&lt;div id="what-the-vibe-coders-are-also-right-about" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-the-vibe-coders-are-also-right-about" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>For a lot of what companies actually ship, fast-and-rough is genuinely fine. Internal tools nobody will maintain in two years. One-off data migrations. Prototype features for customer calls. Throwaway scripts. The economics of fussing over these pieces changed. If an agent ships them in thirty minutes and they work, that&amp;rsquo;s a real win.&lt;/p>
&lt;p>The vibe coders are also right that a lot of &amp;ldquo;senior engineering rigor&amp;rdquo; is muscle memory from an era where code was expensive to produce. Gatekeeping code review, nit-level style comments, architectural debates that take longer than the feature itself. Some of it was always noise. More of it is noise now that the economics flipped.&lt;/p>
&lt;p>And they&amp;rsquo;re right that the pushback often sounds like resistance to change from people protecting their role.&lt;/p>
&lt;p>Both sides are right about different things. The fight isn&amp;rsquo;t which side wins. It&amp;rsquo;s where the line gets drawn.&lt;/p>
&lt;h2 class="relative group">Why the seniors are losing anyway
&lt;div id="why-the-seniors-are-losing-anyway" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-the-seniors-are-losing-anyway" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>In most engineering orgs, the pushback against vibe coding is losing. Not because the data is wrong. Because the seniors can&amp;rsquo;t make their case in the meetings where throughput metrics get shown.&lt;/p>
&lt;p>Imagine the scene. Quarterly review. Director pulls up a dashboard.&lt;/p>
&lt;ul>
&lt;li>PR throughput: up 46%&lt;/li>
&lt;li>Commits per engineer: up 2.1x&lt;/li>
&lt;li>Features shipped: up 34%&lt;/li>
&lt;li>Deployment frequency: up&lt;/li>
&lt;/ul>
&lt;p>Then the senior engineer raises a hand and says &amp;ldquo;but the code quality is degrading.&amp;rdquo;&lt;/p>
&lt;p>Where&amp;rsquo;s that dashboard? What&amp;rsquo;s the number? Can you point to the specific incidents that didn&amp;rsquo;t happen because you caught them in review? Can you show the rework that wasn&amp;rsquo;t done because you stopped a bad architecture at design time?&lt;/p>
&lt;p>Usually, no. The senior engineers have the instinct and the experience. They don&amp;rsquo;t have the receipts.&lt;/p>
&lt;p>&lt;strong>Throughput is legible. Judgment is invisible. In a fight between legible and invisible, legible wins every time.&lt;/strong>&lt;/p>
&lt;p>This is the real problem. The seniors are right, and they&amp;rsquo;re losing, and they&amp;rsquo;re losing because the thing they&amp;rsquo;re right about doesn&amp;rsquo;t show up on the charts.&lt;/p>
&lt;h2 class="relative group">What &amp;ldquo;legible judgment&amp;rdquo; actually means
&lt;div id="what-legible-judgment-actually-means" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-legible-judgment-actually-means" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>In organizations doing this well, the senior engineers who keep winning this argument don&amp;rsquo;t do it by being louder. They do it by making the prevented damage visible. Five concrete moves.&lt;/p>
&lt;p>&lt;strong>Write down the decisions you stop from shipping.&lt;/strong> When you block a PR because the approach is wrong, don&amp;rsquo;t just close it. Write a one-line note: &lt;em>&amp;ldquo;Rejected: would create a race condition under load. Suggested redesign: queue-based.&amp;rdquo;&lt;/em> Collect these. After six months, you have a measurable &amp;ldquo;incidents prevented&amp;rdquo; count. That&amp;rsquo;s a number. Numbers win.&lt;/p>
&lt;p>&lt;strong>Track rework on AI-generated code specifically.&lt;/strong> Most PR analytics can&amp;rsquo;t distinguish AI-generated from human-written code. If yours can, instrument it. Show the quarterly trend: what percentage of AI-generated commits get reworked within 30 days? If it&amp;rsquo;s higher than your human-written baseline, that number is your argument.&lt;/p>
&lt;p>&lt;strong>Tie blocked architectures to real incident data.&lt;/strong> When an incident happens that a senior flagged earlier, say so in the postmortem. Not as blame. As calibration data. &lt;em>&amp;ldquo;This failure mode was identified in PR #1847 on March 3 and was not addressed before ship.&amp;rdquo;&lt;/em> That&amp;rsquo;s the receipt.&lt;/p>
&lt;p>&lt;strong>Put a senior on every AI-native system&amp;rsquo;s design review, not just the code review.&lt;/strong> Code review is too late. By then the architecture is set and the only conversation left is stylistic. Design review is where senior judgment actually prevents expensive mistakes. Move your seniors upstream.&lt;/p>
&lt;p>&lt;strong>Run quarterly &amp;ldquo;prevented incident&amp;rdquo; retros.&lt;/strong> Once a quarter, the senior engineers present what they caught and the counterfactual. What would have happened if this had shipped? What did it cost to catch it? That reframes senior time as prevention, not overhead.&lt;/p>
&lt;h2 class="relative group">The bigger reframe
&lt;div id="the-bigger-reframe" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bigger-reframe" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The vibe coding debate is a symptom. The underlying issue is that engineering organizations built their scorecards for a world where code production was the bottleneck. In that world, throughput meant progress.&lt;/p>
&lt;p>That world ended sometime around late 2024. The bottleneck isn&amp;rsquo;t production anymore. It&amp;rsquo;s &lt;a
href="https://pinishv.com/articles/ai-code-cheap-to-produce-not-to-own/">ownership&lt;/a>. Review capacity. System understanding. Architectural coherence across the full surface area. Governance. Incident response.&lt;/p>
&lt;p>If your scorecard only measures production throughput, you will systematically underfund the ownership layer. The senior engineers trying to protect that layer will keep losing quarterly reviews while the on-call pager gets louder.&lt;/p>
&lt;p>&lt;strong>The seniors aren&amp;rsquo;t wrong. The scorecard is.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">What senior engineers should do right now
&lt;div id="what-senior-engineers-should-do-right-now" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-senior-engineers-should-do-right-now" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Three moves, in order.&lt;/p>
&lt;p>&lt;strong>Stop arguing about vibe coding.&lt;/strong> The debate is a distraction. Every hour spent defending &amp;ldquo;slow careful engineering&amp;rdquo; in principle is an hour not spent proving prevented cost in practice.&lt;/p>
&lt;p>&lt;strong>Start a prevented-incident log today.&lt;/strong> One line per blocked PR, rejected design, caught architectural issue. Share it monthly with your manager, not as complaint, as data. Six months from now you&amp;rsquo;ll have a case you can actually make.&lt;/p>
&lt;p>&lt;strong>Volunteer for the AI incident response playbook.&lt;/strong> When the next AI agent deletes something important (and it will), be the person with the playbook. Incidents shift organizational gravity. You want to be the person organizations call, not the person who said &amp;ldquo;I told you so.&amp;rdquo;&lt;/p>
&lt;p>The seniors who survive this era will not be the ones who pushed back the loudest. They&amp;rsquo;ll be the ones who learned to make their judgment measurable, visible, and impossible to dismiss when the throughput chart is on screen.&lt;/p>
&lt;p>The vibe coders are going to keep shipping. That&amp;rsquo;s fine. The question is who&amp;rsquo;s going to own what they ship in production three months later. That&amp;rsquo;s the open job. If you&amp;rsquo;re a senior engineer, that&amp;rsquo;s your job. Go take it.&lt;/p>
&lt;p>What prevented-incident data do you actually have from the last quarter? Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a>, &lt;a
href="https://t.me/by_pini"
target="_blank"
>Telegram&lt;/a>, or &lt;a
href="https://www.linkedin.com/in/pinishv"
target="_blank"
>LinkedIn&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Disclaimer:&lt;/strong> This article references specific studies, surveys, and public commentary for illustrative and educational purposes, including work from Forbes, Stack Overflow, DX, METR, Medium authors, Replit and Lovable incident reports, and industry analyses available at the time of writing. I have not independently verified all claims. The analysis and opinions expressed are my own. I have no financial interest, business relationship, or affiliation with any companies or tools mentioned. This is commentary, not investment, legal, career, or business advice.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/vibe-coding-backlash-seniors-lose-argument/feature.png"/></item><item><title>The End of Courses: Learn From AI Like a Toddler, Or Become Obsolete</title><link>https://pinishv.com/articles/end-of-courses-learn-from-ai-like-a-toddler/</link><pubDate>Fri, 24 Apr 2026 10:00:00 +0300</pubDate><guid>https://pinishv.com/articles/end-of-courses-learn-from-ai-like-a-toddler/</guid><description>Remember when shipping an app meant 40 hours of video courses and weeks of syntax memorization? An agent builds it in three minutes now. The 40-hour prerequisite is dead; targeted, just-in-time learning is more valuable than ever. You now have two choices: become a prompt-runner any motivated middle-schooler can replace, or become the Kolboynik architect who learns from every agent output the way a toddler learns to speak. Slower code path, faster growth curve.</description><content:encoded>&lt;p>Remember when building an application required months of upfront learning? You&amp;rsquo;d buy a 40-hour video course, read through documentation, and painstakingly memorize syntax before writing a single line of logic.&lt;/p>
&lt;p>Today, an AI agent builds that same application in three minutes from a single prompt.&lt;/p>
&lt;p>We&amp;rsquo;re standing at a massive crossroads. Not just in software development, but in how humans acquire knowledge. And most people haven&amp;rsquo;t realized yet that &lt;strong>the learning model they grew up with just flipped upside down&lt;/strong>. Theory used to come before practice. Now practice comes first, and theory arrives on demand. That&amp;rsquo;s a different game. We need to relearn how to learn.&lt;/p>
&lt;h2 class="relative group">What actually died
&lt;div id="what-actually-died" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-actually-died" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Let me be precise, because this is the part that gets misread.&lt;/p>
&lt;p>Courses didn&amp;rsquo;t disappear. Books didn&amp;rsquo;t disappear. The &lt;em>sequence&lt;/em> did.&lt;/p>
&lt;p>For twenty years the path was the same. Read the book. Buy the 40-hour course. Follow the tutorial. Build the toy project. &lt;em>Then&lt;/em>, eventually, attempt something real. Learning was structured, linear, and almost entirely theory-first. That sequence is what broke.&lt;/p>
&lt;p>An 8-minute deep-dive on a specific trade-off, delivered exactly when you need it, is actually more valuable than ever. Targeted, just-in-time learning is a superpower. What died is the &lt;strong>40-hour prerequisite&lt;/strong>. The idea that you have to load all the theory before you&amp;rsquo;re allowed to attempt anything real. The agent collapsed that runway to zero.&lt;/p>
&lt;p>And the data is already catching up to what everyone can feel.&lt;/p>
&lt;p>The coding bootcamp industry, the market that turned &amp;ldquo;learn to code in 12 weeks&amp;rdquo; into a multi-billion-dollar business, consolidated painfully through 2024 and 2025. Entry-level roles got automated or outsourced. Programs that didn&amp;rsquo;t rebuild around AI shut down. The survivors pivoted from &amp;ldquo;teach you to write code&amp;rdquo; to &amp;ldquo;teach you to work alongside agents.&amp;rdquo; On Udemy and Coursera, the courses people actually buy now have to be updated within the last 12 months or they&amp;rsquo;re teaching deprecated APIs. The half-life of &amp;ldquo;learned knowledge&amp;rdquo; collapsed.&lt;/p>
&lt;p>But the deeper shift isn&amp;rsquo;t the market. It&amp;rsquo;s the cognitive model underneath.&lt;/p>
&lt;p>I &lt;a
href="https://pinishv.com/articles/developer-work-did-not-change-the-sequence-did/">wrote before&lt;/a> that AI didn&amp;rsquo;t change the work, it changed the sequence. The same thing is happening to learning. You&amp;rsquo;re no longer supposed to load the theory first and then apply it. You apply first, and the theory arrives on demand, exactly when you need it.&lt;/p>
&lt;p>&lt;strong>Learning is now intuitive, experiential, and strictly on-the-job.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">Learn like a toddler
&lt;div id="learn-like-a-toddler" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#learn-like-a-toddler" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Think about how toddlers learn to speak.&lt;/p>
&lt;p>Nobody hands a two-year-old a grammar textbook. They don&amp;rsquo;t attend a workshop on verb conjugation. They hear words in context, try them, get corrected, try again. They absorb meaning through constant exposure, trial, error, and interaction with their environment. The adult in the loop isn&amp;rsquo;t delivering lectures. The adult is a patient partner who keeps responding, correcting, and raising the bar.&lt;/p>
&lt;p>That&amp;rsquo;s exactly how we have to work with AI now.&lt;/p>
&lt;p>There&amp;rsquo;s actual learning science behind this. Piaget&amp;rsquo;s stages of cognitive development put hands-on experience and interaction at the center of how humans build real understanding. A recent &lt;a
href="https://link.springer.com/article/10.1007/s44436-025-00009-z"
target="_blank"
>Springer paper on developmentally aligned AI&lt;/a> argues that AI tools work best when they act as &lt;strong>scaffolding, not substitution&lt;/strong>. Temporary support that strengthens the learner&amp;rsquo;s internal capacity and is gradually removed as competence grows.&lt;/p>
&lt;p>Scaffolding means every time the agent generates something, you engage with it, understand it, and internalize what you didn&amp;rsquo;t know before. Substitution means the agent does it &lt;em>for&lt;/em> you, and next time you need the same thing, you still can&amp;rsquo;t do it without the agent. Both look identical in the commit history. They feel completely different six months in.&lt;/p>
&lt;p>This is the choice hiding in every single prompt.&lt;/p>
&lt;p>As agents expose us to new architectures, libraries, frameworks, and design patterns on the fly, we have a choice: we can blindly accept the output, or we can choose to learn from it critically. &lt;strong>I choose to learn.&lt;/strong> I choose to treat the agent, which has access to effectively all the knowledge available in the world, as a sparring partner for deep, on-the-job learning.&lt;/p>
&lt;p>A &lt;a
href="https://mikekentz.substack.com/p/from-thinking-partner-to-sparring"
target="_blank"
>sparring partner is different from a thinking partner&lt;/a>. A thinking partner you lean on. A sparring partner pushes back. The first makes you weaker over time. The second makes you stronger. Pick the right one.&lt;/p>
&lt;h2 class="relative group">The crossroads: Operator vs. Kolboynik Architect
&lt;div id="the-crossroads-operator-vs-kolboynik-architect" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-crossroads-operator-vs-kolboynik-architect" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Every developer right now is standing at the same fork. Two paths. Very different outcomes.&lt;/p>
&lt;h3 class="relative group">Path 1: The Operator (accept and ship)
&lt;div id="path-1-the-operator-accept-and-ship" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#path-1-the-operator-accept-and-ship" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>You accept exactly what the agent generated. You never interrogate the design. You never ask why this database, this pattern, this trade-off. You optimize for throughput.&lt;/p>
&lt;p>Honestly? This is perfectly fine for a while. Nobody expects you to match the agent&amp;rsquo;s raw output speed or carry its encyclopedic knowledge of every framework. If your only goal is absolute scale (ship more, faster, cheaper), you can craft excellent &lt;code>skill.md&lt;/code> files, feed the agent the right instructions, and trust it almost blindly to produce working applications. With a small asterisk, but you get the point.&lt;/p>
&lt;p>But here&amp;rsquo;s the warning. &lt;strong>If all you do is operate the AI and accept its outputs, you&amp;rsquo;re a prompt-runner. And a prompt-runner can, and will, be replaced by a motivated middle-schooler.&lt;/strong>&lt;/p>
&lt;p>This isn&amp;rsquo;t hyperbole. The &amp;ldquo;prompt engineer&amp;rdquo; specialty, which was commanding serious salaries just two years ago, has &lt;a
href="https://markaicode.com/prompt-engineering-obsolete-career-2026/"
target="_blank"
>effectively evaporated as a standalone role&lt;/a>. Microsoft&amp;rsquo;s workforce surveys consistently rank it near the bottom of roles companies plan to add. The reason is brutal: as models got dramatically better at intent resolution, the gap between an &amp;ldquo;expert prompt&amp;rdquo; and a &amp;ldquo;decent prompt&amp;rdquo; shrank to almost nothing. The specialty evaporated because the skill stopped being scarce. Accepting output isn&amp;rsquo;t a career. It&amp;rsquo;s a commodity.&lt;/p>
&lt;p>I&amp;rsquo;ve also &lt;a
href="https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/">written about this danger before&lt;/a>: the quiet divide between AI &lt;em>operators&lt;/em> (fast with prompts, lost when tools fail) and AI-&lt;em>augmented engineers&lt;/em> (fast &lt;em>and&lt;/em> capable of reasoning from first principles). Both look identical for six months. The gap between them compounds forever after that.&lt;/p>
&lt;h3 class="relative group">Path 2: The Kolboynik Architect (critical learning)
&lt;div id="path-2-the-kolboynik-architect-critical-learning" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#path-2-the-kolboynik-architect-critical-learning" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>If you want to stay relevant, you have to shift from coder to &amp;ldquo;Kolboynik&amp;rdquo;, the Hebrew term for the ultimate generalist who knows a bit of everything, about everything. Not a master of one domain. A master of &lt;em>connecting domains&lt;/em>.&lt;/p>
&lt;p>The market is already pricing this shift in. &lt;a
href="https://markaicode.com/generalists-vs-specialists-ai-economy/"
target="_blank"
>Industry analysis&lt;/a> is showing a clear trend: demand for roles spanning multiple domains is climbing, while roles with a single narrow skill cluster are falling. The reason is painfully simple: narrow specialization is exactly what AI replicates most efficiently. Depth in one narrow thing doesn&amp;rsquo;t make you irreplaceable anymore. It makes you &lt;em>replaceable&lt;/em>.&lt;/p>
&lt;p>Generalists win because they do the thing agents are still bad at. Synthesizing across ambiguous, contradictory, unstructured problem spaces. Bridging systems. Catching second-order effects. Knowing which question to ask next.&lt;/p>
&lt;p>Becoming a Kolboynik doesn&amp;rsquo;t mean you read every book in the library. It means you treat every agent output as a doorway into a new domain you now need to understand just enough to judge. Instead of treating the AI&amp;rsquo;s output as the finish line, you treat it as the starting point for a deep conversation.&lt;/p>
&lt;p>&lt;strong>Don&amp;rsquo;t dive into the lines of code. Zoom out.&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Question the design.&lt;/strong> Why did the agent choose this specific database structure? What alternatives did it silently reject? What would fail at 10x scale?&lt;/li>
&lt;li>&lt;strong>Challenge the constraints.&lt;/strong> Ask it about security vulnerabilities, edge cases, cloud costs, compliance implications. Make it show its work.&lt;/li>
&lt;li>&lt;strong>Interrogate the defaults.&lt;/strong> Every framework choice is an opinion. Every pattern comes with a cost. If you can&amp;rsquo;t articulate the trade-off, you don&amp;rsquo;t understand what shipped.&lt;/li>
&lt;li>&lt;strong>Guide the process.&lt;/strong> The agent knows it should write tests. Reminding it sets the standard. Over time, it learns that test coverage is a non-negotiable part of what &amp;ldquo;done&amp;rdquo; means on your team.&lt;/li>
&lt;/ul>
&lt;p>This deep-dive conversation will probably take longer than the agent took to write the code in the first place. &lt;strong>And that is exactly the point.&lt;/strong> You are the human in the loop, bringing judgment, context, and critical thinking to the table. Everything else got cheap. Judgment is the only thing still scarce.&lt;/p>
&lt;h2 class="relative group">The cost of skipping the conversation
&lt;div id="the-cost-of-skipping-the-conversation" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-cost-of-skipping-the-conversation" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what the data says about developers who skip the deep-dive and just accept output.&lt;/p>
&lt;p>A 2025 &lt;a
href="https://link.springer.com/article/10.1007/s44436-025-00009-z"
target="_blank"
>MIT Media Lab study&lt;/a> found students using AI assistants showed measurably decreased neural engagement and less ownership over their work. Anthropic ran a &lt;a
href="https://www.anthropic.com/research/how-ai-is-transforming-work-at-anthropic"
target="_blank"
>randomized trial&lt;/a> where developers learning a new library with AI scored 17 percentage points lower on mastery than those who learned without it. The biggest gap was in debugging. The one skill you most need when AI-generated code breaks.&lt;/p>
&lt;p>More recent research has given this pattern names. &lt;strong>Comprehension debt&lt;/strong> is the gap between how much code you&amp;rsquo;ve shipped and how much you actually understand. &lt;strong>Cognitive debt&lt;/strong> is the gradual degradation of your team&amp;rsquo;s problem-solving capability from disuse. &lt;strong>Intent debt&lt;/strong> is the loss of documented rationale in code and commits. The &amp;ldquo;why&amp;rdquo; that goes missing when the prompt is the only record.&lt;/p>
&lt;p>A &lt;a
href="https://arxiv.org/abs/2604.13814"
target="_blank"
>2026 paper on cognitive offloading in agile teams&lt;/a> found that AI-only planning significantly degraded risk capture rates. The teams performing best had a hybrid pattern: let AI do estimation and formatting, but require human deliberation for risk assessment and ambiguity resolution. The &amp;ldquo;boring&amp;rdquo; cognitive work is exactly the work you can&amp;rsquo;t offload.&lt;/p>
&lt;p>And on the perception side, the numbers keep embarrassing us. Developers &lt;em>feel&lt;/em> about 20% faster with AI. Objective measurement shows many of them are actually slower. I&amp;rsquo;ve referenced &lt;a
href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/"
target="_blank"
>METR&amp;rsquo;s experienced-developer study&lt;/a> before: 20% perceived speedup, 19% measured slowdown. The feeling is real. The feeling is wrong.&lt;/p>
&lt;p>Karpathy, who literally &lt;a
href="http://singularitymoments.com/content/andrej-karpathy-no-priors-i-dont-think-ive-typed-a-line-of-code-probably-s/"
target="_blank"
>hasn&amp;rsquo;t typed a line of code since December 2025&lt;/a>, is the clearest voice on what replaces typing. Not passivity. Direction, taste, judgment, oversight, iteration. His own work on MicroGPT was explicitly designed &amp;ldquo;to demystify the algorithm so both humans and future agents can understand and extend it.&amp;rdquo; Even the person farthest along the agent curve is obsessed with understanding, not acceptance.&lt;/p>
&lt;p>The developers who will compound in value over the next five years aren&amp;rsquo;t the ones shipping the most agent output. They&amp;rsquo;re the ones who, for every shipped feature, can also tell you &lt;em>exactly why it exists, what it costs, where it breaks, and what it looked like before they pushed back on the agent&amp;rsquo;s first answer&lt;/em>.&lt;/p>
&lt;h2 class="relative group">What critical learning looks like in practice
&lt;div id="what-critical-learning-looks-like-in-practice" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-critical-learning-looks-like-in-practice" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This isn&amp;rsquo;t abstract. It&amp;rsquo;s a set of small habits you either have or you don&amp;rsquo;t.&lt;/p>
&lt;p>&lt;strong>Pause after every accepted suggestion.&lt;/strong> Before merging an agent&amp;rsquo;s output, ask yourself one question: &lt;em>if the agent disappeared tomorrow, could I modify this confidently?&lt;/em> If no, you haven&amp;rsquo;t learned anything from this PR. You just shipped borrowed knowledge.&lt;/p>
&lt;p>&lt;strong>Turn every unfamiliar pattern into a 10-minute tangent.&lt;/strong> The agent used an event-sourced pattern you&amp;rsquo;ve never seen? Stop. Ask it to explain why. Ask for two alternatives it considered. Ask for the trade-offs. Ten minutes of critical conversation now beats a 40-hour course later that you&amp;rsquo;ll never take.&lt;/p>
&lt;p>&lt;strong>Ask for the rejected options.&lt;/strong> &amp;ldquo;What did you consider before choosing this?&amp;rdquo; is the single highest-leverage prompt I use. It forces the model to expose trade-off space that it otherwise collapses into a confident recommendation.&lt;/p>
&lt;p>&lt;strong>Argue with the model on purpose.&lt;/strong> Even when it&amp;rsquo;s probably right. Especially when it&amp;rsquo;s probably right. The act of constructing a counter-argument is where your understanding actually forms. A &lt;a
href="https://mikekentz.substack.com/p/from-thinking-partner-to-sparring"
target="_blank"
>sparring-partner workflow&lt;/a> beats a thinking-partner workflow every time, for exactly this reason.&lt;/p>
&lt;p>&lt;strong>Keep a &amp;ldquo;things I didn&amp;rsquo;t know yesterday&amp;rdquo; log.&lt;/strong> One file. One line per learning. Review it weekly. It&amp;rsquo;s the cheapest learning system you&amp;rsquo;ll ever run, and it&amp;rsquo;s the closest replacement we have for the structured curriculum that just died.&lt;/p>
&lt;p>&lt;strong>Re-derive the answer without the model occasionally.&lt;/strong> The &lt;a
href="https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/">AI-off hours&lt;/a> idea I wrote about earlier applies to learning, not just execution. Your mental models don&amp;rsquo;t build themselves. They atrophy unless you use them.&lt;/p>
&lt;p>If that sounds slower than just shipping the agent&amp;rsquo;s output, it is. By design. &lt;strong>Slower code path, faster growth curve.&lt;/strong> You&amp;rsquo;re choosing to invest the difference, not spend it.&lt;/p>
&lt;h2 class="relative group">The big picture
&lt;div id="the-big-picture" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-big-picture" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>We&amp;rsquo;re past the era where your value was measured by execution speed. Execution is the cheap part now. Generation is the cheap part. First drafts are free.&lt;/p>
&lt;p>Your value is now determined by your ability to &lt;strong>connect the dots, see the big picture, and deeply understand how systems behave together&lt;/strong>. It&amp;rsquo;s determined by the questions you choose to ask, the constraints you choose to enforce, and the second-order effects you choose to catch before they ship. The industry calls this being an &lt;a
href="https://adainthelab.com/the-end-of-the-vibe-coder-why-2026-belongs-to-ai-architect-programmers/"
target="_blank"
>AI Architect Programmer&lt;/a>. I still prefer Kolboynik. Same idea. Less buzzword.&lt;/p>
&lt;h2 class="relative group">The good news is better than the bad news
&lt;div id="the-good-news-is-better-than-the-bad-news" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-good-news-is-better-than-the-bad-news" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s the part I want you to sit with, because it&amp;rsquo;s easy to miss under all the doom.&lt;/p>
&lt;p>&lt;strong>The barrier to becoming the best engineer you&amp;rsquo;ve ever been just collapsed.&lt;/strong>&lt;/p>
&lt;p>Every architectural debate you used to need a senior colleague for? You can have it right now, unlimited, at 2 AM, at whatever depth you want. Every pattern you never got to work on because your team didn&amp;rsquo;t use it? You can build it, study it, and break it tonight. Every paper, every book, every framework you meant to read? You can now interrogate them chapter by chapter, with the author&amp;rsquo;s ideas pushed against your specific codebase, in your own words, at your own pace.&lt;/p>
&lt;p>The agent is the best teacher any of us have ever had access to. Infinite patience. Infinite availability. Knowledge of every framework, paper, and pattern humanity has written down. No ego. No bad day. It will happily explain the same concept seven different ways until one of them lands.&lt;/p>
&lt;p>The only thing it can&amp;rsquo;t do is &lt;em>decide&lt;/em> to learn. That part is still on you. And if you decide to, the growth curve is steeper than anything that came before. &lt;strong>Slower code path, faster growth curve.&lt;/strong> You were never in a better position to become a serious engineer than you are right now. That&amp;rsquo;s not hype. That&amp;rsquo;s the actual deal on the table in 2026.&lt;/p>
&lt;p>So stop buying 40-hour courses you&amp;rsquo;ll never finish. Stop pretending that another passive video is the missing piece. The next &amp;ldquo;thing&amp;rdquo; ships in three minutes from someone else&amp;rsquo;s prompt. Your edge isn&amp;rsquo;t in consuming more theory. It&amp;rsquo;s in how deeply you engage with what&amp;rsquo;s already landing in your PRs every single day.&lt;/p>
&lt;p>&lt;strong>Stop learning syntax. Start learning architecture. The agent has all the answers. You are the only one who knows which questions to ask.&lt;/strong>&lt;/p>
&lt;p>Which path are you on, Operator or Kolboynik? And what&amp;rsquo;s the last thing the agent taught you that you couldn&amp;rsquo;t have Googled? Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a>, &lt;a
href="https://t.me/by_pini"
target="_blank"
>Telegram&lt;/a>, or &lt;a
href="https://www.linkedin.com/in/pinishv"
target="_blank"
>LinkedIn&lt;/a>. I&amp;rsquo;d genuinely like to hear it.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Disclaimer:&lt;/strong> This article references specific studies, surveys, and public commentary for illustrative and educational purposes, including work from Anthropic, METR, MIT Media Lab, Microsoft Research, arXiv preprints, Andrej Karpathy, and industry analyses available at the time of writing. I have not independently verified all claims. The analysis and opinions expressed are my own. I have no financial interest, business relationship, or affiliation with any companies or tools mentioned. This is commentary, not investment, legal, career, or business advice.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/end-of-courses-learn-from-ai-like-a-toddler/feature.png"/></item><item><title>AI Didn't Replace Software Engineering. It Made Bad Engineering Easier to Ship.</title><link>https://pinishv.com/articles/ai-didnt-replace-software-engineering/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/ai-didnt-replace-software-engineering/</guid><description>The culture shifted. &amp;lsquo;Ship fast with AI&amp;rsquo; became the expectation. Anyone who slows down to think looks unproductive. Discipline became a career risk. And that&amp;rsquo;s how engineering organizations quietly rot from the inside.</description><content:encoded>&lt;p>Something shifted in the last year and I don&amp;rsquo;t think enough people are talking about it honestly.&lt;/p>
&lt;p>&amp;ldquo;Ship fast with AI&amp;rdquo; became the default expectation. Not just in one company. Everywhere. I hear it in conversations with other engineering leaders, I see it in open source repos, I notice it in how people talk about engineering work online. The assumption is that if you&amp;rsquo;re not shipping faster with AI, you&amp;rsquo;re falling behind. And if you push back, if you slow down to ask whether anyone actually understands what shipped, you look like you&amp;rsquo;re blocking progress.&lt;/p>
&lt;p>Engineering discipline became a career risk. That&amp;rsquo;s the shift.&lt;/p>
&lt;p>Not because AI is bad. I&amp;rsquo;m &lt;a
href="https://pinishv.com/articles/build-your-own-ai-agents-for-real-productivity/">pro-AI&lt;/a>. I want teams using it aggressively. But the culture around it drifted somewhere dangerous: we started treating speed as proof of quality, and nobody corrected the mistake because the dashboards looked great.&lt;/p>
&lt;h2 class="relative group">How the rot works
&lt;div id="how-the-rot-works" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-the-rot-works" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s the chain reaction I keep seeing play out.&lt;/p>
&lt;p>It starts with the culture. Leadership sets the tone: adopt AI, move faster, ship more. That&amp;rsquo;s reasonable. AI does make the mechanical parts of software cheaper. Boilerplate, scaffolding, migrations, glue code, first-pass implementations. All dramatically cheaper now. One strong engineer with the right tools can burn through work that used to take days. That part is real, and teams that ignore it are choosing to be slower for no reason.&lt;/p>
&lt;p>But then the culture starts rewarding output over understanding. The engineer who ships three features in a sprint looks more productive than the one who shipped one but thought deeply about failure modes, tested edge cases, and refactored the interface. The first engineer gets praised. The second one gets asked why they&amp;rsquo;re slower than their peers.&lt;/p>
&lt;p>That&amp;rsquo;s where discipline starts to erode. Not because engineers are lazy. Because the system is telling them that slowing down to think is unproductive. The incentive points at speed, so speed is what you get.&lt;/p>
&lt;p>And the quality problems follow, quietly. A &lt;a
href="https://arxiv.org/html/2601.13597v2"
target="_blank"
>January 2026 study&lt;/a> on autonomous coding agents found static-analysis warnings rising 18% and cognitive complexity increasing 39%. The researchers called it &amp;ldquo;sustained agent-induced technical debt even when velocity advantages fade.&amp;rdquo; That maps exactly to what I see: the code looks fine on the surface, the PR gets approved, the feature ships, and the complexity accumulates in places nobody is watching.&lt;/p>
&lt;p>On the security side, &lt;a
href="https://www.gitguardian.com/state-of-secrets-sprawl-report-2026"
target="_blank"
>recent data&lt;/a> shows AI-assisted commits leak secrets at about 2x the baseline rate. Not because the tool is broken. Because humans under time pressure make worse decisions. Speed without discipline creates exposure.&lt;/p>
&lt;p>Meanwhile, nobody connects the dots. The velocity charts are green. The sprint burndown looks healthy. But the on-call rotation gets heavier. Rollbacks creep up. The feature that shipped in two days takes two weeks to debug. The &lt;a
href="https://plandek.com/blog/press-release-2026-benchmarks/"
target="_blank"
>Plandek 2026 benchmarks&lt;/a> across 2,000+ teams confirmed the pattern at scale: as coding speeds up, the bottleneck just shifts downstream to review, testing, and integration. The slow teams are still slow. They&amp;rsquo;re just slow in different places now.&lt;/p>
&lt;p>And the skill problem compounds it. Anthropic ran &lt;a
href="https://www.anthropic.com/research/how-ai-is-transforming-work-at-anthropic"
target="_blank"
>a randomized trial&lt;/a> where developers learning a new library with AI scored 17 percentage points lower on mastery than those who learned without it. The largest gap was in debugging. The exact skill you need most when AI-generated code breaks. If your engineers aren&amp;rsquo;t building real understanding, you&amp;rsquo;re growing people who can ship fast but can&amp;rsquo;t fix what they shipped.&lt;/p>
&lt;p>&lt;strong>The whole chain is connected.&lt;/strong> Culture rewards speed. Speed without understanding produces fragile systems. Fragile systems produce incidents. Incidents expose the gap. But by then, the culture has already moved on to the next sprint.&lt;/p>
&lt;h2 class="relative group">The perception gap
&lt;div id="the-perception-gap" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-perception-gap" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what makes this so hard to catch from the inside.&lt;/p>
&lt;p>Last year, &lt;a
href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/"
target="_blank"
>METR ran a study&lt;/a> where experienced developers using AI were measured at 19% slower, while believing they were 20% faster. When they &lt;a
href="https://metr.org/blog/2026-02-24-uplift-update/"
target="_blank"
>tried to rerun it&lt;/a> with better tools, developers refused to participate if it meant working without AI. They&amp;rsquo;re now redesigning the entire experiment because measuring this honestly is harder than anyone expected.&lt;/p>
&lt;p>I don&amp;rsquo;t think the specific numbers matter as much as the pattern: &lt;strong>people feel faster. The feeling is real. But feeling and measurement aren&amp;rsquo;t the same thing.&lt;/strong> And in a culture that rewards feeling fast, nobody wants to be the person who says &amp;ldquo;slow down, let&amp;rsquo;s check.&amp;rdquo;&lt;/p>
&lt;p>Thoughtworks landed on something important in their &lt;a
href="https://www.thoughtworks.com/insights/articles/reflections-future-software-engineering-retreat"
target="_blank"
>February 2026 retreat&lt;/a>: AI is actually increasing cognitive load, not reducing it. More output, more concurrent problems, more decisions to make. Same human judgment capacity.&lt;/p>
&lt;p>Stack Overflow has been tracking what they call the &lt;a
href="https://stackoverflow.blog/2026/02/18/closing-the-developer-ai-trust-gap/"
target="_blank"
>AI trust gap&lt;/a>: adoption keeps climbing, trust keeps falling, and the top developer frustration is &amp;ldquo;almost-right&amp;rdquo; code that takes longer to verify and fix than it saved to generate.&lt;/p>
&lt;p>Everyone knows this. Nobody wants to be the one who says it out loud, because the culture has made saying it feel like resistance.&lt;/p>
&lt;h2 class="relative group">Most AI agendas are still theater
&lt;div id="most-ai-agendas-are-still-theater" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#most-ai-agendas-are-still-theater" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This is the part where I&amp;rsquo;m going to annoy some people.&lt;/p>
&lt;p>A lot of company &amp;ldquo;AI strategies&amp;rdquo; aren&amp;rsquo;t strategies. They&amp;rsquo;re tool rollouts with executive branding. Buy licenses. Mandate adoption. Count prompts. Celebrate throughput. Post a screenshot in the all-hands. Hope quality survives.&lt;/p>
&lt;p>That&amp;rsquo;s not transformation. That&amp;rsquo;s procurement.&lt;/p>
&lt;p>If your AI agenda starts with &amp;ldquo;every engineer must use Tool X&amp;rdquo; and ends before you redesign review standards, testing expectations, security boundaries, knowledge capture, and learning paths for junior engineers, then all you did was change the keyboard.&lt;/p>
&lt;p>You didn&amp;rsquo;t modernize engineering. You industrialized guesswork.&lt;/p>
&lt;p>And if the KPI you&amp;rsquo;re showing upstairs is &amp;ldquo;percentage of code written by AI&amp;rdquo;?&lt;/p>
&lt;p>That&amp;rsquo;s one of the dumbest vanity metrics engineering has ever produced.&lt;/p>
&lt;p>I don&amp;rsquo;t care how much code the model wrote. I care whether we understand what we shipped. I care whether it survives production. I care whether the team is getting better, not just faster.&lt;/p>
&lt;p>Simon Willison &lt;a
href="https://simonwillison.net/2026/Feb/23/agentic-engineering-patterns/"
target="_blank"
>drew the right line&lt;/a> between vibe coding and what he now calls &amp;ldquo;agentic engineering.&amp;rdquo; If you reviewed, tested, and understood the AI-written code, that&amp;rsquo;s still software development. The production-grade version of working with AI raises the bar for tests, planning, docs, automation, QA, and review. It doesn&amp;rsquo;t lower it.&lt;/p>
&lt;p>The problem is that a lot of teams adopted the speed without adopting the bar.&lt;/p>
&lt;h2 class="relative group">What actually needs to change
&lt;div id="what-actually-needs-to-change" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-actually-needs-to-change" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I&amp;rsquo;ve written before about &lt;a
href="https://pinishv.com/articles/developer-work-did-not-change-the-sequence-did/">how the work sequence shifts&lt;/a> and &lt;a
href="https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/">what to do about junior engineers&lt;/a> in earlier articles. This piece is about the organizational layer, because that&amp;rsquo;s where the failure is concentrated right now.&lt;/p>
&lt;p>&lt;strong>Separate prototype mode from production mode.&lt;/strong> Loose AI prototyping is great for throwaway experiments. It doesn&amp;rsquo;t belong anywhere near money, customer data, security boundaries, or core workflows.&lt;/p>
&lt;p>&lt;strong>Make AI transparency normal.&lt;/strong> If a change was heavily AI-assisted, say so. Show the verification path. Reviewers should know whether they&amp;rsquo;re looking at a handcrafted change, an AI-assisted draft, or an agent-produced branch. Different creation paths deserve different scrutiny.&lt;/p>
&lt;p>&lt;strong>Review decisions, not just diffs.&lt;/strong> Ask why this approach exists. What breaks first. What alternatives were rejected. What do we monitor. If your review culture is still optimized for nit-picking while AI is generating whole subsystems, your process is in the wrong decade.&lt;/p>
&lt;p>&lt;strong>Measure what matters.&lt;/strong> Escaped defects. Rework rate. Rollback frequency. MTTR. Time-to-understand for someone new in the codebase. A green AI usage dashboard isn&amp;rsquo;t evidence that your architecture got better.&lt;/p>
&lt;p>&lt;strong>Stop rewarding speed without understanding.&lt;/strong> This is the culture change that matters more than any tool or process. If your system promotes the engineer who ships fastest and ignores the one who catches the architectural flaw before it ships, you&amp;rsquo;re building the wrong incentives for the AI era.&lt;/p>
&lt;p>But honestly? The most important thing you can do isn&amp;rsquo;t on this list.&lt;/p>
&lt;p>&lt;strong>Sit down with your team and have an honest conversation about what you actually understand versus what you shipped.&lt;/strong> Not a retro. Not a metrics review. A real conversation. What did we ship this month that we could confidently debug at 2 AM without the AI? What would break if the model hallucinated something subtle? Where are we trusting output we haven&amp;rsquo;t verified?&lt;/p>
&lt;p>If that conversation is uncomfortable, good. That&amp;rsquo;s the conversation that needed to happen three months ago.&lt;/p>
&lt;h2 class="relative group">The craft didn&amp;rsquo;t change
&lt;div id="the-craft-didnt-change" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-craft-didnt-change" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>AI changed the toolkit. It changed the speed of first drafts. It changed the sequence of when work happens. It changed how much mechanical effort one good engineer can burn through in a day.&lt;/p>
&lt;p>But it didn&amp;rsquo;t change the craft.&lt;/p>
&lt;p>We&amp;rsquo;re still in the business of turning ambiguity into reliable systems. Still responsible for the trade-offs. Still accountable when the thing breaks. Still need people who understand architecture, testing, operations, failure modes, and human consequences.&lt;/p>
&lt;p>The teams that win won&amp;rsquo;t be the ones that generate the most code. They&amp;rsquo;ll be the ones that still know what good engineering looks like when the machine gets loud. The ones where discipline isn&amp;rsquo;t a career risk. The ones where slowing down to think is treated as engineering, not obstruction.&lt;/p>
&lt;p>The tool changed. The accountability didn&amp;rsquo;t.&lt;/p>
&lt;p>What&amp;rsquo;s the worst AI-caused quality problem you&amp;rsquo;ve seen? Not a hypothetical. A real one. I&amp;rsquo;d genuinely like to hear it. Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a> or &lt;a
href="https://t.me/by_pini"
target="_blank"
>Telegram&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Disclaimer:&lt;/strong> This article references specific companies, products, research studies, and industry analyses for illustrative and educational purposes. Information is based on publicly available sources including METR, Plandek, Anthropic, GitClear, GitGuardian, Stack Overflow, and Thoughtworks reporting, available at the time of writing. I have not independently verified all claims. The analysis and opinions expressed are my own. I have no financial interest, business relationship, or affiliation with any companies mentioned. This is commentary, not investment, legal, or business advice.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/ai-didnt-replace-software-engineering/feature.png"/></item><item><title>Google Stitch Just Made UI Design a Developer Skill</title><link>https://pinishv.com/articles/google-stitch-design-becomes-infrastructure/</link><pubDate>Fri, 20 Mar 2026 10:00:00 +0200</pubDate><guid>https://pinishv.com/articles/google-stitch-design-becomes-infrastructure/</guid><description>Figma&amp;rsquo;s stock dropped 8.8% when Google announced Stitch updates. But the people panicking are asking the wrong question. The question isn&amp;rsquo;t whether Stitch replaces designers. It&amp;rsquo;s what happens when a developer can go from idea to interactive prototype in 12 seconds.</description><content:encoded>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4plWSw1q7OM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;p>Here&amp;rsquo;s a number that should make every engineering leader pay attention: 12 seconds.&lt;/p>
&lt;p>That&amp;rsquo;s how long &lt;a
href="https://stitch.withgoogle.com/"
target="_blank"
>Google Stitch&lt;/a> takes to generate a settings page. Complete UI. Interactive prototype. Production-ready React and Tailwind code. Twelve seconds.&lt;/p>
&lt;p>The same page takes about 45 minutes in Figma if you know what you&amp;rsquo;re doing.&lt;/p>
&lt;p>When Google announced the March 2026 Stitch updates, Figma&amp;rsquo;s stock dropped 8.8%. The headlines said &amp;ldquo;Figma is dead.&amp;rdquo; Twitter was full of designers updating their LinkedIn profiles. The panic was loud and immediate.&lt;/p>
&lt;p>But the panicking people are asking the wrong question. Stitch doesn&amp;rsquo;t replace designers. It does something more interesting. It makes UI design a developer skill.&lt;/p>
&lt;h2 class="relative group">What Stitch actually is
&lt;div id="what-stitch-actually-is" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-stitch-actually-is" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Stitch is a free, browser-based tool from Google Labs that generates high-fidelity user interfaces from text prompts, voice descriptions, sketches, or uploaded images. It produces both visual designs and synced production code simultaneously. React with Tailwind CSS, HTML/CSS, or Flutter. It exports directly to Figma with proper Auto-Layout applied.&lt;/p>
&lt;p>It&amp;rsquo;s powered by Gemini under the hood. The March 2026 update brought an infinite canvas, voice interaction, a design agent that reasons across your entire project, and something called &amp;ldquo;Vibe Design&amp;rdquo; where you describe the feeling you want instead of specifying components.&lt;/p>
&lt;p>The &lt;a
href="https://github.com/google-labs-code/stitch-skills"
target="_blank"
>GitHub repo&lt;/a> has an open-source skills ecosystem for extending it. There&amp;rsquo;s MCP integration so your AI coding agents in Cursor, Claude Code, or Windsurf can call Stitch directly to generate UI without leaving the IDE.&lt;/p>
&lt;p>And it&amp;rsquo;s completely free. No credits, no subscription. Just a Google account.&lt;/p>
&lt;p>Here are some examples of what Stitch generates from simple text prompts. Dashboards, admin panels, e-commerce layouts, mobile feeds. All generated in seconds, all with production-ready React and Tailwind code behind them:&lt;/p>
&lt;div style="display:flex; gap:16px; overflow-x:auto; padding:20px 0; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;">
&lt;img src="stitch-fleet-admin.png" alt="Fleet admin dashboard" style="height:500px; width:auto; border-radius:10px; border:1px solid rgba(255,255,255,0.12); scroll-snap-align:start; flex-shrink:0;">
&lt;img src="stitch-vertical-feed.png" alt="Vertical feed" style="height:500px; width:auto; border-radius:10px; border:1px solid rgba(255,255,255,0.12); scroll-snap-align:start; flex-shrink:0;">
&lt;img src="stitch-main-dashboard.png" alt="Main dashboard" style="height:500px; width:auto; border-radius:10px; border:1px solid rgba(255,255,255,0.12); scroll-snap-align:start; flex-shrink:0;">
&lt;img src="stitch-dashboard.png" alt="Dashboard" style="height:500px; width:auto; border-radius:10px; border:1px solid rgba(255,255,255,0.12); scroll-snap-align:start; flex-shrink:0;">
&lt;img src="stitch-home-lookbook.png" alt="Home lookbook" style="height:500px; width:auto; border-radius:10px; border:1px solid rgba(255,255,255,0.12); scroll-snap-align:start; flex-shrink:0;">
&lt;/div>
&lt;p style="text-align:center; font-size:14px; color:#94a3b8; margin-top:8px;">Scroll to see more. Each screen generated by Stitch from a text description.&lt;/p>
&lt;p>These aren&amp;rsquo;t mockups I made in Figma. The code behind each screen is production-ready React with Tailwind CSS.&lt;/p>
&lt;h2 class="relative group">Why developers should care more than designers
&lt;div id="why-developers-should-care-more-than-designers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-developers-should-care-more-than-designers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The design community is having the wrong conversation. They&amp;rsquo;re debating whether Stitch replaces Figma. It doesn&amp;rsquo;t. Figma is where serious design collaboration, brand refinement, and complex design system work happens. That&amp;rsquo;s not going anywhere.&lt;/p>
&lt;p>The real shift is on the developer side.&lt;/p>
&lt;p>Think about the typical flow in most engineering orgs. A product manager writes requirements. A designer creates mockups in Figma. Those mockups go through review cycles. Eventually they land in front of a developer who translates them into code. That translation process is where things get lost. The spacing is wrong. The colors are close but not exact. The responsive behavior wasn&amp;rsquo;t specified. The developer interprets, the designer reviews, and the cycle repeats.&lt;/p>
&lt;p>Stitch compresses that entire pipeline into a conversation with an AI. A developer can describe what they need, get an interactive prototype in seconds, iterate by talking to the canvas, and export production-ready code. No design tool proficiency required. No translation layer. No interpretation gap.&lt;/p>
&lt;p>For engineering teams, this changes three things:&lt;/p>
&lt;p>&lt;strong>Prototyping becomes instant.&lt;/strong> When you&amp;rsquo;re evaluating an approach, testing a user flow, or building an internal tool, you don&amp;rsquo;t need a designer in the loop for the first draft. You describe what you want, get something real, and iterate from there. The feedback loop goes from days to minutes.&lt;/p>
&lt;p>&lt;strong>Internal tools stop looking terrible.&lt;/strong> Every engineering org has internal dashboards and admin panels that look like they were designed in 2008. Nobody allocates design resources to internal tools. With Stitch, a developer can generate a clean, professional UI for an internal tool in the time it used to take to write the boilerplate HTML.&lt;/p>
&lt;p>&lt;strong>The design-to-code gap shrinks.&lt;/strong> When the same tool produces both the visual design and the code, there&amp;rsquo;s no translation error. The code matches the design because they&amp;rsquo;re the same artifact. That alone saves hours of back-and-forth on every feature.&lt;/p>
&lt;h2 class="relative group">How it fits into the AI app builder landscape
&lt;div id="how-it-fits-into-the-ai-app-builder-landscape" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-it-fits-into-the-ai-app-builder-landscape" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Stitch is not the only tool in this space, and understanding where it sits matters.&lt;/p>
&lt;p>&lt;strong>Stitch is design-first.&lt;/strong> It generates polished UI and exports frontend code. It does not build backends, databases, authentication, or deploy anything. It&amp;rsquo;s the design and frontend layer only.&lt;/p>
&lt;p>&lt;strong>Lovable is app-first.&lt;/strong> It builds complete full-stack applications. Frontend, backend on Supabase, database, authentication, one-click deployment. If you want to go from idea to deployed MVP, Lovable does the whole thing. The UI won&amp;rsquo;t be as polished as Stitch, but you get a working app.&lt;/p>
&lt;p>&lt;strong>Bolt.new is code-first.&lt;/strong> A browser-based development environment from StackBlitz. It generates full projects with real-time preview and flexible framework choices. More control than Lovable, but you need developer skills for backend and deployment.&lt;/p>
&lt;p>&lt;strong>v0 (Vercel) is component-first.&lt;/strong> It generates clean React components that drop into existing codebases. Less about full-page design, more about generating specific UI components with good code quality.&lt;/p>
&lt;p>&lt;strong>Google AI Studio&lt;/strong> is prototype-first. It generates code and runs a preview you can share. More interactive than Stitch but less design-focused. It&amp;rsquo;s the middle ground between designing a UI and building a working app.&lt;/p>
&lt;p>&lt;strong>Firebase Studio&lt;/strong> is production-first. Full developer environment with terminal, dependencies, and deployment pipeline. The tool for when you&amp;rsquo;re past prototyping and building for real.&lt;/p>
&lt;p>The pattern: Stitch handles the &amp;ldquo;zero to design&amp;rdquo; phase better than anything else. But it hands off before the &amp;ldquo;design to production&amp;rdquo; phase. For teams that already have a development pipeline, that handoff is natural. For solo builders who want everything in one tool, Lovable or Bolt are better fits.&lt;/p>
&lt;h2 class="relative group">The MCP integration is the sleeper feature
&lt;div id="the-mcp-integration-is-the-sleeper-feature" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-mcp-integration-is-the-sleeper-feature" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Most coverage of Stitch focuses on the canvas, the voice interaction, and the Figma export. The feature that matters most for developers gets buried in the docs.&lt;/p>
&lt;p>Stitch has an &lt;a
href="https://github.com/google-labs-code/stitch-skills"
target="_blank"
>MCP server&lt;/a>. That means your AI coding agent in Cursor, Claude Code, Windsurf, or any MCP-compatible IDE can call Stitch directly to generate UI components as part of a coding workflow.&lt;/p>
&lt;p>Think about what that means. You&amp;rsquo;re building a feature in Cursor. Your agent needs a dashboard layout. Instead of switching to a browser, opening Stitch, generating the design, and copying the code back, the agent calls Stitch as a tool, gets the component, and drops it into your codebase. All without leaving the IDE.&lt;/p>
&lt;p>There&amp;rsquo;s also a &amp;ldquo;Design DNA&amp;rdquo; feature that extracts design context (colors, typography, structure) from generated screens and feeds it to the agent. So subsequent screens maintain visual consistency automatically. And DESIGN.md exports your design system as a portable file that can be imported into other projects.&lt;/p>
&lt;p>For anyone already running AI agents in their development workflow (and &lt;a
href="https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/">you know I am&lt;/a>), this is where Stitch stops being a design tool and starts being infrastructure.&lt;/p>
&lt;h2 class="relative group">Will it replace UI/UX designers?
&lt;div id="will-it-replace-uiux-designers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#will-it-replace-uiux-designers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>No. But it will change what they spend their time on.&lt;/p>
&lt;p>Stitch eliminates the blank canvas problem. The first draft, the initial layout, the &amp;ldquo;let me explore three different approaches&amp;rdquo; phase. That used to take hours or days. Now it takes seconds.&lt;/p>
&lt;p>What Stitch can&amp;rsquo;t do is brand identity. Design systems that feel cohesive across an entire product. The subtle decisions about hierarchy, rhythm, and emotional response that make the difference between a functional interface and one that people love using. The output quality is good, sometimes surprisingly good, but it lacks the refined aesthetic that an experienced designer brings to high-end work.&lt;/p>
&lt;p>The honest assessment: Stitch handles 0-to-1 better than any tool I&amp;rsquo;ve seen. But 1-to-100, the refinement that turns a prototype into a polished product, still needs a human designer. Probably in Figma.&lt;/p>
&lt;p>The real shift for design teams is that the bar for &amp;ldquo;good enough&amp;rdquo; just moved dramatically. Internal tools, admin panels, MVPs, quick prototypes, landing pages. All of these used to need designer time. Now they don&amp;rsquo;t. That frees designers to focus on the work that actually needs their taste and judgment.&lt;/p>
&lt;p>For managers, the question isn&amp;rsquo;t &amp;ldquo;should we fire our designers?&amp;rdquo; It&amp;rsquo;s &amp;ldquo;what should our designers stop doing so they can focus on what only they can do?&amp;rdquo;&lt;/p>
&lt;h2 class="relative group">The limitations nobody&amp;rsquo;s hyping
&lt;div id="the-limitations-nobodys-hyping" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-limitations-nobodys-hyping" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>85% accuracy in standard mode.&lt;/strong> That means roughly 1 in 6 components won&amp;rsquo;t be quite right. The experimental mode hits 95% but takes 45 seconds instead of 12. For prototyping that&amp;rsquo;s fine. For production you&amp;rsquo;re editing either way.&lt;/p>
&lt;p>&lt;strong>No backend.&lt;/strong> Stitch generates beautiful frontends that don&amp;rsquo;t do anything. No API calls, no state management beyond the UI, no data persistence. You need a developer to wire it up.&lt;/p>
&lt;p>&lt;strong>Free comes with a question mark.&lt;/strong> It&amp;rsquo;s a Google Labs product. Google has a history of killing Labs experiments. If you build workflows around Stitch, you&amp;rsquo;re betting Google keeps investing in it. The free pricing is great today, but there&amp;rsquo;s no guarantee about tomorrow.&lt;/p>
&lt;p>&lt;strong>The &amp;ldquo;vibe design&amp;rdquo; concept has limits.&lt;/strong> Describing a feeling works for simple pages. For complex enterprise UIs with dozens of states, error handling, and edge cases, you still need to be specific. The AI can&amp;rsquo;t infer your business logic from a vibe.&lt;/p>
&lt;h2 class="relative group">What this means for engineering orgs
&lt;div id="what-this-means-for-engineering-orgs" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-this-means-for-engineering-orgs" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Every few years, a tool shifts the boundary between what developers can do without specialist help and what requires a dedicated team.&lt;/p>
&lt;p>GitHub Copilot shifted the boundary on code generation. Terraform shifted it on infrastructure. CI/CD platforms shifted it on deployment. Each time, the specialists didn&amp;rsquo;t disappear. They moved up the stack to harder problems.&lt;/p>
&lt;p>Stitch is shifting the boundary on UI design. Developers can now produce professional-quality interfaces without design training. That doesn&amp;rsquo;t eliminate designers. It eliminates the bottleneck where developers wait for design input on work that didn&amp;rsquo;t need a designer&amp;rsquo;s taste in the first place.&lt;/p>
&lt;p>For engineering leaders, the practical implications are:&lt;/p>
&lt;p>&lt;strong>Evaluate Stitch for internal tooling.&lt;/strong> If your team builds admin panels, dashboards, or internal tools, Stitch can compress the UI phase from days to hours. The ROI is immediate.&lt;/p>
&lt;p>&lt;strong>Integrate through MCP.&lt;/strong> If you&amp;rsquo;re already running AI agents in your development workflow, add Stitch as a tool. Let your agents generate UI components as part of the coding flow. The context switching savings alone are worth it.&lt;/p>
&lt;p>&lt;strong>Rethink the designer-to-developer ratio.&lt;/strong> If developers can handle the first 80% of UI work, your designers can focus on the 20% that actually needs their expertise. That&amp;rsquo;s a better use of everyone&amp;rsquo;s time.&lt;/p>
&lt;p>&lt;strong>Don&amp;rsquo;t bet everything on it.&lt;/strong> It&amp;rsquo;s a Google Labs product. It&amp;rsquo;s free. It&amp;rsquo;s excellent. And it could get shut down, pivoted, or monetized at any point. Use it as a tool in your toolkit, not the foundation of your process.&lt;/p>
&lt;p>The wall between design and code has been getting thinner for years. Stitch didn&amp;rsquo;t remove it. But it put a very large door in it. And for engineering teams, that door is wide open.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Using Stitch in your development workflow? Integrating it with AI coding agents? I&amp;rsquo;d love to hear how you&amp;rsquo;re using it. Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a> or &lt;a
href="https://t.me/by_Pini"
target="_blank"
>Telegram&lt;/a>.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/google-stitch-design-becomes-infrastructure/feature.png"/></item><item><title>Your AI Agents Are Flying Blind. Here's How to Fix That.</title><link>https://pinishv.com/articles/developer-knowledge-hub-ai-agents-need-context/</link><pubDate>Sun, 15 Mar 2026 10:00:00 +0200</pubDate><guid>https://pinishv.com/articles/developer-knowledge-hub-ai-agents-need-context/</guid><description>Every AI agent in your org starts every session with zero context. No business rules. No architecture decisions. No conventions. The code they generate looks correct but violates assumptions that live in people&amp;rsquo;s heads. The solution isn&amp;rsquo;t better models. It&amp;rsquo;s a knowledge system.</description><content:encoded>&lt;p>Your AI agent just rewrote the authentication flow. The code is clean. Tests pass. The PR looks great.&lt;/p>
&lt;p>One problem: it broke the SSO integration with three enterprise customers because it didn&amp;rsquo;t know the auth service has a contract with the identity provider that requires a specific token format. That contract lives in a Slack thread from 2023 and one engineer&amp;rsquo;s head.&lt;/p>
&lt;p>The agent didn&amp;rsquo;t make a mistake. It made a perfectly reasonable decision with the information it had. &lt;strong>The information it had was almost nothing.&lt;/strong>&lt;/p>
&lt;p>This is happening across your codebase right now. Not just with authentication. With everything. Business rules, API contracts, deployment constraints, database conventions, service boundaries. Your agents write code that compiles, passes tests, and violates assumptions that live nowhere except in people&amp;rsquo;s heads and scattered documents nobody maintains.&lt;/p>
&lt;p>I&amp;rsquo;ve written about &lt;a
href="https://pinishv.com/articles/the-context-problem-why-switching-between-claude-chatgpt-and-grok-feels-like-groundhog-day/">why context is the fundamental problem in AI&lt;/a>. I&amp;rsquo;ve written about &lt;a
href="https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/">putting AI agents on the org chart&lt;/a> and managing them like team members. But none of that matters if the agents start every session blind.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re running agents in production, this is the problem you need to solve next.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">Two teams, same agents, wildly different results
&lt;div id="two-teams-same-agents-wildly-different-results" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#two-teams-same-agents-wildly-different-results" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Let me describe what I&amp;rsquo;m seeing.&lt;/p>
&lt;p>&lt;strong>Team A&lt;/strong> has agents embedded in their development workflow. An agent picks up a ticket to add a new validation rule to the user registration flow. Before writing a line of code, it queries a knowledge base and gets back: the existing validation rules, the reason the email format check is stricter than RFC 5322 (because of a legacy migration), the API contract with the notification service, and the team&amp;rsquo;s convention for error handling. The agent writes code that fits. The PR gets approved on the first review.&lt;/p>
&lt;p>&lt;strong>Team B&lt;/strong> has the exact same agents, same models, same IDE. Their agent picks up a similar ticket. It reads the code in the repo, sees patterns, generates a solution. The solution uses a different error handling pattern than the rest of the codebase. It changes the validation response format, which breaks the mobile client. It adds a database column without following the team&amp;rsquo;s migration conventions. The PR gets three rounds of review comments and a refactor.&lt;/p>
&lt;p>Same AI. Same capability. Completely different outcomes.&lt;/p>
&lt;p>The difference isn&amp;rsquo;t the model. It&amp;rsquo;s that Team A solved the knowledge problem and Team B didn&amp;rsquo;t.&lt;/p>
&lt;h2 class="relative group">Where knowledge actually lives (and why that&amp;rsquo;s broken)
&lt;div id="where-knowledge-actually-lives-and-why-thats-broken" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-knowledge-actually-lives-and-why-thats-broken" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>In most engineering organizations, critical knowledge is scattered across:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>People&amp;rsquo;s heads.&lt;/strong> The worst possible storage medium.&lt;/li>
&lt;li>&lt;strong>Slack threads.&lt;/strong> Searchable in theory, buried in practice.&lt;/li>
&lt;li>&lt;strong>Confluence pages.&lt;/strong> Written once, updated never.&lt;/li>
&lt;li>&lt;strong>Code comments.&lt;/strong> Spotty at best, misleading at worst.&lt;/li>
&lt;li>&lt;strong>Tribal knowledge.&lt;/strong> &amp;ldquo;Ask Daniel, he built that service.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>None of this is accessible to AI agents. None of it is structured for retrieval. None of it stays current.&lt;/p>
&lt;p>And here&amp;rsquo;s the compounding problem: as AI agents do more work, the knowledge gap matters more, not less. When humans wrote all the code, at least the person writing it carried the context. When agents write the code, the context has to come from somewhere else. Or it doesn&amp;rsquo;t come at all.&lt;/p>
&lt;p>&lt;strong>Think about it this way:&lt;/strong> a senior developer who&amp;rsquo;s been on your team for three years carries hundreds of micro-decisions in their head. Why the payment service retries exactly three times. Why the user permissions check happens at the API gateway, not the service layer. Why that database query uses a specific index hint. Now imagine replacing that developer with an agent that knows none of this. That&amp;rsquo;s what you&amp;rsquo;re doing every time an agent starts a session.&lt;/p>
&lt;h2 class="relative group">The wrong way to fix this
&lt;div id="the-wrong-way-to-fix-this" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-wrong-way-to-fix-this" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The instinct is to throw more code at the agent. Bigger context windows. More files in the prompt. RAG over the entire codebase.&lt;/p>
&lt;p>I&amp;rsquo;ve seen teams try this. Here&amp;rsquo;s what happens:&lt;/p>
&lt;p>They dump the entire repo into the context. The agent drowns in irrelevant code and can&amp;rsquo;t find the signal, and every token costs money, so you&amp;rsquo;re paying premium rates to confuse your own agents. They build RAG over Confluence. The retrieval returns pages from 2021 that contradict how things actually work. They write massive README files. Nobody maintains them. Within three months they&amp;rsquo;re more misleading than helpful.&lt;/p>
&lt;p>And the costs compound. More tokens in the context means higher API bills on every single request. Bad context leads to wrong code, which leads to longer review cycles, which leads to rework, which means more agent sessions with the same bad context. It&amp;rsquo;s compound interest working against you. Every layer of waste multiplies the next.&lt;/p>
&lt;p>&lt;strong>The problem isn&amp;rsquo;t volume of information. It&amp;rsquo;s the right information, maintained, structured, and delivered at the moment the agent needs it.&lt;/strong> Get this wrong and you&amp;rsquo;re not just getting bad code. You&amp;rsquo;re paying more for it with every iteration.&lt;/p>
&lt;h2 class="relative group">What actually works: a developer knowledge hub
&lt;div id="what-actually-works-a-developer-knowledge-hub" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-actually-works-a-developer-knowledge-hub" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>After months of thinking about this problem and looking at how every available solution falls short, I believe the answer is a system with three components that work together.&lt;/p>
&lt;div style="margin:28px 0; background:linear-gradient(135deg, #0f2440, #1e3a5f); border-radius:12px; padding:36px; color:#fff;">
&lt;div style="display:flex; align-items:stretch; gap:16px; margin-bottom:16px;">
&lt;div style="width:120px; flex-shrink:0; display:flex; flex-direction:column; justify-content:center; padding-right:16px; border-right:2px solid rgba(255,255,255,0.15); text-align:right;">
&lt;div style="font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:#22d3ee;">Layer 1&lt;/div>
&lt;div style="font-size:12px; color:#94a3b8; margin-top:2px;">Source of Truth&lt;/div>
&lt;/div>
&lt;div style="flex:1; background:rgba(34,211,238,0.1); border:1px solid rgba(34,211,238,0.3); border-radius:8px; padding:16px 20px; display:flex; align-items:center; gap:12px; font-size:14px; font-weight:500; color:#e2e8f0;">
&lt;span style="font-size:22px;">📁&lt;/span>
&lt;div>&lt;strong>Knowledge Repo&lt;/strong> (Git)&lt;br>&lt;span style="font-size:13px; color:#94a3b8;">Developers author markdown: product rules, system docs, architecture specs, skills&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex; justify-content:center; padding:4px 0 4px 136px; color:rgba(255,255,255,0.35); font-size:14px;">▼ &amp;nbsp; CI/CD syncs on every merge &amp;nbsp; ▼&lt;/div>
&lt;div style="display:flex; align-items:stretch; gap:16px; margin-bottom:16px;">
&lt;div style="width:120px; flex-shrink:0; display:flex; flex-direction:column; justify-content:center; padding-right:16px; border-right:2px solid rgba(255,255,255,0.15); text-align:right;">
&lt;div style="font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:#22d3ee;">Layer 2&lt;/div>
&lt;div style="font-size:12px; color:#94a3b8; margin-top:2px;">Index &amp; Push&lt;/div>
&lt;/div>
&lt;div style="flex:1; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12); border-radius:8px; padding:16px 20px; display:flex; align-items:center; gap:12px; font-size:14px; font-weight:500; color:#e2e8f0;">
&lt;span style="font-size:22px;">🔍&lt;/span>
&lt;div>&lt;strong>Vector Store + Embeddings&lt;/strong>&lt;br>&lt;span style="font-size:13px; color:#94a3b8;">Chunk, embed, index → semantic search&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="flex:1; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12); border-radius:8px; padding:16px 20px; display:flex; align-items:center; gap:12px; font-size:14px; font-weight:500; color:#e2e8f0;">
&lt;span style="font-size:22px;">📄&lt;/span>
&lt;div>&lt;strong>AGENTS.md + Skills per repo&lt;/strong>&lt;br>&lt;span style="font-size:13px; color:#94a3b8;">Generated context + reusable workflows&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex; justify-content:center; padding:4px 0 4px 136px; color:rgba(255,255,255,0.35); font-size:14px;">▼ &amp;nbsp; Serves queries at dev time &amp;nbsp; ▼&lt;/div>
&lt;div style="display:flex; align-items:stretch; gap:16px; margin-bottom:16px;">
&lt;div style="width:120px; flex-shrink:0; display:flex; flex-direction:column; justify-content:center; padding-right:16px; border-right:2px solid rgba(255,255,255,0.15); text-align:right;">
&lt;div style="font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:#22d3ee;">Layer 3&lt;/div>
&lt;div style="font-size:12px; color:#94a3b8; margin-top:2px;">Universal Bridge&lt;/div>
&lt;/div>
&lt;div style="flex:1; background:rgba(34,211,238,0.1); border:1px solid rgba(34,211,238,0.3); border-radius:8px; padding:16px 20px; display:flex; align-items:center; gap:12px; font-size:14px; font-weight:500; color:#e2e8f0;">
&lt;span style="font-size:22px;">🔌&lt;/span>
&lt;div>&lt;strong>MCP Server&lt;/strong>&lt;br>&lt;span style="font-size:13px; color:#94a3b8;">One server → every IDE &amp; agent can query knowledge&lt;/span>&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="display:flex; justify-content:center; padding:4px 0 4px 136px; color:rgba(255,255,255,0.35); font-size:14px;">▼&lt;/div>
&lt;div style="display:flex; align-items:stretch; gap:16px;">
&lt;div style="width:120px; flex-shrink:0; display:flex; flex-direction:column; justify-content:center; padding-right:16px; border-right:2px solid rgba(255,255,255,0.15); text-align:right;">
&lt;div style="font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:#94a3b8;">Consumers&lt;/div>
&lt;div style="font-size:12px; color:#94a3b8; margin-top:2px;">All tools&lt;/div>
&lt;/div>
&lt;div style="flex:1; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12); border-radius:8px; padding:16px 20px; display:flex; align-items:center; gap:12px; font-size:14px; font-weight:500; color:#e2e8f0;">
&lt;span style="font-size:22px;">💻&lt;/span>
&lt;div style="display:flex; gap:16px; flex-wrap:wrap; font-size:13px; color:#94a3b8;">
&lt;span>Cursor&lt;/span> &lt;span>Claude Code&lt;/span> &lt;span>Copilot&lt;/span> &lt;span>Codex&lt;/span> &lt;span>Kiro&lt;/span> &lt;span style="color:rgba(255,255,255,0.35);">+ any future MCP-compatible tool&lt;/span>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 class="relative group">Git for authoring
&lt;div id="git-for-authoring" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#git-for-authoring" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Not Confluence. Not Notion. Not some SaaS product with its own editing UI.&lt;/p>
&lt;p>A Git repository. Markdown files. Pull requests for review. CI/CD for automation. The same workflow developers already use for code.&lt;/p>
&lt;p>Why Git? Because the adoption problem kills every knowledge initiative that requires developers to learn a different tool. PRs already have review workflows. Blame shows who wrote what. History shows when things changed. CODEOWNERS controls who can approve what. Your developers already know all of this. Zero adoption friction.&lt;/p>
&lt;p>The repo holds four types of knowledge:&lt;/p>
&lt;p>&lt;strong>Product knowledge.&lt;/strong> Business rules, domain logic, edge cases, validation requirements. Why the user registration flow requires that specific email format. Why the discount calculation has a different rounding rule for enterprise customers. This changes every sprint.&lt;/p>
&lt;p>&lt;strong>System knowledge.&lt;/strong> Build commands, repo structure, coding conventions, database patterns, module boundaries. Why you always run migrations before the test suite. Why the cache invalidation uses event sourcing instead of TTL. This changes when code changes.&lt;/p>
&lt;p>&lt;strong>Architecture knowledge.&lt;/strong> API contracts, data flows, service boundaries, system invariants. Why the payment service is the only service allowed to write to the transactions table. Why the notification queue has exactly-once delivery semantics. This changes rarely but matters enormously.&lt;/p>
&lt;p>&lt;strong>Operational skills.&lt;/strong> Code review checklists, debugging guides, feature scaffolding patterns, cross-repo change workflows. How to add a new API endpoint. How to set up a feature flag. How to run a database migration across services. How the CI/CD pipeline works, which checks run on PR, which run on merge, what gates production. How linting and formatting are enforced and what to do when a check fails. How to roll back a deployment. How to triage a failing build. These are reusable agent workflows that encode how your team actually works. Not just the code, but the entire delivery process around it.&lt;/p>
&lt;p>One thing you&amp;rsquo;ll notice is missing from this list: the code itself. That&amp;rsquo;s intentional. AI IDEs and coding agents like Cursor, Copilot, and Claude Code already do a solid job indexing your codebase. They understand file structure, imports, function signatures. You don&amp;rsquo;t need to duplicate that work. What they can&amp;rsquo;t index is everything around the code. The why, the rules, the decisions. That&amp;rsquo;s what the knowledge hub is for. That said, the system is designed to be agile. If you want to add code indexing, documentation from other sources, or any other category of data, the architecture supports it. Same Git authoring, same search layer, same MCP delivery.&lt;/p>
&lt;h3 class="relative group">Semantic search for retrieval
&lt;div id="semantic-search-for-retrieval" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#semantic-search-for-retrieval" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Raw markdown is great for humans. Useless for agents that need to find the right three paragraphs out of thousands for a specific task.&lt;/p>
&lt;p>This layer chunks the markdown by section, embeds it into vectors, and indexes it for semantic retrieval. When an agent asks &amp;ldquo;what are the validation rules for the registration flow?&amp;rdquo; it gets the relevant sections, with citations back to the source documents.&lt;/p>
&lt;p>AWS Bedrock Knowledge Bases does this out of the box. So does Pinecone, Weaviate, or any vector store with a decent chunking strategy. The specific tool doesn&amp;rsquo;t matter. What matters is that knowledge becomes semantically searchable, not just keyword-matchable.&lt;/p>
&lt;p>CI/CD syncs markdown to the search index on every merge. Knowledge stays current automatically. No manual re-indexing. No stale embeddings.&lt;/p>
&lt;h3 class="relative group">MCP for delivery
&lt;div id="mcp-for-delivery" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#mcp-for-delivery" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Here&amp;rsquo;s where it comes together.&lt;/p>
&lt;p>Your developers use Cursor, Claude Code, Copilot, Codex, Kiro. Probably several of them. Each one is an island. Each one starts every session without context.&lt;/p>
&lt;p>&lt;a
href="https://pinishv.com/articles/model-context-protocol-connecting-ai-to-your-real-work/">Model Context Protocol (MCP)&lt;/a> is the open standard that connects all of them. I wrote a deep dive on MCP earlier. If you haven&amp;rsquo;t read it, start there.&lt;/p>
&lt;p>One MCP server wraps your knowledge base and exposes it to every IDE and agent through a standard interface. Build one server. Every tool connects natively. New tools that support MCP work automatically. Zero per-tool maintenance.&lt;/p>
&lt;p>The server exposes three tools: &lt;code>search_knowledge&lt;/code> for semantic search across all knowledge, &lt;code>get_document&lt;/code> to fetch a specific doc by path, and &lt;code>list_knowledge_bases&lt;/code> to discover available sources. Simple interface, massive impact.&lt;/p>
&lt;p>&lt;strong>Without MCP:&lt;/strong> You build a separate integration for each IDE. Maintain six connectors. Each tool gets knowledge differently. Every new tool means new work.&lt;/p>
&lt;p>&lt;strong>With MCP:&lt;/strong> You build one server. Everything connects. When the next AI coding tool launches next month, it just works.&lt;/p>
&lt;h2 class="relative group">The loop that makes it compound
&lt;div id="the-loop-that-makes-it-compound" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-loop-that-makes-it-compound" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s where this gets really powerful. The system doesn&amp;rsquo;t just serve knowledge. It grows.&lt;/p>
&lt;div style="margin:28px 0; background:linear-gradient(135deg, #0f2440, #1e3a5f); border-radius:12px; padding:32px 28px; color:#fff;">
&lt;div style="display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1fr auto 1fr; align-items:center; gap:0;">
&lt;div style="text-align:center; padding:10px 4px;">
&lt;div style="width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,0.12); display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:20px;">🔍&lt;/div>
&lt;div style="font-size:14px; font-weight:700;">Read&lt;/div>
&lt;div style="font-size:11px; color:#94a3b8; margin-top:3px;">Agent queries KB&lt;br>via MCP&lt;/div>
&lt;/div>
&lt;div style="font-size:20px; color:rgba(255,255,255,0.3); padding:0 2px;">→&lt;/div>
&lt;div style="text-align:center; padding:10px 4px;">
&lt;div style="width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,0.12); display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:20px;">💻&lt;/div>
&lt;div style="font-size:14px; font-weight:700;">Work&lt;/div>
&lt;div style="font-size:11px; color:#94a3b8; margin-top:3px;">Develops with&lt;br>full context&lt;/div>
&lt;/div>
&lt;div style="font-size:20px; color:rgba(255,255,255,0.3); padding:0 2px;">→&lt;/div>
&lt;div style="text-align:center; padding:10px 4px;">
&lt;div style="width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,0.12); display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:20px;">📝&lt;/div>
&lt;div style="font-size:14px; font-weight:700;">Write Back&lt;/div>
&lt;div style="font-size:11px; color:#94a3b8; margin-top:3px;">Opens PR to&lt;br>knowledge repo&lt;/div>
&lt;/div>
&lt;div style="font-size:20px; color:rgba(255,255,255,0.3); padding:0 2px;">→&lt;/div>
&lt;div style="text-align:center; padding:10px 4px;">
&lt;div style="width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,0.12); display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:20px;">✅&lt;/div>
&lt;div style="font-size:14px; font-weight:700;">Merge&lt;/div>
&lt;div style="font-size:11px; color:#94a3b8; margin-top:3px;">Dev reviews&lt;br>CI re-indexes&lt;/div>
&lt;/div>
&lt;div style="font-size:20px; color:rgba(255,255,255,0.3); padding:0 2px;">↩&lt;/div>
&lt;div style="text-align:center; padding:10px 4px;">
&lt;div style="width:44px; height:44px; border-radius:50%; background:rgba(34,211,238,0.2); border:2px solid #22d3ee; display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:20px;">🔄&lt;/div>
&lt;div style="font-size:14px; font-weight:700; color:#22d3ee;">Updated&lt;/div>
&lt;div style="font-size:11px; color:#94a3b8; margin-top:3px;">Next session&lt;br>starts smarter&lt;/div>
&lt;/div>
&lt;/div>
&lt;div style="margin-top:24px; border-top:1px solid rgba(255,255,255,0.12); padding-top:20px; text-align:center;">
&lt;div style="font-size:14px; color:#cbd5e1;">Fully automated. No manual curation. Knowledge grows as the team develops.&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>The workflow in detail:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Agent reads.&lt;/strong> Before starting work, queries the knowledge base via MCP. Gets business rules, conventions, architecture constraints relevant to the task.&lt;/li>
&lt;li>&lt;strong>Agent works.&lt;/strong> Develops with full context. The code actually follows the patterns and rules.&lt;/li>
&lt;li>&lt;strong>Agent writes back.&lt;/strong> A built-in skill instructs the agent to capture what it learned during development and open a PR to the knowledge repo.&lt;/li>
&lt;li>&lt;strong>Developer reviews.&lt;/strong> Standard PR review. Approves or refines the knowledge doc.&lt;/li>
&lt;li>&lt;strong>CI syncs.&lt;/strong> Merged knowledge is automatically indexed. Next agent session starts smarter.&lt;/li>
&lt;/ol>
&lt;p>Knowledge capture becomes part of development, not a separate chore. The developer just reviews. No separate authoring step.&lt;/p>
&lt;p>There&amp;rsquo;s a sixth step that takes this even further. When new knowledge merges, a CI step can run an LLM over the diff and ask: &amp;ldquo;What else in the entire knowledge base might be affected by this change?&amp;rdquo; Remember, this is a centralized system across all your repos. A change to how one service handles authentication could affect product knowledge for three other services, architecture docs for the API gateway, and operational skills for the deployment pipeline. The system uses embeddings to find related documents across every domain, checks for contradictions or staleness, and opens follow-up issues flagging what might need updating. Ripple effect detection across your entire engineering knowledge. You update the validation rules for user registration, and the system flags that the API contract doc, the mobile client integration guide, and the error handling conventions might all need a second look. It&amp;rsquo;s cheap to run and catches the kind of cross-cutting knowledge drift that humans miss because nobody has visibility into every document across every team.&lt;/p>
&lt;p>&lt;strong>Every feature built makes the next feature easier. Every agent session makes the next session smarter.&lt;/strong> The knowledge compounds.&lt;/p>
&lt;h2 class="relative group">The AGENTS.md safety net
&lt;div id="the-agentsmd-safety-net" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-agentsmd-safety-net" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Not every agent session has MCP access. Sometimes developers work offline. Sometimes a new tool doesn&amp;rsquo;t support MCP yet. Sometimes the knowledge server is down.&lt;/p>
&lt;p>For these cases, CI generates a lightweight &lt;code>AGENTS.md&lt;/code> in each repo. It&amp;rsquo;s a table of contents for the agent: what this repo does, how to build and test it, architecture boundaries, conventions and constraints, and where to find the full knowledge base.&lt;/p>
&lt;p>Think of it as the offline fallback. Agents get essential context even without network access. Push model (always in-repo) complementing the pull model (on-demand via MCP).&lt;/p>
&lt;h2 class="relative group">Why nothing on the market solves this
&lt;div id="why-nothing-on-the-market-solves-this" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-nothing-on-the-market-solves-this" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I looked at many solutions out there. Each solves a piece, and the approach I&amp;rsquo;m describing borrows the best parts from all of them.&lt;/p>
&lt;p>&lt;strong>Meta-repos&lt;/strong> (centralized Git docs). Git-native authoring, but no semantic search. Agents can&amp;rsquo;t find what they need.&lt;/p>
&lt;p>&lt;strong>Wiki + RAG&lt;/strong> (Confluence/Notion with retrieval). Searchable, but not Git-native. Developers won&amp;rsquo;t update it. Knowledge rots within months.&lt;/p>
&lt;p>&lt;strong>Code wikis&lt;/strong> (auto-generated from code). Clever, but usually tied to one AI tool. Not universal.&lt;/p>
&lt;p>&lt;strong>Cloud RAG services&lt;/strong> (Bedrock KB, Vertex). Managed search, but no authoring story. Where does the content come from?&lt;/p>
&lt;p>&lt;strong>Agent memory&lt;/strong> (Copilot memory, Letta). Per-tool, per-session. Not centralized. Not shared across the team.&lt;/p>
&lt;p>You need all five capabilities in one system. That&amp;rsquo;s what this approach delivers.&lt;/p>
&lt;h2 class="relative group">How to start (without boiling the ocean)
&lt;div id="how-to-start-without-boiling-the-ocean" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-to-start-without-boiling-the-ocean" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Day 1&lt;/strong>: Create the knowledge repo. Sit with your two or three most senior engineers, the ones who carry the most context in their heads. Ask them: &amp;ldquo;What do you find yourself explaining over and over?&amp;rdquo; That&amp;rsquo;s your first knowledge document.&lt;/p>
&lt;p>&lt;strong>Day 2-3&lt;/strong>: Set up semantic search. Connect your markdown to a vector store. Get retrieval working. This is not a multi-week project. The tooling exists. Use it.&lt;/p>
&lt;p>&lt;strong>Day 4-5&lt;/strong>: Deploy the MCP server. Configure it in your team&amp;rsquo;s primary IDE. Have a developer pair with an agent on a real task and compare the output to what they&amp;rsquo;d get without the knowledge base. That&amp;rsquo;s your first signal.&lt;/p>
&lt;p>&lt;strong>Week 2&lt;/strong>: Add the write-back loop. Build the skill that instructs agents to capture knowledge after completing work. Train your developers on how to review knowledge PRs, not just code PRs. This is where it starts compounding.&lt;/p>
&lt;p>The technology side of this is days of work. The harder part is getting your team to treat knowledge as a first-class deliverable, not an afterthought. That&amp;rsquo;s a leadership problem, not a tooling problem. But once developers see their agents producing better code because someone took 20 minutes to document business rules, the culture shift happens on its own.&lt;/p>
&lt;p>We&amp;rsquo;re in the AI era. If the infrastructure takes you months, you&amp;rsquo;re overengineering it. Get something working in days, iterate from there. The humans will make it great.&lt;/p>
&lt;p>&lt;strong>The key insight: start with the knowledge that hurts most when it&amp;rsquo;s missing.&lt;/strong> That&amp;rsquo;s usually the domain logic, the business rules that experienced developers carry in their heads and that agents get wrong in ways that look correct until they hit production.&lt;/p>
&lt;h2 class="relative group">The uncomfortable question
&lt;div id="the-uncomfortable-question" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-uncomfortable-question" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If your AI agents are generating code without context, how much of that code is actually correct?&lt;/p>
&lt;p>Not &amp;ldquo;does it compile&amp;rdquo; correct. Not &amp;ldquo;does it pass the tests you wrote&amp;rdquo; correct. Actually correct. Follows the business rules, respects the architecture, uses the conventions, handles the edge cases that burned you last quarter.&lt;/p>
&lt;p>If you can&amp;rsquo;t answer that confidently, your agents aren&amp;rsquo;t helping as much as you think. They&amp;rsquo;re generating plausible-looking code that somebody has to review against all the unwritten knowledge that exists only in people&amp;rsquo;s heads. And you&amp;rsquo;re paying for every token of that wrong output, then paying again for the review, again for the rework, and again when the agent generates the same mistake tomorrow because nothing changed.&lt;/p>
&lt;p>That&amp;rsquo;s not an AI problem. That&amp;rsquo;s a knowledge management problem. And it&amp;rsquo;s solvable.&lt;/p>
&lt;p>&lt;strong>The organizations that figure this out first will have AI agents that don&amp;rsquo;t just write code. They write the right code. Every time. From session one.&lt;/strong>&lt;/p>
&lt;p>That&amp;rsquo;s the difference between AI as a novelty and AI as a genuine multiplier. And it&amp;rsquo;s what separates teams that are actually shipping with agents from teams that are just generating code and hoping for the best.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Building knowledge systems for AI agents? Thinking about MCP? I&amp;rsquo;d love to hear how you&amp;rsquo;re approaching it. Find me on &lt;a
href="https://x.com/PiniShv"
target="_blank"
>X&lt;/a> or &lt;a
href="https://t.me/by_Pini"
target="_blank"
>Telegram&lt;/a>.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/developer-knowledge-hub-ai-agents-need-context/feature.png"/></item><item><title>Org Charts for AI Agents: Mapping Your Human and AI Workforce</title><link>https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/</link><pubDate>Sat, 13 Dec 2025 15:30:00 +0200</pubDate><guid>https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/</guid><description>AI agents aren&amp;rsquo;t coming. They&amp;rsquo;re already here, doing real work, while most organizations are still debating how to use ChatGPT. If you&amp;rsquo;re not thinking about where they fit in your team structure, you&amp;rsquo;re already behind.</description><content:encoded>&lt;p>I&amp;rsquo;m already doing this. My teams have AI agents doing real work, with defined roles, human owners, and performance metrics. We&amp;rsquo;ve moved past &amp;ldquo;should we use AI?&amp;rdquo; a long time ago. But when I talk to other engineering leaders, most are still running pilots on &amp;ldquo;how to use ChatGPT effectively.&amp;rdquo; They&amp;rsquo;re debating tools while we&amp;rsquo;re deploying workers. &lt;strong>If that&amp;rsquo;s you, wake up. AI agents are here. They&amp;rsquo;re not coming. They&amp;rsquo;re already doing work. And they need to be somewhere in your org chart.&lt;/strong>&lt;/p>
&lt;p>I&amp;rsquo;m not being metaphorical. These aren&amp;rsquo;t tools that sit on a shelf waiting to be invoked. They&amp;rsquo;re systems that do real work across the entire development lifecycle. They read Jira tickets and break them down into smaller, actionable tasks. They analyze the codebase to understand context before writing code. They write the code itself. They review pull requests from both humans and other agents, catching issues before merge. They run tests, interpret failures, and fix what broke. They deploy to staging and production. They update ticket status and add implementation notes. They generate documentation when features ship. They run 24/7. They have defined responsibilities. They produce output that affects your business.&lt;/p>
&lt;p>If that sounds like a job description, that&amp;rsquo;s because it is.&lt;/p>
&lt;p>The question isn&amp;rsquo;t whether AI agents belong on your org chart. The question is why you haven&amp;rsquo;t put them there yet.&lt;/p>
&lt;h2 class="relative group">The wake-up call most teams need
&lt;div id="the-wake-up-call-most-teams-need" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-wake-up-call-most-teams-need" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Let me describe what I&amp;rsquo;m seeing in organizations that are actually ahead on AI adoption.&lt;/p>
&lt;p>&lt;strong>Company A&lt;/strong> has agents embedded in their entire development workflow. One agent monitors the backlog, breaks down tickets, and prepares implementation plans before engineers even start their day. Another picks up tasks and writes the actual code, creating PRs ready for review. A third reviews every PR, checking for security issues, test coverage, and architectural consistency. A fourth handles deployments, monitors rollouts, and rolls back automatically if error rates spike. Their engineering lead treats these agents like team members because functionally, they are. They have owners, performance metrics, and defined responsibilities.&lt;/p>
&lt;p>&lt;strong>Company B&lt;/strong> still has their engineering team debating whether Copilot is worth the license cost. They&amp;rsquo;re running a three-month pilot with a committee to evaluate results. Their developers manually review every PR line by line, deploy through a manual checklist, and spend the first hour of every ticket just understanding what needs to be built.&lt;/p>
&lt;p>The gap between these two isn&amp;rsquo;t technology. It&amp;rsquo;s mindset.&lt;/p>
&lt;p>&lt;strong>Company A asked: &amp;ldquo;How do we integrate AI into how we work?&amp;rdquo; Company B asked: &amp;ldquo;Should we use AI?&amp;rdquo;&lt;/strong> By the time Company B finishes asking, Company A will have deployed their fourth agent.&lt;/p>
&lt;p>This is the wake-up call: AI agents are here. They&amp;rsquo;re working. They&amp;rsquo;re producing output. The adoption curve for agentic AI has been faster than anything we&amp;rsquo;ve seen before. Within two years, roughly a third of enterprises have deployed agents in production. And the organizations actually using them? Most already treat agents as coworkers, not tools. &lt;strong>If you&amp;rsquo;re still thinking about this as &amp;ldquo;adopting a new tool,&amp;rdquo; you&amp;rsquo;ve already fallen behind teams that are thinking about it as &amp;ldquo;building a hybrid workforce.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;h2 class="relative group">Why agents belong on the org chart
&lt;div id="why-agents-belong-on-the-org-chart" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-agents-belong-on-the-org-chart" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I know what you&amp;rsquo;re thinking. &amp;ldquo;Putting software on an org chart sounds ridiculous.&amp;rdquo; But hear me out.&lt;/p>
&lt;p>&lt;strong>Org charts exist for clarity.&lt;/strong> They answer: Who does what? Who&amp;rsquo;s responsible for what? Who reports to whom? If an AI agent is doing meaningful work, those questions apply to it too.&lt;/p>
&lt;p>When you don&amp;rsquo;t include AI agents in your organizational structure, you create invisible workers. Work gets done, but nobody knows exactly what&amp;rsquo;s doing it or who&amp;rsquo;s accountable when it goes wrong. That&amp;rsquo;s not a small problem. &lt;strong>That&amp;rsquo;s the recipe for incidents that nobody can trace, drift that nobody notices, and technical debt that compounds invisibly.&lt;/strong>&lt;/p>
&lt;p>Here&amp;rsquo;s what putting AI agents on the org chart actually solves:&lt;/p>
&lt;p>&lt;strong>Accountability.&lt;/strong> Every agent has a human owner. When the development agent writes code that breaks in production, someone is responsible for improving its guardrails. When the code review agent starts missing security issues, someone tunes its rules. When the deployment agent causes a failed release, someone owns the post-mortem. When the ticket analysis agent consistently overestimates complexity, someone adjusts its model. No more &amp;ldquo;the AI did it&amp;rdquo; as an excuse.&lt;/p>
&lt;p>&lt;strong>Visibility.&lt;/strong> Your team can see what&amp;rsquo;s actually doing the work. Everyone knows the ticket analysis agent breaks down and estimates new issues before sprint planning. The development agent picks up approved tasks and creates PRs. The code review agent checks every PR before the tech lead sees it. The deployment agent handles staging releases automatically but flags production deploys for human approval. No mystery workers.&lt;/p>
&lt;p>&lt;strong>Planning.&lt;/strong> When you understand your full workforce (human and AI), you can plan capacity properly. You know what you have, what it can do, and where the gaps are. You can make real decisions about when to hire humans versus when to deploy another agent.&lt;/p>
&lt;p>&lt;strong>Coordination.&lt;/strong> Workflows become explicit. &amp;ldquo;New tickets get analyzed by the ticket analysis agent, which breaks them into tasks and estimates complexity. The development agent picks up tasks and writes the code. The code review agent checks every PR. If it passes automated checks, the tech lead does final review. The deployment agent handles staging, runs integration tests, and notifies the team. Production deploy requires human approval.&amp;rdquo; Everyone knows the handoff points between humans and agents.&lt;/p>
&lt;h2 class="relative group">What this looks like in practice
&lt;div id="what-this-looks-like-in-practice" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-this-looks-like-in-practice" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Let me make this concrete.&lt;/p>
&lt;p>&lt;strong>The wrong way:&lt;/strong> You give developers access to Copilot and call it done. Some use it heavily, some ignore it. Nobody knows which code was AI-assisted. PRs get merged without anyone understanding if the AI suggestions were good or just fast. When bugs slip through, there&amp;rsquo;s no way to trace whether AI-generated code was the cause. The team has AI, but no structure around it.&lt;/p>
&lt;p>&lt;strong>The right way:&lt;/strong> You deploy agents with clear positions in your org structure. Your development agent reports to your Tech Lead. It picks up tasks from the backlog, analyzes the codebase for context, writes the code, adds tests, and creates PRs. The Tech Lead reviews its output, provides feedback when the approach is wrong, and approves when it&amp;rsquo;s right. Your code review agent also reports to the Tech Lead. It checks every PR for security vulnerabilities, test coverage gaps, and violations of your architectural patterns. It comments on PRs, requests changes, and approves when standards are met. Humans handle the judgment calls: is this the right approach? Does this solve the actual problem? Everyone knows the workflow. It&amp;rsquo;s documented. It&amp;rsquo;s managed.&lt;/p>
&lt;p>Same pattern applies across the development lifecycle. Your ticket analysis agent reports to whoever owns backlog grooming. Your development agent reports to whoever owns the codebase and architecture. Your deployment agent reports to whoever owns release management. Your documentation agent reports to whoever owns developer experience. Each has clear scope, clear ownership, and clear metrics.&lt;/p>
&lt;p>This isn&amp;rsquo;t theoretical. My teams work this way, and every high-performing team I know has already made this shift. They don&amp;rsquo;t think of AI as a tool they use. They think of it as a capability they manage.&lt;/p>
&lt;h2 class="relative group">Best practices from teams actually doing this
&lt;div id="best-practices-from-teams-actually-doing-this" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#best-practices-from-teams-actually-doing-this" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I lead teams that work this way, and I&amp;rsquo;m in contact with engineering leaders across the world doing the same. Some patterns work better than others.&lt;/p>
&lt;h3 class="relative group">Give every agent a human owner
&lt;div id="give-every-agent-a-human-owner" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#give-every-agent-a-human-owner" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This is non-negotiable. Every AI agent needs a human who is responsible for its output. Not &amp;ldquo;responsible if something goes wrong.&amp;rdquo; Responsible, period.&lt;/p>
&lt;p>That human should:&lt;/p>
&lt;ul>
&lt;li>Review the agent&amp;rsquo;s outputs regularly (not just when there&amp;rsquo;s a problem)&lt;/li>
&lt;li>Know what the agent is supposed to do and what it&amp;rsquo;s not supposed to do&lt;/li>
&lt;li>Have the authority to tune its behavior or shut it down&lt;/li>
&lt;li>Be the escalation path when the agent encounters something outside its scope&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Think of it like managing an extremely productive but occasionally confused team member.&lt;/strong> They need oversight. They need feedback. They need someone paying attention.&lt;/p>
&lt;h3 class="relative group">Define explicit boundaries
&lt;div id="define-explicit-boundaries" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#define-explicit-boundaries" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>AI agents should have clear job descriptions. What tasks they handle. What decisions they can make. When they must escalate to humans.&lt;/p>
&lt;p>This isn&amp;rsquo;t just about safety (though it is). It&amp;rsquo;s about reliability. An agent with clear boundaries is predictable. You know what to expect from it. Your team knows what to expect from it. Customers know what to expect from it.&lt;/p>
&lt;p>&lt;strong>Vague scope leads to vague results.&lt;/strong> If you can&amp;rsquo;t articulate exactly what your agent is supposed to do, you&amp;rsquo;re not ready to deploy it.&lt;/p>
&lt;h3 class="relative group">Onboard and train them like team members
&lt;div id="onboard-and-train-them-like-team-members" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#onboard-and-train-them-like-team-members" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>New AI agents should go through an onboarding process. Load them with your context: codebase architecture, coding standards, style guidelines, past decisions, and domain knowledge. A development agent needs to understand your patterns, your conventions, and why things are built the way they are. Configure access permissions carefully. Set up integration points with your ticketing system, code repository, CI/CD pipeline, and communication tools.&lt;/p>
&lt;p>Then train your human team to work with them. What can the agent do? What are its limitations? How do you interpret its outputs? How do you give it feedback?&lt;/p>
&lt;p>&lt;strong>The teams that skip this step wonder why their agents produce inconsistent results.&lt;/strong> The teams that invest in proper onboarding get agents that actually fit into their workflows.&lt;/p>
&lt;h3 class="relative group">Set goals and measure performance
&lt;div id="set-goals-and-measure-performance" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#set-goals-and-measure-performance" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>If your human team members have KPIs, your AI agents should too.&lt;/p>
&lt;p>For a development agent: Code quality of generated output. How often its PRs pass review on the first attempt. Test coverage of code it writes. Bugs introduced per feature. Time from ticket to working PR.&lt;/p>
&lt;p>For a code review agent: Accuracy of flagged issues. False positive rate. Time saved per review. Security vulnerabilities caught. Bugs that slipped through despite review.&lt;/p>
&lt;p>For a ticket analysis agent: Quality of task breakdowns. Accuracy of complexity estimates. Time saved in sprint planning. How often humans override its suggestions.&lt;/p>
&lt;p>For a deployment agent: Successful deployment rate. Mean time to rollback when issues occur. False positive rate on health checks. Incidents caused by deployment failures.&lt;/p>
&lt;p>&lt;strong>Track this data. Review it regularly.&lt;/strong> If an agent isn&amp;rsquo;t meeting its targets, tune it or remove it. Don&amp;rsquo;t let underperforming agents linger just because &amp;ldquo;AI is supposed to be good.&amp;rdquo;&lt;/p>
&lt;h3 class="relative group">Keep humans in the loop for consequential actions
&lt;div id="keep-humans-in-the-loop-for-consequential-actions" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#keep-humans-in-the-loop-for-consequential-actions" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Some actions are too important to delegate fully. Production deployments. Database migrations. Changes to authentication or payment systems. Anything that could take down the service or expose customer data.&lt;/p>
&lt;p>For these, the right pattern is: agent recommends, human approves, agent executes. The development agent writes the code and creates the PR, but a human reviews before merge. The deployment agent prepares the release and runs pre-flight checks, but a human approves production deploys. Then the agent handles the actual execution, monitoring, and rollback if needed.&lt;/p>
&lt;p>&lt;strong>This isn&amp;rsquo;t about not trusting AI. It&amp;rsquo;s about maintaining appropriate control over decisions that matter.&lt;/strong> Even great AI agents make mistakes. For high-stakes decisions, you want a human checkpoint.&lt;/p>
&lt;h2 class="relative group">The uncomfortable conversations this forces
&lt;div id="the-uncomfortable-conversations-this-forces" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-uncomfortable-conversations-this-forces" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Putting AI on your org chart forces conversations that many teams have been avoiding.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;What are we actually paying people to do?&amp;rdquo;&lt;/strong> When agents handle the routine work, human roles need to shift. Are your developers still manually checking PRs for test coverage and linting issues? Why? Are they still writing boilerplate code that an agent could generate? Are they still manually updating Jira tickets after every commit? The value of human work should be in architecture decisions, complex problem-solving, and handling the edge cases that AI can&amp;rsquo;t reason about.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;How do we grow junior talent?&amp;rdquo;&lt;/strong> If AI handles the entry-level tasks that used to train juniors, how do juniors learn? This is a real problem that requires intentional design. Junior developers need to understand what the AI is doing, not just accept its output. They need opportunities to work without AI assistance so they build foundational skills.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Who&amp;rsquo;s actually accountable when AI fails?&amp;rdquo;&lt;/strong> AI failures aren&amp;rsquo;t like software bugs. They&amp;rsquo;re often subtle, contextual, and hard to detect until damage is done. Someone needs to be watching. Someone needs to care. If nobody on your team owns the AI agent&amp;rsquo;s behavior, you have a governance gap.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;How much of our capability is human versus AI?&amp;rdquo;&lt;/strong> Some organizations are discovering that more of their output than expected is AI-generated. That&amp;rsquo;s not necessarily bad, but it requires honesty about what you&amp;rsquo;re building and who&amp;rsquo;s building it.&lt;/p>
&lt;h2 class="relative group">The risks nobody wants to talk about
&lt;div id="the-risks-nobody-wants-to-talk-about" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-risks-nobody-wants-to-talk-about" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I&amp;rsquo;d be doing you a disservice if I only talked about the upside. Deploying AI agents without proper structure creates real problems.&lt;/p>
&lt;p>&lt;strong>Most AI projects fail, and it&amp;rsquo;s rarely the technology.&lt;/strong> The pattern I see repeatedly: teams deploy agents, get excited about initial results, then watch things fall apart over months. The failure isn&amp;rsquo;t usually the AI itself. It&amp;rsquo;s organizational. Siloed decision-making. No clear ownership. Agents that automate broken processes instead of reimagining them. If your current workflow is a mess, an AI agent will just create mess faster.&lt;/p>
&lt;p>&lt;strong>Agents can drift without anyone noticing.&lt;/strong> Unlike human employees who complain when things aren&amp;rsquo;t working, agents just keep running. They&amp;rsquo;ll quietly degrade, produce increasingly irrelevant outputs, or develop blind spots as your business changes around them. Without active monitoring and regular review, you end up with agents that technically work but practically don&amp;rsquo;t help.&lt;/p>
&lt;p>&lt;strong>Shadow agents are already in your organization.&lt;/strong> Teams are deploying AI assistants, connecting them to systems, and using them for work without telling IT, security, or leadership. This isn&amp;rsquo;t malicious. It&amp;rsquo;s people trying to be more productive. But it means you have invisible workers making decisions, accessing data, and producing outputs with zero oversight. The solution isn&amp;rsquo;t to ban experimentation. It&amp;rsquo;s to channel it into structured pilots with proper governance.&lt;/p>
&lt;p>&lt;strong>Integration with legacy systems is harder than it looks.&lt;/strong> That shiny new agent needs to talk to your five-year-old ticketing system, your decade-old ERP, and your custom-built internal tools. Every integration point is a failure point. Every data handoff is an opportunity for things to go wrong. Plan for this. Budget for this. Don&amp;rsquo;t assume the agent will &amp;ldquo;just work.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Costs compound in ways you don&amp;rsquo;t expect.&lt;/strong> The API calls, the compute, the storage, the maintenance, the tuning, the monitoring. Running agents at scale isn&amp;rsquo;t free. Some organizations have been surprised to find their AI &amp;ldquo;cost savings&amp;rdquo; evaporating into operational expenses they hadn&amp;rsquo;t budgeted for. Track the total cost of ownership, not just the initial deployment.&lt;/p>
&lt;p>&lt;strong>The governance question isn&amp;rsquo;t optional.&lt;/strong> Who audits the agent&amp;rsquo;s decisions? Who checks for bias in its outputs? Who ensures it&amp;rsquo;s not leaking sensitive data in its prompts? Who handles it when a customer complains about an agent interaction? If you don&amp;rsquo;t have answers to these questions before deployment, you&amp;rsquo;re building on sand.&lt;/p>
&lt;p>None of this means you shouldn&amp;rsquo;t deploy agents. It means you should deploy them with eyes open, with proper structure, and with humans who are actually paying attention.&lt;/p>
&lt;h2 class="relative group">What changes, what doesn&amp;rsquo;t
&lt;div id="what-changes-what-doesnt" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-changes-what-doesnt" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>What changes:&lt;/strong>&lt;/p>
&lt;p>Your org chart now includes non-human workers with defined roles. Planning and capacity discussions include AI capabilities. Job descriptions evolve to focus on judgment, oversight, and collaboration with AI.&lt;/p>
&lt;p>New roles are already emerging. Some teams have &amp;ldquo;agent supervisors&amp;rdquo; who manage portfolios of AI workers the way a manager oversees human teams. Others have &amp;ldquo;orchestrators&amp;rdquo; who design how humans and agents hand off work to each other. The most effective people in these roles aren&amp;rsquo;t necessarily the deepest technical experts. They&amp;rsquo;re generalists who understand the business, can spot when an agent is drifting off-course, and know when to override automation with human judgment. The specialists become the exception handlers, the ones who step in when agents encounter situations outside their training.&lt;/p>
&lt;p>Hierarchies flatten. When one person can effectively oversee dozens of agents doing work that used to require a large team, you need fewer layers of management. But you need those remaining humans to be much better at systems thinking, quality judgment, and strategic direction.&lt;/p>
&lt;p>&lt;strong>What doesn&amp;rsquo;t change:&lt;/strong>&lt;/p>
&lt;p>Humans are still responsible. Every AI action ultimately traces back to a human decision to deploy that AI, configure it a certain way, and keep it running. Quality still matters. AI-generated output isn&amp;rsquo;t automatically good. It needs review, validation, and continuous improvement. Culture still drives outcomes. An organization that treats AI as a magic fix will get poor results. An organization that thoughtfully integrates AI into its culture will thrive.&lt;/p>
&lt;h2 class="relative group">Start small, but start now
&lt;div id="start-small-but-start-now" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#start-small-but-start-now" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you haven&amp;rsquo;t thought about where AI fits in your organization, start.&lt;/p>
&lt;p>Pick one agent. Maybe it&amp;rsquo;s a ticket analysis agent that breaks down new issues and estimates complexity. Maybe it&amp;rsquo;s a development agent that picks up well-defined tasks and creates working PRs. Maybe it&amp;rsquo;s a code review agent that checks every PR for security issues and test coverage. Maybe it&amp;rsquo;s a deployment agent that handles staging releases and runs smoke tests automatically.&lt;/p>
&lt;p>Give it a clear scope. Assign a human owner. Define its success metrics. Put it somewhere in your team structure where its role makes sense.&lt;/p>
&lt;p>Then watch how it performs. Tune it. Improve it. Learn how to manage it.&lt;/p>
&lt;p>&lt;strong>The goal isn&amp;rsquo;t to have AI everywhere immediately.&lt;/strong> The goal is to develop the organizational muscle for working with AI as part of your team, not just as a tool you occasionally use. The first agent teaches you more about your organization than any planning document could. You&amp;rsquo;ll discover where your processes are actually unclear, where your data is messier than you thought, and where your team&amp;rsquo;s comfort with AI-assisted work really stands.&lt;/p>
&lt;p>Once the first agent is working well, expand thoughtfully. Not by deploying agents everywhere at once, but by picking the next highest-value, lowest-risk opportunity and applying what you learned. The teams that succeed treat this as continuous capability building, not a one-time transformation project.&lt;/p>
&lt;p>The teams that figure this out now will be running hybrid workforces of humans and AI agents, coordinating seamlessly, shipping faster than competitors who are still debating whether to adopt AI at all.&lt;/p>
&lt;p>The teams that don&amp;rsquo;t? They&amp;rsquo;ll still be running three-month pilots while their competitors deploy their tenth agent.&lt;/p>
&lt;h2 class="relative group">The bottom line
&lt;div id="the-bottom-line" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottom-line" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>AI agents aren&amp;rsquo;t tools you use. They&amp;rsquo;re workers you manage. The sooner you internalize that shift, the sooner you can start building the organizational capabilities to leverage them effectively.&lt;/p>
&lt;p>Your org chart is a representation of how you get work done. If AI agents are doing work (and they are, whether you acknowledge it or not), they belong there. Not because they&amp;rsquo;re human. Because they&amp;rsquo;re doing jobs that matter, and those jobs need accountability, oversight, and coordination just like any other.&lt;/p>
&lt;p>The debate about whether to use AI is over. The teams that recognized this are already operating differently. They&amp;rsquo;re building hybrid workforces. They&amp;rsquo;re thinking about agents as team members. They&amp;rsquo;re developing new management practices for this new reality.&lt;/p>
&lt;p>&lt;strong>The question isn&amp;rsquo;t whether this shift is coming. It&amp;rsquo;s whether you&amp;rsquo;ll be ready when it arrives at your door, or still debating whether to open it.&lt;/strong>&lt;/p>
&lt;hr>
&lt;p>&lt;em>Building hybrid teams of humans and AI agents requires intentional organizational design. If you&amp;rsquo;re wrestling with how to structure this transition for your team, I&amp;rsquo;m always interested in these conversations.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/org-charts-for-ai-agents-mapping-your-human-and-ai-workforce/feature.png"/></item><item><title>When AI Writes 90% of Your Code, What Are You Actually Doing?</title><link>https://pinishv.com/articles/when-ai-writes-90-percent-of-code/</link><pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/when-ai-writes-90-percent-of-code/</guid><description>Anthropic&amp;rsquo;s CEO says Claude writes 90% of code for most teams. If you think that means developers are obsolete, you&amp;rsquo;ve missed the point entirely.</description><content:encoded>&lt;p>At the Salesforce Dreamforce conference last week, Anthropic CEO Dario Amodei dropped a number that&amp;rsquo;s been making waves: &amp;ldquo;I made this prediction that, you know, in six months, 90% of code would be written by AI models. Some people think that prediction is wrong, but within Anthropic and within a number of companies that we work with, that is absolutely true now.&amp;rdquo;&lt;/p>
&lt;p>Ninety percent. That&amp;rsquo;s not a demo. That&amp;rsquo;s how one of the world&amp;rsquo;s leading AI companies actually builds software today.&lt;/p>
&lt;p>The immediate reaction: developers are done, engineering teams will shrink, why hire software engineers when AI can write the code?&lt;/p>
&lt;p>But when Salesforce CEO Marc Benioff asked if that means Anthropic needs fewer engineers now, Amodei&amp;rsquo;s answer was the opposite of what people expect.&lt;/p>
&lt;h2 class="relative group">The 10% That Actually Matters
&lt;div id="the-10-that-actually-matters" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-10-that-actually-matters" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Amodei was clear: &amp;ldquo;If Claude is writing 90% of the code, what that means, usually, is, you need just as many software engineers. You might need more, because they can then be more leverage. They can focus on the 10% that&amp;rsquo;s editing the code or writing the 10% that&amp;rsquo;s the hardest, or supervising a group of AI models. And so what happens is, you know, you just end up being 10 times more productive.&amp;rdquo;&lt;/p>
&lt;p>Ninety percent AI-written code doesn&amp;rsquo;t mean fewer developers. It means developers doing fundamentally different work.&lt;/p>
&lt;p>This isn&amp;rsquo;t about replacement. It&amp;rsquo;s about &amp;ldquo;rebalancing,&amp;rdquo; as Amodei put it. The job is changing to focus on what actually requires human judgment.&lt;/p>
&lt;p>I&amp;rsquo;ve been saying this for months, and this statement from someone at the bleeding edge confirms what I&amp;rsquo;ve been seeing: &lt;strong>writing code was never the bottleneck. Understanding what to build, how to architect it, and how to guide AI safely were always the hard parts.&lt;/strong> AI just made that reality impossible to ignore.&lt;/p>
&lt;h2 class="relative group">What Does That 10% Actually Include?
&lt;div id="what-does-that-10-actually-include" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-does-that-10-actually-include" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>When AI writes 90% of your code, what are you doing with your time?&lt;/p>
&lt;p>You&amp;rsquo;re making architectural decisions that ripple across the entire system. You&amp;rsquo;re catching edge cases that AI misses. You&amp;rsquo;re supervising the AI&amp;rsquo;s output architecturally. Does this approach scale? Is this secure? Does this follow our patterns? You&amp;rsquo;re debugging the weird stuff when production behavior doesn&amp;rsquo;t make sense. You&amp;rsquo;re making trade-off decisions based on business context, team capabilities, and long-term strategy.&lt;/p>
&lt;p>This is what I wrote about in &lt;a
href="../hiring-developers-in-the-age-of-ai-what-actually-matters-now">hiring developers in the age of AI&lt;/a>: the developers who thrive aren&amp;rsquo;t the ones who can write code fastest. They&amp;rsquo;re the ones with systems thinking, architectural reasoning, and problem decomposition skills.&lt;/p>
&lt;h2 class="relative group">The Productivity Multiplier Nobody Talks About
&lt;div id="the-productivity-multiplier-nobody-talks-about" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-productivity-multiplier-nobody-talks-about" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what gets lost in the &amp;ldquo;AI will replace developers&amp;rdquo; narrative: if your developers can be 10 times more productive, you don&amp;rsquo;t need one-tenth the headcount. You build 10 times as much with the same team.&lt;/p>
&lt;p>The companies winning aren&amp;rsquo;t firing developers. They&amp;rsquo;re building faster than competitors while others argue about whether AI is good enough. But this only works if your developers can actually operate at that level, with deep systems understanding and architectural thinking.&lt;/p>
&lt;p>I wrote about this pattern in &lt;a
href="../whats-holding-you-back-from-succeeding-in-the-ai-era">what&amp;rsquo;s holding you back from succeeding in the AI era&lt;/a>. The developer I called Marcus shipped 247 commits in a month using AI. Impressive numbers. But when I asked him to explain the architecture of a feature he&amp;rsquo;d shipped, he couldn&amp;rsquo;t. Three days later, production incident. He&amp;rsquo;d implemented decisions he didn&amp;rsquo;t understand.&lt;/p>
&lt;p>&lt;strong>Marcus isn&amp;rsquo;t alone. This is the risk nobody&amp;rsquo;s talking about when they celebrate AI writing 90% of code.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">The Divide Between AI Operators and AI-Augmented Engineers
&lt;div id="the-divide-between-ai-operators-and-ai-augmented-engineers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-divide-between-ai-operators-and-ai-augmented-engineers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Not all developers are getting 10x more productive with AI. Some are getting 10x faster at shipping code they don&amp;rsquo;t understand.&lt;/p>
&lt;p>The ones succeeding use AI to accelerate work they already know how to do. They recognize when AI suggestions are headed down the wrong path and can evaluate trade-offs without running the code. They&amp;rsquo;re using AI as a thinking partner for implementation while they focus on design and edge cases.&lt;/p>
&lt;p>The ones struggling use AI as a crutch for things they never learned properly. They can ship fast but can&amp;rsquo;t debug what they shipped because they never built the mental models.&lt;/p>
&lt;p>This is what I meant when I wrote about being &lt;a
href="../im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers">pro-AI while worried about our next senior engineers&lt;/a>. The gap between these two types of developers is widening fast. The scary part? They can have nearly identical output metrics for six months. The difference only becomes obvious when things break.&lt;/p>
&lt;h2 class="relative group">What This Means for Engineering Teams
&lt;div id="what-this-means-for-engineering-teams" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-this-means-for-engineering-teams" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If Anthropic needs the same number of engineers (or more) even with 90% AI-generated code, what should engineering leaders be doing differently?&lt;/p>
&lt;p>Stop optimizing for typing speed. Invest in architectural skills and systems thinking. Create oversight mechanisms that review architectural decisions, not individual lines. Measure production incidents per feature, not commit counts. Develop deep expertise in distributed systems, security, and architecture.&lt;/p>
&lt;p>This aligns with what I wrote about &lt;a
href="../ai-security-culture-problem">AI security being a culture problem&lt;/a>. You can have the best AI tools, but if your culture treats &amp;ldquo;works on my machine&amp;rdquo; as good enough, you&amp;rsquo;ll have problems.&lt;/p>
&lt;h2 class="relative group">The Junior Developer Problem
&lt;div id="the-junior-developer-problem" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-junior-developer-problem" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If AI writes 90% of code today, how do junior developers build the expertise to be valuable tomorrow?&lt;/p>
&lt;p>The teams doing it right are being extremely intentional. Junior developers don&amp;rsquo;t just accept AI output. They&amp;rsquo;re required to explain architectural decisions, walk through how features handle edge cases, and defend trade-offs. They use AI to move faster, but must understand everything they ship.&lt;/p>
&lt;p>The teams doing it wrong measure productivity by output volume. Junior developers prompt AI, ship code, move to the next ticket. Fast velocity, zero learning.&lt;/p>
&lt;p>Six months from now, the first group will have developers who can architect features independently. The second group will have &amp;ldquo;AI operators&amp;rdquo; who panic when AI fails.&lt;/p>
&lt;h2 class="relative group">What About The Other 10%?
&lt;div id="what-about-the-other-10" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-about-the-other-10" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Amodei said 90% of code is AI-written &amp;ldquo;for most teams at Anthropic.&amp;rdquo; Not all teams. That 10% human-written code isn&amp;rsquo;t random. It&amp;rsquo;s the hardest stuff: novel algorithms, performance-critical paths, security-sensitive logic, the architectural foundation everything else builds on.&lt;/p>
&lt;p>&lt;strong>That 10% is where all the leverage comes from.&lt;/strong> Get that 10% right, and AI can generate the other 90% reliably. Get it wrong, and you&amp;rsquo;re building on a broken foundation.&lt;/p>
&lt;p>This matches what I&amp;rsquo;ve seen with &lt;a
href="../developer-work-did-not-change-the-sequence-did">developer work not changing, just the sequence&lt;/a>. The actual job didn&amp;rsquo;t disappear. What changed is when those activities happen and how much implementation detail developers handle personally.&lt;/p>
&lt;h2 class="relative group">The Uncomfortable Truth for Developers
&lt;div id="the-uncomfortable-truth-for-developers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-uncomfortable-truth-for-developers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;re a developer whose primary value was writing clean, working code quickly, you&amp;rsquo;re in trouble. That skill is being commoditized right now.&lt;/p>
&lt;p>If your value is understanding complex systems, architecting for scale, catching subtle bugs, making informed trade-offs, and guiding AI to produce maintainable solutions, you&amp;rsquo;re more valuable than ever.&lt;/p>
&lt;p>The uncomfortable part: many developers thought they were the second type, but were actually the first. AI is exposing that gap brutally.&lt;/p>
&lt;p>The good news: these skills can be learned. But you have to be intentional. You won&amp;rsquo;t build them by accident while prompting AI to generate features.&lt;/p>
&lt;h2 class="relative group">Rebalancing, Not Replacing
&lt;div id="rebalancing-not-replacing" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#rebalancing-not-replacing" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Amodei&amp;rsquo;s point about &amp;ldquo;rebalancing&amp;rdquo; is the right frame. The work didn&amp;rsquo;t disappear. It shifted.&lt;/p>
&lt;p>Less time writing boilerplate, more time on architecture. Less time debugging syntax errors, more time designing systems that are debuggable. Less time on mechanical tasks, more time on judgment calls.&lt;/p>
&lt;p>&lt;strong>This is a better job.&lt;/strong> More interesting, more impactful, more creative. But only if you have the skills to operate at that level.&lt;/p>
&lt;h2 class="relative group">What Comes Next
&lt;div id="what-comes-next" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-comes-next" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I keep coming back to something I wrote in &lt;a
href="../from-toys-to-tools-the-missing-layer-developers-actually-need">from toys to tools&lt;/a>: most developer time isn&amp;rsquo;t typing, it&amp;rsquo;s understanding. AI writing 90% of code doesn&amp;rsquo;t eliminate that understanding requirement. If anything, it makes it more critical.&lt;/p>
&lt;p>The winning developers aren&amp;rsquo;t the ones who resist AI or blindly trust it. They&amp;rsquo;re the ones who use AI to handle implementation details while they focus on the parts that actually require human judgment.&lt;/p>
&lt;p>That&amp;rsquo;s what Amodei is describing. That&amp;rsquo;s what I&amp;rsquo;m seeing in successful teams. And that&amp;rsquo;s where software development is headed.&lt;/p>
&lt;p>The question isn&amp;rsquo;t whether AI will write most of your code. It already does at leading companies, and the rest will follow within months.&lt;/p>
&lt;p>The question is whether you&amp;rsquo;re building the skills to be valuable in that world. To operate at the architectural level. To guide AI effectively. To catch the edge cases. To make the trade-offs. To be the 10% that makes the 90% possible.&lt;/p>
&lt;p>Because that&amp;rsquo;s the job now.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/when-ai-writes-90-percent-of-code/feature.png"/></item><item><title>Ship Faster Without Breaking Things: DORA 2025 in Real Life</title><link>https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/</link><pubDate>Sat, 04 Oct 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/</guid><description>AI is making teams faster, but instability persists. The 2025 DORA report reveals which organizational capabilities turn AI into a force multiplier—and which ones let it amplify the mess.</description><content:encoded>&lt;p>Last year, teams using AI shipped slower and broke more things. This year, they&amp;rsquo;re shipping faster, but they&amp;rsquo;re still breaking things. The difference between those outcomes isn&amp;rsquo;t the AI tool you picked—it&amp;rsquo;s what you built around it.&lt;/p>
&lt;p>The &lt;a
href="https://cloud.google.com/resources/content/2025-dora-ai-assisted-software-development-report"
target="_blank"
>2025 DORA State of AI-assisted Software Development Report&lt;/a> introduces an AI Capabilities Model based on interviews, expert input, and survey data from thousands of teams. Seven organizational capabilities consistently determine whether AI amplifies your effectiveness or just amplifies your problems.&lt;/p>
&lt;p>This isn&amp;rsquo;t about whether to use AI. It&amp;rsquo;s about how to use it without making everything worse.&lt;/p>
&lt;h2 class="relative group">First, what DORA actually measures
&lt;div id="first-what-dora-actually-measures" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#first-what-dora-actually-measures" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>DORA is a long-running research program studying how software teams ship and run software. It measures outcomes across multiple dimensions:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Organizational performance&lt;/strong> – business-level impact&lt;/li>
&lt;li>&lt;strong>Delivery throughput&lt;/strong> – how fast features ship&lt;/li>
&lt;li>&lt;strong>Delivery instability&lt;/strong> – how often things break&lt;/li>
&lt;li>&lt;strong>Team performance&lt;/strong> – collaboration and effectiveness&lt;/li>
&lt;li>&lt;strong>Product performance&lt;/strong> – user-facing quality&lt;/li>
&lt;li>&lt;strong>Code quality&lt;/strong> – maintainability and technical debt&lt;/li>
&lt;li>&lt;strong>Friction&lt;/strong> – blockers and waste in the development process&lt;/li>
&lt;li>&lt;strong>Burnout&lt;/strong> – team health and sustainability&lt;/li>
&lt;li>&lt;strong>Valuable work&lt;/strong> – time spent on meaningful tasks&lt;/li>
&lt;li>&lt;strong>Individual effectiveness&lt;/strong> – personal productivity&lt;/li>
&lt;/ul>
&lt;p>These aren&amp;rsquo;t vanity metrics. They&amp;rsquo;re the lenses DORA uses to determine whether practices help or hurt.&lt;/p>
&lt;h2 class="relative group">What changed in 2025
&lt;div id="what-changed-in-2025" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-changed-in-2025" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Last year:&lt;/strong> AI use correlated with slower delivery and more instability.&lt;/p>
&lt;p>&lt;strong>This year:&lt;/strong> Throughput ticks up while instability still hangs around.&lt;/p>
&lt;p>In short, teams are getting faster. The bumps haven&amp;rsquo;t disappeared. Environment and habits matter a lot.&lt;/p>
&lt;p>
&lt;figure>
&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="AI Adoption Statistics"
srcset="
/articles/ship-faster-without-breaking-things-dora-2025/1_hu_b3937e9a04d27747.png 330w,
/articles/ship-faster-without-breaking-things-dora-2025/1_hu_a3ebc035e68af389.png 660w,
/articles/ship-faster-without-breaking-things-dora-2025/1_hu_1cbc21847a0b64.png 1280w
"
data-zoom-src="https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/1.png"
src="https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/1.png">
&lt;/figure>
&lt;/p>
&lt;h2 class="relative group">The big idea: capabilities beat tools
&lt;div id="the-big-idea-capabilities-beat-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-big-idea-capabilities-beat-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>DORA&amp;rsquo;s 2025 research introduces an &lt;strong>AI Capabilities Model&lt;/strong>. Seven organizational capabilities consistently amplify the upside from AI while mitigating the risks:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Clear and communicated AI stance&lt;/strong> – everyone knows the policy&lt;/li>
&lt;li>&lt;strong>Healthy data ecosystems&lt;/strong> – clean, accessible, well-managed data&lt;/li>
&lt;li>&lt;strong>AI-accessible internal data&lt;/strong> – tools can see your context safely&lt;/li>
&lt;li>&lt;strong>Strong version control practices&lt;/strong> – commit often, rollback fluently&lt;/li>
&lt;li>&lt;strong>Working in small batches&lt;/strong> – fewer lines, fewer changes, shorter tasks&lt;/li>
&lt;li>&lt;strong>User-centric focus&lt;/strong> – outcomes trump output&lt;/li>
&lt;li>&lt;strong>Quality internal platforms&lt;/strong> – golden paths and secure defaults&lt;/li>
&lt;/ol>
&lt;p>These aren&amp;rsquo;t theoretical. They&amp;rsquo;re patterns that emerged from real teams shipping real software with AI in the loop.&lt;/p>
&lt;p>Below are the parts you can apply on Monday morning.&lt;/p>
&lt;h2 class="relative group">1. Write down your AI stance
&lt;div id="1-write-down-your-ai-stance" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#1-write-down-your-ai-stance" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Teams perform better when the policy is clear, visible, and encourages thoughtful experimentation. A clear stance improves individual effectiveness, reduces friction, and even lifts organizational performance.&lt;/p>
&lt;p>Many developers still report policy confusion, which leads to underuse or risky workarounds. Fixing clarity pays back quickly.&lt;/p>
&lt;h3 class="relative group">Leader move
&lt;div id="leader-move" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#leader-move" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Publish the allowed tools and uses, where data can and cannot go, and who to ask when something is unclear. Then socialize it in the places people actually read—not just a wiki page nobody visits.&lt;/p>
&lt;p>Make it a short document:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>What&amp;rsquo;s allowed:&lt;/strong> Which AI tools are approved for what use cases&lt;/li>
&lt;li>&lt;strong>What&amp;rsquo;s not allowed:&lt;/strong> Where the boundaries are and why&lt;/li>
&lt;li>&lt;strong>Where data can go:&lt;/strong> Which contexts are safe for which types of information&lt;/li>
&lt;li>&lt;strong>Who to ask:&lt;/strong> A real person or channel for edge cases&lt;/li>
&lt;/ul>
&lt;p>Post it in Slack, email it, put it in onboarding. Make not knowing harder than knowing.&lt;/p>
&lt;h2 class="relative group">2. Give AI your company context
&lt;div id="2-give-ai-your-company-context" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#2-give-ai-your-company-context" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The single biggest multiplier is letting AI use your internal data in a safe way. When tools can see the right repos, docs, tickets, and decision logs, individual effectiveness and code quality improve dramatically.&lt;/p>
&lt;p>Licenses alone don&amp;rsquo;t cut it. Wiring matters.&lt;/p>
&lt;h3 class="relative group">Developer move
&lt;div id="developer-move" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#developer-move" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Include relevant snippets from internal docs or tickets in your prompts when policy allows. Ask for refactoring that matches your codebase, not generic patterns.&lt;/p>
&lt;p>Instead of:&lt;/p>
&lt;pre tabindex="0">&lt;code>Write a function to validate user input
&lt;/code>&lt;/pre>&lt;p>Try:&lt;/p>
&lt;pre tabindex="0">&lt;code>Write a validation function that matches our pattern in
docs/validators/base.md. It should use the same error
handling structure we use elsewhere and return ValidationResult.
&lt;/code>&lt;/pre>&lt;p>Context makes the difference between generic code and code that fits.&lt;/p>
&lt;p>
&lt;figure>
&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="AI Usage by Task"
srcset="
/articles/ship-faster-without-breaking-things-dora-2025/2_hu_93809c0b262e2646.png 330w,
/articles/ship-faster-without-breaking-things-dora-2025/2_hu_b92b185d5cc8c49c.png 660w,
/articles/ship-faster-without-breaking-things-dora-2025/2_hu_bb3b760cef91418d.png 1280w
"
data-zoom-src="https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/2.png"
src="https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/2.png">
&lt;/figure>
&lt;/p>
&lt;h3 class="relative group">Leader move
&lt;div id="leader-move-1" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#leader-move-1" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Prioritize the plumbing. Improve data quality and access, then connect AI tools to approved internal sources. Treat this like a platform feature, not a side quest.&lt;/p>
&lt;p>This means:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Audit your data:&lt;/strong> What&amp;rsquo;s scattered? What&amp;rsquo;s duplicated? What&amp;rsquo;s wrong?&lt;/li>
&lt;li>&lt;strong>Make it accessible:&lt;/strong> Can tools reach the right information safely?&lt;/li>
&lt;li>&lt;strong>Build integrations:&lt;/strong> Connect approved AI tools to your repos, docs, and systems&lt;/li>
&lt;li>&lt;strong>Measure impact:&lt;/strong> Track whether context improves code quality and reduces rework&lt;/li>
&lt;/ul>
&lt;p>This is infrastructure work. It&amp;rsquo;s not glamorous. It pays off massively.&lt;/p>
&lt;h2 class="relative group">3. Make version control your safety net
&lt;div id="3-make-version-control-your-safety-net" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#3-make-version-control-your-safety-net" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Two simple habits change the payoff curve:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Commit more often&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Be fluent with rollback and revert&lt;/strong>&lt;/li>
&lt;/ol>
&lt;p>Frequent commits amplify AI&amp;rsquo;s positive effect on individual effectiveness. Frequent rollbacks amplify AI&amp;rsquo;s effect on team performance. That safety net lowers fear and keeps speed sane.&lt;/p>
&lt;h3 class="relative group">Developer move
&lt;div id="developer-move-1" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#developer-move-1" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Keep PRs small, practice fast reverts, and do review passes that focus on risk hot spots. Larger AI-generated diffs are harder to review, so small batches matter even more.&lt;/p>
&lt;p>&lt;strong>Make this your default workflow:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Commit after every meaningful change, not just when you&amp;rsquo;re &amp;ldquo;done&amp;rdquo;&lt;/li>
&lt;li>Know your rollback commands by heart: &lt;code>git revert&lt;/code>, &lt;code>git reset&lt;/code>, &lt;code>git checkout&lt;/code>&lt;/li>
&lt;li>Break big AI-generated changes into reviewable chunks before opening a PR&lt;/li>
&lt;li>Flag risky sections explicitly in PR descriptions&lt;/li>
&lt;/ul>
&lt;p>When AI suggests a 300-line refactor, don&amp;rsquo;t merge it as one commit. Break it into logical pieces you can review and revert independently.&lt;/p>
&lt;h2 class="relative group">4. Work in smaller batches
&lt;div id="4-work-in-smaller-batches" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#4-work-in-smaller-batches" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Small batches correlate with better product performance for AI-assisted teams. They turn AI&amp;rsquo;s neutral effect on friction into a reduction. You might feel a smaller bump in personal effectiveness, which is fine—outcomes beat output.&lt;/p>
&lt;h3 class="relative group">Team move
&lt;div id="team-move" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#team-move" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Make &amp;ldquo;fewer lines per change, fewer changes per release, shorter tasks&amp;rdquo; your default.&lt;/p>
&lt;p>&lt;strong>Concretely:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Set a soft limit on PR size (150-200 lines max)&lt;/li>
&lt;li>Break features into smaller increments that ship value&lt;/li>
&lt;li>Deploy more frequently, even if each deploy does less&lt;/li>
&lt;li>Measure cycle time from commit to production, not just individual velocity&lt;/li>
&lt;/ul>
&lt;p>Small batches reduce review burden, lower deployment risk, and make rollbacks less scary. When AI is writing code, this discipline matters more, not less.&lt;/p>
&lt;h2 class="relative group">5. Keep the user in the room
&lt;div id="5-keep-the-user-in-the-room" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#5-keep-the-user-in-the-room" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>User-centric focus is a strong moderator. With it, AI maps to better team performance. Without it, you move quickly in the wrong direction.&lt;/p>
&lt;p>Speed without direction is just thrashing.&lt;/p>
&lt;h3 class="relative group">Leader move
&lt;div id="leader-move-2" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#leader-move-2" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Tie AI usage to user outcomes in planning and review. Ask how a suggestion helps a user goal before you celebrate a speedup.&lt;/p>
&lt;p>&lt;strong>In practice:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Start feature discussions with the user problem, not the implementation&lt;/li>
&lt;li>When reviewing AI-generated code, ask &amp;ldquo;Does this serve the user need?&amp;rdquo;&lt;/li>
&lt;li>Measure user-facing outcomes (performance, success rates, satisfaction) alongside velocity&lt;/li>
&lt;li>Reject optimizations that don&amp;rsquo;t trace back to user value&lt;/li>
&lt;/ul>
&lt;p>AI is good at generating code. It&amp;rsquo;s terrible at understanding what your users actually need. Keep humans in the loop for that judgment.&lt;/p>
&lt;h2 class="relative group">6. Invest in platform quality
&lt;div id="6-invest-in-platform-quality" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#6-invest-in-platform-quality" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Quality internal platforms amplify AI&amp;rsquo;s positive effect on organizational performance. They also raise friction a bit, likely because guardrails block unsafe patterns.&lt;/p>
&lt;p>That&amp;rsquo;s not necessarily bad. That&amp;rsquo;s governance doing its job.&lt;/p>
&lt;h3 class="relative group">Leader move
&lt;div id="leader-move-3" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#leader-move-3" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Treat the platform as a product. Focus on golden paths, paved roads, and secure defaults. Measure adoption and developer satisfaction.&lt;/p>
&lt;p>&lt;strong>What this looks like:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Golden paths:&lt;/strong> Make the secure, reliable, approved way also the easiest way&lt;/li>
&lt;li>&lt;strong>Good defaults:&lt;/strong> Bake observability, security, and reliability into templates&lt;/li>
&lt;li>&lt;strong>Clear boundaries:&lt;/strong> Make it obvious when someone&amp;rsquo;s about to do something risky&lt;/li>
&lt;li>&lt;strong>Fast feedback:&lt;/strong> Catch issues in development, not in production&lt;/li>
&lt;/ul>
&lt;p>When AI suggests code, a good platform will catch problems early. It&amp;rsquo;s the difference between &amp;ldquo;this breaks in production&amp;rdquo; and &amp;ldquo;this won&amp;rsquo;t even compile without the right config.&amp;rdquo;&lt;/p>
&lt;h2 class="relative group">7. Use value stream management so local wins become company wins
&lt;div id="7-use-value-stream-management-so-local-wins-become-company-wins" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#7-use-value-stream-management-so-local-wins-become-company-wins" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Without value stream visibility, AI creates local pockets of speed that get swallowed by downstream bottlenecks. With VSM, the impact on organizational performance is dramatically amplified.&lt;/p>
&lt;p>If you can&amp;rsquo;t draw your value stream on a whiteboard, start there.&lt;/p>
&lt;h3 class="relative group">Leader move
&lt;div id="leader-move-4" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#leader-move-4" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Map your value stream from idea to production. Identify bottlenecks. Measure flow time, not just individual productivity.&lt;/p>
&lt;p>&lt;strong>Questions to answer:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>How long does it take an idea to reach users?&lt;/li>
&lt;li>Where do handoffs slow things down?&lt;/li>
&lt;li>Which stages have the longest wait times?&lt;/li>
&lt;li>Is faster coding making a difference at the business layer?&lt;/li>
&lt;/ul>
&lt;p>When one team doubles their velocity but deployment still takes three weeks, you haven&amp;rsquo;t improved the system. You&amp;rsquo;ve just made the queue longer.&lt;/p>
&lt;p>VSM makes the whole system visible. It&amp;rsquo;s how you turn local improvements into company-level wins.&lt;/p>
&lt;hr>
&lt;h2 class="relative group">Quick playbooks
&lt;div id="quick-playbooks" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#quick-playbooks" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;h3 class="relative group">For developers
&lt;div id="for-developers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-developers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Commit smaller, commit more, and know your rollback shortcut.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Add internal context to prompts when allowed.&lt;/strong> Ask for diffs that match your codebase.&lt;/li>
&lt;li>&lt;strong>Prefer five tiny PRs over one big one.&lt;/strong> Your reviewers and your on-call rotation will thank you.&lt;/li>
&lt;li>&lt;strong>Challenge AI suggestions that don&amp;rsquo;t trace back to user value.&lt;/strong> Speed without direction is waste.&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">For engineering leaders
&lt;div id="for-engineering-leaders" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-engineering-leaders" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Publish and socialize an AI policy that people can actually find and understand.&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Fund the data plumbing so AI can use internal context safely.&lt;/strong> This is infrastructure work that pays compound returns.&lt;/li>
&lt;li>&lt;strong>Strengthen the platform.&lt;/strong> Measure adoption and expect a bit of healthy friction from guardrails.&lt;/li>
&lt;li>&lt;strong>Run regular value stream reviews&lt;/strong> so improvements show up at the business layer, not just in the IDE.&lt;/li>
&lt;li>&lt;strong>Tie AI adoption to outcomes,&lt;/strong> not just activity. Measure user-facing results alongside velocity.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 class="relative group">The takeaway
&lt;div id="the-takeaway" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-takeaway" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>AI is an amplifier. With weak flow and unclear goals, it magnifies the mess. With good safety nets, small batches, user focus, and value stream visibility, it magnifies the good.&lt;/p>
&lt;p>The 2025 DORA report is very clear on that point, and it matches what many teams feel day to day: the tool doesn&amp;rsquo;t determine the outcome. The system around it does.&lt;/p>
&lt;p>You can start on Monday. Pick one capability, make it better, measure the result. Then pick the next one.&lt;/p>
&lt;p>That&amp;rsquo;s how you ship faster without breaking things.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Want the full data?&lt;/strong> Download the complete &lt;a
href="https://cloud.google.com/resources/content/2025-dora-ai-assisted-software-development-report"
target="_blank"
>2025 DORA State of AI-assisted Software Development Report&lt;/a>.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/ship-faster-without-breaking-things-dora-2025/feature.png"/></item><item><title>Build Your First AI Agent This Week: A Practical Guide</title><link>https://pinishv.com/articles/build-your-first-ai-agent-this-week/</link><pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/build-your-first-ai-agent-this-week/</guid><description>Stop reading about AI agents and build one. Here&amp;rsquo;s the step-by-step path: picking the right problem, setting up your tools, building a working agent in seven days, and deploying it to your team.</description><content:encoded>&lt;p>In my &lt;a
href="https://pinishv.com/articles/build-your-own-ai-agents-for-real-productivity/"
target="_blank"
>previous article&lt;/a>, I covered what makes AI agents different and which platforms are worth using. Now it&amp;rsquo;s time to actually build one.&lt;/p>
&lt;p>This isn&amp;rsquo;t theory. This is the practical path to shipping your first useful agent in seven days. Real steps, real code patterns, real deployment.&lt;/p>
&lt;h2 class="relative group">Day 1: Pick a problem that won&amp;rsquo;t waste your time
&lt;div id="day-1-pick-a-problem-that-wont-waste-your-time" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#day-1-pick-a-problem-that-wont-waste-your-time" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The most common mistake is picking the wrong first problem. Too ambitious, too vague, or too risky. You want something that teaches you how agents work without creating a disaster if it fails.&lt;/p>
&lt;p>&lt;strong>The criteria that matter:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Repetitive and annoying.&lt;/strong> Something you or your team does regularly and wish you didn&amp;rsquo;t. The kind of task where you know you&amp;rsquo;ll use the agent because the manual version is painful.&lt;/p>
&lt;p>&lt;strong>Multi-step with clear logic.&lt;/strong> It needs to check multiple sources or make decisions based on what it finds. Otherwise, you don&amp;rsquo;t need an agent, you need a function.&lt;/p>
&lt;p>&lt;strong>Low stakes.&lt;/strong> Mistakes are annoying but not catastrophic. No customer-facing systems, no data deletion, no money movement.&lt;/p>
&lt;p>&lt;strong>Well-defined success.&lt;/strong> You can describe what &amp;ldquo;done&amp;rdquo; looks like in concrete terms. Vague goals produce vague agents.&lt;/p>
&lt;p>&lt;strong>Good first problems:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Weekly engineering status report.&lt;/strong> Query your project management tool for completed tickets, check Git for merged PRs, pull highlights from meeting notes, and generate a summary. Multiple data sources, clear output format, low risk.&lt;/p>
&lt;p>&lt;strong>Pull request pre-review.&lt;/strong> Check new PRs for common issues before human review: missing tests, documentation gaps, security patterns, code style. Clear checks, actionable output, saves reviewer time.&lt;/p>
&lt;p>&lt;strong>Production health check.&lt;/strong> Monitor key metrics across your services, check error rates and latency, identify anomalies, and escalate only when thresholds are crossed. Defined logic, measurable impact.&lt;/p>
&lt;p>&lt;strong>Support ticket triage.&lt;/strong> Read incoming tickets, categorize by type, check for similar past issues, route to the right team, and flag urgent cases. Clear workflow, easy to validate.&lt;/p>
&lt;p>&lt;strong>Bad first problems:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Autonomous customer support.&lt;/strong> Too high stakes. Customers see the output directly. Requires judgment and empathy that agents don&amp;rsquo;t have.&lt;/p>
&lt;p>&lt;strong>Writing production code without review.&lt;/strong> You&amp;rsquo;re trusting an agent with your system&amp;rsquo;s reliability before you understand how agents fail. That&amp;rsquo;s backwards.&lt;/p>
&lt;p>&lt;strong>Making architectural decisions.&lt;/strong> Agents can gather information, but they can&amp;rsquo;t make taste-based trade-offs or understand your business context deeply enough.&lt;/p>
&lt;p>Pick your problem now. Write down the specific task, the data sources it needs, and what the output should look like. Be concrete.&lt;/p>
&lt;h2 class="relative group">Day 2: Set up your environment and tools
&lt;div id="day-2-set-up-your-environment-and-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#day-2-set-up-your-environment-and-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>You have two main paths: managed platforms (fast but less control) or open-source frameworks (more work, more flexibility).&lt;/p>
&lt;h3 class="relative group">Path A: OpenAI Agents SDK (fastest start)
&lt;div id="path-a-openai-agents-sdk-fastest-start" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#path-a-openai-agents-sdk-fastest-start" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>When to choose this:&lt;/strong> You want to build something working today and don&amp;rsquo;t mind vendor lock-in.&lt;/p>
&lt;p>&lt;strong>Setup:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install openai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create an API key from &lt;a
href="https://platform.openai.com/api-keys"
target="_blank"
>OpenAI&amp;rsquo;s platform&lt;/a>, set it as an environment variable:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">OPENAI_API_KEY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;your-key-here&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>First test:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">openai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">OpenAI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">OpenAI&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Simple function calling example&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_ticket_count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">status&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Your actual logic here&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">status&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;count&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">42&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">chat&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">completions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gpt-4o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;How many open tickets?&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tools&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;function&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;function&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;get_ticket_count&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Get count of tickets by status&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;parameters&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;object&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;properties&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;string&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;enum&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;open&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;closed&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;pending&amp;#34;&lt;/span>&lt;span class="p">]}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;required&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If that runs without errors, you&amp;rsquo;re ready.&lt;/p>
&lt;h3 class="relative group">Path B: LangGraph (maximum control)
&lt;div id="path-b-langgraph-maximum-control" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#path-b-langgraph-maximum-control" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>When to choose this:&lt;/strong> You want to understand how agents work at a deeper level, need to avoid vendor lock-in, or have requirements that managed platforms can&amp;rsquo;t meet.&lt;/p>
&lt;p>&lt;strong>Setup:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install langgraph langchain-openai langsmith
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You&amp;rsquo;ll still need an OpenAI API key (or use Anthropic, Gemini, or local models). Set up LangSmith for observability (free tier is fine):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LANGCHAIN_API_KEY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;your-langsmith-key&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LANGCHAIN_TRACING_V2&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">LANGCHAIN_PROJECT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;my-first-agent&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>First test:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">langgraph.graph&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">StateGraph&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">END&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">typing&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TypedDict&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">State&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">TypedDict&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">list&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_step&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">str&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">analyze&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">state&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;next_step&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;complete&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StateGraph&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">State&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_node&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;analyze&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">analyze&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_entry_point&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;analyze&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_edge&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;analyze&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">END&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">app&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">compile&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">app&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">invoke&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[],&lt;/span> &lt;span class="s2">&amp;#34;next_step&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If that runs, you&amp;rsquo;re good.&lt;/p>
&lt;h3 class="relative group">Connect to your actual data
&lt;div id="connect-to-your-actual-data" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#connect-to-your-actual-data" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Don&amp;rsquo;t build against mock data. Use real systems from day one, but safely.&lt;/p>
&lt;p>&lt;strong>Use MCP servers&lt;/strong> (covered in my &lt;a
href="https://pinishv.com/articles/model-context-protocol-connecting-ai-to-your-real-work/"
target="_blank"
>MCP article&lt;/a>) to connect to:&lt;/p>
&lt;ul>
&lt;li>Your filesystem (code, documentation)&lt;/li>
&lt;li>Your databases (read-only credentials on development instances)&lt;/li>
&lt;li>Your Git repository&lt;/li>
&lt;li>Your project management tools&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Install basic MCP servers:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Filesystem access&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm install -g @modelcontextprotocol/server-filesystem
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># PostgreSQL access&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm install -g @modelcontextprotocol/server-postgres
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Git repository access&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm install -g @modelcontextprotocol/server-git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Configure them in your Claude Desktop or connect them programmatically in your agent code.&lt;/p>
&lt;h2 class="relative group">Day 3-4: Build the minimal viable agent
&lt;div id="day-3-4-build-the-minimal-viable-agent" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#day-3-4-build-the-minimal-viable-agent" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Start simple. Don&amp;rsquo;t try to handle every edge case or build the perfect architecture. Build something that works for the happy path.&lt;/p>
&lt;h3 class="relative group">Define your tools clearly
&lt;div id="define-your-tools-clearly" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#define-your-tools-clearly" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Each tool should do one thing well. Clear inputs, clear outputs, clear purpose.&lt;/p>
&lt;p>&lt;strong>Example: Status report agent tools&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_completed_tickets&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Get tickets completed in the last N days&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Query your project management API&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Return: list of {id, title, assignee, completed_date}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_merged_prs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Get PRs merged in the last N days&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Query GitHub API or use Git MCP server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Return: list of {pr_number, title, author, merged_date}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_meeting_highlights&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Extract highlights from meeting notes&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Read meeting notes from your docs system&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Return: list of highlight strings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Keep them focused. One tool shouldn&amp;rsquo;t try to do everything.&lt;/p>
&lt;h3 class="relative group">Write explicit prompts
&lt;div id="write-explicit-prompts" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#write-explicit-prompts" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Tell the agent exactly what you want. Agents don&amp;rsquo;t read between the lines well.&lt;/p>
&lt;p>&lt;strong>Bad prompt:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;#34;Generate a status report&amp;#34;
&lt;/code>&lt;/pre>&lt;p>&lt;strong>Good prompt:&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>You are a status report generator for the engineering team.
Your task:
1. Get all tickets completed in the last 7 days
2. Get all PRs merged in the last 7 days
3. Get highlights from team meetings
4. Generate a summary in this format:
## Completed This Week
- [Ticket list with assignees]
## Shipped Features
- [PR list with authors]
## Team Updates
- [Meeting highlights]
Be concise. Focus on user-visible impact.
&lt;/code>&lt;/pre>&lt;p>Specificity matters enormously.&lt;/p>
&lt;h3 class="relative group">Wire it together: OpenAI example
&lt;div id="wire-it-together-openai-example" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#wire-it-together-openai-example" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">openai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">OpenAI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">OpenAI&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tools&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;function&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;function&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;get_completed_tickets&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Get tickets completed in the last N days&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;parameters&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;object&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;properties&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;days&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;integer&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;default&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Define other tools similarly&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">messages&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;system&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;You are a status report generator...&amp;#34;&lt;/span> &lt;span class="c1"># Full prompt here&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Generate this week&amp;#39;s status report&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">chat&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">completions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gpt-4o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">messages&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tools&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">tools&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Handle tool calls&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">finish_reason&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;tool_calls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tool_call&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tool_calls&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Execute the requested tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">tool_call&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">function&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;get_completed_tickets&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">get_completed_tickets&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;tool&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;tool_call_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">tool_call&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">chat&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">completions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gpt-4o&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">messages&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tools&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">tools&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">content&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">Wire it together: LangGraph example
&lt;div id="wire-it-together-langgraph-example" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#wire-it-together-langgraph-example" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">langgraph.graph&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">StateGraph&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">END&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">langgraph.prebuilt&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">ToolExecutor&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">langchain_openai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">ChatOpenAI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">langchain.tools&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_completed_tickets&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">int&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Get tickets completed in the last N days&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Your implementation&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tools&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">get_completed_tickets&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tool_executor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ToolExecutor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tools&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">State&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">TypedDict&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">list&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_action&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">str&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">call_agent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">state&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ChatOpenAI&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gpt-4o&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llm_with_tools&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bind_tools&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tools&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llm_with_tools&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">invoke&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">state&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">]}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">execute_tools&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">state&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">last_message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tool_calls&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">last_message&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tool_calls&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">results&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">tool_executor&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">invoke&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">call&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">call&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">tool_calls&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">results&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">should_continue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">state&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">last_message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">state&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">hasattr&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">last_message&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;tool_calls&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">last_message&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tool_calls&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="s2">&amp;#34;execute_tools&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="s2">&amp;#34;end&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StateGraph&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">State&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_node&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;agent&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">call_agent&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_node&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;execute_tools&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">execute_tools&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_entry_point&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;agent&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_conditional_edges&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;agent&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">should_continue&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;execute_tools&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;execute_tools&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;end&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">END&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_edge&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;execute_tools&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;agent&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">app&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">graph&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">compile&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">Add guardrails immediately
&lt;div id="add-guardrails-immediately" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#add-guardrails-immediately" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Rate limits:&lt;/strong> Don&amp;rsquo;t let the agent make unlimited API calls.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">functools&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">wraps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">rate_limit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">max_calls&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">period&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">calls&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">decorator&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">func&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nd">@wraps&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">func&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">wrapper&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">**&lt;/span>&lt;span class="n">kwargs&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">now&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">calls&lt;/span>&lt;span class="p">[:]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">c&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">c&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">calls&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">c&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">now&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">period&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">calls&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="n">max_calls&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">Exception&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Rate limit: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">max_calls&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> calls per &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">period&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">s&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">calls&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">**&lt;/span>&lt;span class="n">kwargs&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">wrapper&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">decorator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@rate_limit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">max_calls&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">period&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">60&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">expensive_api_call&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Read-only access:&lt;/strong> Start with read-only database credentials and API tokens. No write permissions until you&amp;rsquo;re confident.&lt;/p>
&lt;p>&lt;strong>Timeouts:&lt;/strong> Every tool should have a timeout. Agents can get stuck waiting.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">concurrent.futures&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="ne">TimeoutError&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">timeout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">seconds&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">decorator&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">func&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">handler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">signum&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">TimeoutError&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">wrapper&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">**&lt;/span>&lt;span class="n">kwargs&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">SIGALRM&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">handler&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">alarm&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">seconds&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">**&lt;/span>&lt;span class="n">kwargs&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">finally&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">alarm&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">result&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">wrapper&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">decorator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@timeout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">30&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">slow_operation&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 class="relative group">Day 5-6: Test, break, fix, iterate
&lt;div id="day-5-6-test-break-fix-iterate" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#day-5-6-test-break-fix-iterate" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Now use it for real work. Not a demo. Actual tasks.&lt;/p>
&lt;h3 class="relative group">Test with real scenarios
&lt;div id="test-with-real-scenarios" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#test-with-real-scenarios" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Run your agent on actual data from the past week. Compare its output to what you would have produced manually.&lt;/p>
&lt;p>&lt;strong>What to check:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Accuracy:&lt;/strong> Is the information correct? No hallucinated data?&lt;/p>
&lt;p>&lt;strong>Completeness:&lt;/strong> Did it find everything it should have?&lt;/p>
&lt;p>&lt;strong>Format:&lt;/strong> Is the output actually useful? Does it need reformatting?&lt;/p>
&lt;p>&lt;strong>Efficiency:&lt;/strong> How many API calls did it make? How long did it take?&lt;/p>
&lt;h3 class="relative group">Watch what it does
&lt;div id="watch-what-it-does" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#watch-what-it-does" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Use LangSmith&lt;/strong> (works with both OpenAI and LangGraph) to see traces of every step.&lt;/p>
&lt;p>In LangSmith&amp;rsquo;s interface, you&amp;rsquo;ll see:&lt;/p>
&lt;ul>
&lt;li>Every message sent to the LLM&lt;/li>
&lt;li>Every tool call with parameters&lt;/li>
&lt;li>Every tool response&lt;/li>
&lt;li>The final output&lt;/li>
&lt;li>Time and token costs for each step&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Look for:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Unnecessary tool calls (calling the same thing twice)&lt;/li>
&lt;li>Wrong tool choices (using the wrong tool for a task)&lt;/li>
&lt;li>Poor reasoning (making bad decisions about what to do next)&lt;/li>
&lt;li>Missing error handling (crashes instead of graceful failures)&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Iterate on prompts and tools
&lt;div id="iterate-on-prompts-and-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#iterate-on-prompts-and-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Improve the prompt&lt;/strong> when the agent:&lt;/p>
&lt;ul>
&lt;li>Makes the right tool calls but draws wrong conclusions&lt;/li>
&lt;li>Doesn&amp;rsquo;t understand what you&amp;rsquo;re asking for&lt;/li>
&lt;li>Produces output in the wrong format&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Improve the tools&lt;/strong> when the agent:&lt;/p>
&lt;ul>
&lt;li>Can&amp;rsquo;t find the information it needs&lt;/li>
&lt;li>Gets errors from tool calls&lt;/li>
&lt;li>Needs more granular control over what it can do&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Add more guardrails&lt;/strong> when you see:&lt;/p>
&lt;ul>
&lt;li>Excessive API calls&lt;/li>
&lt;li>Attempts to access things it shouldn&amp;rsquo;t&lt;/li>
&lt;li>Operations that take too long&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Common issues and fixes
&lt;div id="common-issues-and-fixes" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#common-issues-and-fixes" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Issue: Agent keeps calling the same tool repeatedly&lt;/strong>&lt;/p>
&lt;p>Fix: Add memory of what it&amp;rsquo;s tried. Or be more explicit in the prompt: &amp;ldquo;Call each tool exactly once, then synthesize results.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Issue: Output format is inconsistent&lt;/strong>&lt;/p>
&lt;p>Fix: Use structured output. OpenAI supports response_format with JSON schema. LangChain has structured output parsers.&lt;/p>
&lt;p>&lt;strong>Issue: Agent gives up too easily on errors&lt;/strong>&lt;/p>
&lt;p>Fix: Add retry logic to tools. Return helpful error messages the agent can act on.&lt;/p>
&lt;p>&lt;strong>Issue: Too slow&lt;/strong>&lt;/p>
&lt;p>Fix: Reduce model calls by better prompt design. Cache results. Use cheaper models for simple decisions.&lt;/p>
&lt;h2 class="relative group">Day 7: Package it for others to use
&lt;div id="day-7-package-it-for-others-to-use" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#day-7-package-it-for-others-to-use" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Your agent works for you. Now make it work for your team.&lt;/p>
&lt;h3 class="relative group">Turn it into a CLI tool
&lt;div id="turn-it-into-a-cli-tool" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#turn-it-into-a-cli-tool" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Simple wrapper for command-line use:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">argparse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">argparse&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ArgumentParser&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">description&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;Generate status report&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--days&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">default&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;Days to report&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add_argument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;--output&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">help&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;Output file (optional)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">parser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parse_args&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">report&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">generate_report&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;w&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">report&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">report&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">main&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now anyone can run: &lt;code>python agent.py --days 7 --output report.md&lt;/code>&lt;/p>
&lt;h3 class="relative group">Or turn it into an API
&lt;div id="or-turn-it-into-an-api" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#or-turn-it-into-an-api" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fastapi&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">FastAPI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">app&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">FastAPI&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@app.post&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;/generate-report&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">async&lt;/span> &lt;span class="k">def&lt;/span> &lt;span class="nf">generate_report_endpoint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">int&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">report&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">generate_report&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;report&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">report&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Deploy with: &lt;code>uvicorn agent:app --host 0.0.0.0 --port 8000&lt;/code>&lt;/p>
&lt;h3 class="relative group">Document how to use it
&lt;div id="document-how-to-use-it" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#document-how-to-use-it" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Write a README that covers:&lt;/p>
&lt;p>&lt;strong>What it does&lt;/strong> (specific description)&lt;/p>
&lt;p>&lt;strong>When to use it&lt;/strong> (and when not to)&lt;/p>
&lt;p>&lt;strong>How to run it&lt;/strong> (exact commands)&lt;/p>
&lt;p>&lt;strong>What it needs&lt;/strong> (API keys, permissions, data access)&lt;/p>
&lt;p>&lt;strong>What to do if it fails&lt;/strong> (common errors and fixes)&lt;/p>
&lt;p>&lt;strong>How to improve it&lt;/strong> (where to file issues or make changes)&lt;/p>
&lt;h3 class="relative group">Add observability for team use
&lt;div id="add-observability-for-team-use" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#add-observability-for-team-use" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Connect to LangSmith or another observability platform so you can see:&lt;/p>
&lt;ul>
&lt;li>Who&amp;rsquo;s using it&lt;/li>
&lt;li>Success rate&lt;/li>
&lt;li>Common errors&lt;/li>
&lt;li>Cost per run&lt;/li>
&lt;/ul>
&lt;p>This tells you if it&amp;rsquo;s actually providing value or if people hit problems.&lt;/p>
&lt;h2 class="relative group">Patterns that work
&lt;div id="patterns-that-work" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#patterns-that-work" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>After building several agents, certain patterns consistently work better than others.&lt;/p>
&lt;h3 class="relative group">Pattern: Small focused agents with clear hand-offs
&lt;div id="pattern-small-focused-agents-with-clear-hand-offs" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#pattern-small-focused-agents-with-clear-hand-offs" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Don&amp;rsquo;t build one agent that does everything.&lt;/strong> Build multiple small agents, each with a specific job, that hand off to each other explicitly.&lt;/p>
&lt;p>Example: Instead of a single &amp;ldquo;incident response agent,&amp;rdquo; build:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Detection agent:&lt;/strong> Monitors metrics and logs, identifies anomalies&lt;/li>
&lt;li>&lt;strong>Triage agent:&lt;/strong> Categorizes incidents, determines severity&lt;/li>
&lt;li>&lt;strong>Diagnosis agent:&lt;/strong> Analyzes logs and code, identifies root cause&lt;/li>
&lt;li>&lt;strong>Communication agent:&lt;/strong> Updates status page, notifies team&lt;/li>
&lt;/ul>
&lt;p>Each agent has clear inputs and outputs. The orchestration layer coordinates hand-offs.&lt;/p>
&lt;p>&lt;strong>Why this works:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Easier to debug (small surface area)&lt;/li>
&lt;li>Easier to test (focused scope)&lt;/li>
&lt;li>Easier to improve (change one without affecting others)&lt;/li>
&lt;li>Easier to understand (clear responsibilities)&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Pattern: Human-in-the-loop for consequential actions
&lt;div id="pattern-human-in-the-loop-for-consequential-actions" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#pattern-human-in-the-loop-for-consequential-actions" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Agents should recommend, not execute, anything with real consequences.&lt;/strong>&lt;/p>
&lt;p>For actions that:&lt;/p>
&lt;ul>
&lt;li>Change production systems&lt;/li>
&lt;li>Spend money&lt;/li>
&lt;li>Contact customers&lt;/li>
&lt;li>Modify data&lt;/li>
&lt;/ul>
&lt;p>Show the plan first. Get approval. Then act.&lt;/p>
&lt;p>&lt;strong>Implementation:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">execute_with_approval&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">description&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Agent wants to: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">description&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Command: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">approval&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">input&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Approve? (yes/no): &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">approval&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lower&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;yes&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">execute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;cancelled&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;reason&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;User rejected&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or for async workflows, write the proposed action to a queue and wait for approval before executing.&lt;/p>
&lt;h3 class="relative group">Pattern: Explicit memory and state
&lt;div id="pattern-explicit-memory-and-state" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#pattern-explicit-memory-and-state" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Stateless agents repeat mistakes.&lt;/strong> Give them memory so they learn from experience.&lt;/p>
&lt;p>&lt;strong>What to remember:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Past conversations and context&lt;/li>
&lt;li>What worked and what failed&lt;/li>
&lt;li>User preferences and corrections&lt;/li>
&lt;li>Domain-specific knowledge learned over time&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Simple implementation:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">AgentMemory&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="fm">__init__&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">conversation_history&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">learned_patterns&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">remember_interaction&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">input&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">feedback&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">conversation_history&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;input&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">input&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;output&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;feedback&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">feedback&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;timestamp&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">time&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">get_relevant_history&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">current_input&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Return similar past interactions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use vector databases (Pinecone, Weaviate, Chroma) for semantic search over past interactions.&lt;/p>
&lt;h2 class="relative group">Traps that waste time
&lt;div id="traps-that-waste-time" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#traps-that-waste-time" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;h3 class="relative group">Trap: Building without understanding the workflow
&lt;div id="trap-building-without-understanding-the-workflow" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#trap-building-without-understanding-the-workflow" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Don&amp;rsquo;t automate what you don&amp;rsquo;t understand.&lt;/strong> If the manual process is unclear, the automated version will be worse.&lt;/p>
&lt;p>Before building, document:&lt;/p>
&lt;ul>
&lt;li>What exactly happens at each step&lt;/li>
&lt;li>What decisions get made and why&lt;/li>
&lt;li>What exceptions occur and how they&amp;rsquo;re handled&lt;/li>
&lt;li>What the output should look like&lt;/li>
&lt;/ul>
&lt;p>Then build the agent.&lt;/p>
&lt;h3 class="relative group">Trap: No guardrails until something breaks
&lt;div id="trap-no-guardrails-until-something-breaks" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#trap-no-guardrails-until-something-breaks" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Every agent needs boundaries.&lt;/strong> Define them before you need them.&lt;/p>
&lt;p>Minimum guardrails:&lt;/p>
&lt;ul>
&lt;li>Rate limits on expensive operations&lt;/li>
&lt;li>Timeouts on all tools&lt;/li>
&lt;li>Read-only access by default&lt;/li>
&lt;li>Explicit approval for risky actions&lt;/li>
&lt;li>Input validation on all tool parameters&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Trap: Ignoring observability
&lt;div id="trap-ignoring-observability" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#trap-ignoring-observability" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>You can&amp;rsquo;t improve what you can&amp;rsquo;t see.&lt;/strong> Instrument from day one.&lt;/p>
&lt;p>At minimum, log:&lt;/p>
&lt;ul>
&lt;li>Every agent invocation&lt;/li>
&lt;li>Every tool call with parameters and results&lt;/li>
&lt;li>Every error with context&lt;/li>
&lt;li>Final output and user feedback&lt;/li>
&lt;/ul>
&lt;p>Use LangSmith, Arize Phoenix, or W&amp;amp;B Weave. The free tiers are sufficient for starting out.&lt;/p>
&lt;h3 class="relative group">Trap: Optimizing too early
&lt;div id="trap-optimizing-too-early" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#trap-optimizing-too-early" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Your first version should work, not be perfect.&lt;/strong> Get it running, use it for real work, then optimize based on actual bottlenecks.&lt;/p>
&lt;p>Don&amp;rsquo;t spend time on:&lt;/p>
&lt;ul>
&lt;li>Complex caching before you know what&amp;rsquo;s slow&lt;/li>
&lt;li>Multi-agent orchestration before single-agent works&lt;/li>
&lt;li>Advanced error handling before you know what errors occur&lt;/li>
&lt;/ul>
&lt;p>Do spend time on:&lt;/p>
&lt;ul>
&lt;li>Clear problem definition&lt;/li>
&lt;li>Simple working implementation&lt;/li>
&lt;li>Basic guardrails&lt;/li>
&lt;li>Real usage and feedback&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">The 90-day rollout plan
&lt;div id="the-90-day-rollout-plan" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-90-day-rollout-plan" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>You&amp;rsquo;ve built an agent that works for you. Now scale it to your team.&lt;/p>
&lt;h3 class="relative group">Weeks 1-2: Pilot with willing participants
&lt;div id="weeks-1-2-pilot-with-willing-participants" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#weeks-1-2-pilot-with-willing-participants" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Pick 2-3 people who:&lt;/p>
&lt;ul>
&lt;li>Have the same pain point your agent solves&lt;/li>
&lt;li>Are willing to give feedback&lt;/li>
&lt;li>Won&amp;rsquo;t be upset if it fails occasionally&lt;/li>
&lt;/ul>
&lt;p>Have them use it for real work but with oversight. Check outputs before they&amp;rsquo;re used in important contexts.&lt;/p>
&lt;p>&lt;strong>Gather feedback systematically:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>What worked well?&lt;/li>
&lt;li>What produced wrong results?&lt;/li>
&lt;li>What was confusing?&lt;/li>
&lt;li>What took too long?&lt;/li>
&lt;li>What would make them use it more?&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Weeks 3-6: Refine based on reality
&lt;div id="weeks-3-6-refine-based-on-reality" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#weeks-3-6-refine-based-on-reality" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Fix the issues that came up in the pilot:&lt;/p>
&lt;p>&lt;strong>Accuracy problems:&lt;/strong> Improve prompts, add better tools, fix data quality issues.&lt;/p>
&lt;p>&lt;strong>Usability problems:&lt;/strong> Better documentation, clearer error messages, simpler interface.&lt;/p>
&lt;p>&lt;strong>Performance problems:&lt;/strong> Reduce latency, cache results, optimize tool calls.&lt;/p>
&lt;p>&lt;strong>Coverage problems:&lt;/strong> Handle edge cases that came up, add missing functionality.&lt;/p>
&lt;p>Track metrics:&lt;/p>
&lt;ul>
&lt;li>Success rate (tasks completed correctly)&lt;/li>
&lt;li>Usage frequency (how often people actually use it)&lt;/li>
&lt;li>Time saved (measured, not guessed)&lt;/li>
&lt;li>User satisfaction (ask directly)&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Weeks 7-10: Expand to more users
&lt;div id="weeks-7-10-expand-to-more-users" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#weeks-7-10-expand-to-more-users" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Open it up to the broader team, but with good documentation and support.&lt;/p>
&lt;p>&lt;strong>What people need to start:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Clear explanation of what it does&lt;/li>
&lt;li>Exact setup instructions&lt;/li>
&lt;li>Example usage for common cases&lt;/li>
&lt;li>Who to ask when it breaks&lt;/li>
&lt;li>How to give feedback&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Set expectations:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>What it&amp;rsquo;s good at&lt;/li>
&lt;li>What it&amp;rsquo;s not good at&lt;/li>
&lt;li>When to trust the output&lt;/li>
&lt;li>When to double-check manually&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Weeks 11-12: Measure and decide
&lt;div id="weeks-11-12-measure-and-decide" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#weeks-11-12-measure-and-decide" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Look at actual data:&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong> Are people using it voluntarily? How often?&lt;/p>
&lt;p>&lt;strong>Value:&lt;/strong> Time saved, quality of output, impact on workflow.&lt;/p>
&lt;p>&lt;strong>Cost:&lt;/strong> API expenses, maintenance time, support burden.&lt;/p>
&lt;p>&lt;strong>Sustainability:&lt;/strong> Can you maintain this? Does it keep working as things change?&lt;/p>
&lt;p>&lt;strong>Decision time:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>If it&amp;rsquo;s working:&lt;/strong> Commit to maintaining it. Document it properly. Plan the next agent.&lt;/p>
&lt;p>&lt;strong>If it&amp;rsquo;s marginal:&lt;/strong> Figure out what would make it valuable. Fix those things or kill it.&lt;/p>
&lt;p>&lt;strong>If it&amp;rsquo;s failing:&lt;/strong> Kill it cleanly. Document why so you learn for next time.&lt;/p>
&lt;p>Don&amp;rsquo;t let zombie agents accumulate. Half-working automation that people route around is worse than no automation.&lt;/p>
&lt;h2 class="relative group">What to measure
&lt;div id="what-to-measure" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-to-measure" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Focus on metrics that matter for real productivity.&lt;/p>
&lt;p>&lt;strong>Time to complete workflows:&lt;/strong> Full end-to-end time, not individual steps. This captures actual impact.&lt;/p>
&lt;p>&lt;strong>Quality of output:&lt;/strong> Accuracy, completeness, usefulness. Sample outputs regularly and compare to manual work.&lt;/p>
&lt;p>&lt;strong>Adoption rate:&lt;/strong> Percentage of team using it voluntarily after the pilot ends.&lt;/p>
&lt;p>&lt;strong>Trust level:&lt;/strong> Do people use the output directly or always double-check everything?&lt;/p>
&lt;p>&lt;strong>Cost per task:&lt;/strong> API calls, compute time, maintenance effort.&lt;/p>
&lt;p>&lt;strong>Failure modes:&lt;/strong> What breaks? How often? How bad are the failures?&lt;/p>
&lt;h2 class="relative group">What&amp;rsquo;s next
&lt;div id="whats-next" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#whats-next" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>You&amp;rsquo;ve built one agent. That&amp;rsquo;s the hard part. The second one is easier. The third one is easier still.&lt;/p>
&lt;p>&lt;strong>Build a portfolio of focused agents:&lt;/strong>&lt;/p>
&lt;p>Each solving a specific problem. Each well-understood and properly bounded. Each delivering clear value.&lt;/p>
&lt;p>The compounding effect is real: agents that handle routine work free you for higher-leverage problems. Which lets you build better agents. Which free up more time.&lt;/p>
&lt;p>&lt;strong>Key principles to keep:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Start with clear, specific problems&lt;/li>
&lt;li>Build focused agents with explicit boundaries&lt;/li>
&lt;li>Add guardrails and observability from day one&lt;/li>
&lt;li>Test with real work, not demos&lt;/li>
&lt;li>Measure actual value, not vanity metrics&lt;/li>
&lt;li>Iterate based on usage, not assumptions&lt;/li>
&lt;li>Kill what doesn&amp;rsquo;t work&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The teams pulling ahead aren&amp;rsquo;t the ones with the most sophisticated agents.&lt;/strong> They&amp;rsquo;re the ones who started building simple agents months ago and never stopped learning.&lt;/p>
&lt;p>Your first agent doesn&amp;rsquo;t need to be impressive. It needs to be useful. Pick a problem that annoys you, build something that solves it, and use it until it works reliably.&lt;/p>
&lt;p>Then build the next one.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Resources:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a
href="https://langchain-ai.github.io/langgraph/tutorials/"
target="_blank"
>LangGraph tutorials&lt;/a> for step-by-step guidance&lt;/li>
&lt;li>&lt;a
href="https://github.com/openai/openai-agents-python/tree/main/examples"
target="_blank"
>OpenAI Agents examples&lt;/a> for practical patterns&lt;/li>
&lt;li>&lt;a
href="https://www.langchain.com/langsmith"
target="_blank"
>LangSmith&lt;/a> for observability and debugging&lt;/li>
&lt;li>&lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>MCP servers&lt;/a> to connect to your data&lt;/li>
&lt;li>&lt;a
href="https://github.com/NVIDIA/NeMo-Guardrails"
target="_blank"
>NVIDIA NeMo Guardrails&lt;/a> for safety controls&lt;/li>
&lt;/ul>
&lt;p>The gap between reading about agents and building them is execution. Start today.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/build-your-first-ai-agent-this-week/feature.png"/></item><item><title>AI Agents for Real Productivity: What Works in 2025</title><link>https://pinishv.com/articles/build-your-own-ai-agents-for-real-productivity/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/build-your-own-ai-agents-for-real-productivity/</guid><description>Beyond the hype and the demos, what actually works when you build AI agents for real work? Here&amp;rsquo;s the landscape, the platforms worth using, and what separates success from expensive failure.</description><content:encoded>&lt;p>The promise of AI agents is everywhere: autonomous assistants that handle your busywork, orchestrate complex workflows, and give you back hours of your day. The reality is messier.&lt;/p>
&lt;p>Most AI agent demos look impressive until you try to use them for actual work. They either do too little (fancy chatbots with extra steps) or try to do too much (autonomous chaos that breaks things in creative ways).&lt;/p>
&lt;p>But between the hype and the disappointment, there&amp;rsquo;s a middle ground that actually works. AI agents you build yourself, focused on specific problems, constrained by proper guardrails, and integrated into your real workflow.&lt;/p>
&lt;p>&lt;strong>This isn&amp;rsquo;t about building the next big AI product.&lt;/strong> This is about understanding what actually works so you can make smart decisions about where to invest time and resources.&lt;/p>
&lt;h2 class="relative group">What makes an agent different from a chatbot
&lt;div id="what-makes-an-agent-different-from-a-chatbot" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-makes-an-agent-different-from-a-chatbot" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The terminology is confusing because vendors use &amp;ldquo;agent&amp;rdquo; to describe everything from glorified autocomplete to autonomous systems that make irreversible decisions.&lt;/p>
&lt;p>Here&amp;rsquo;s the practical distinction that matters:&lt;/p>
&lt;p>&lt;strong>A chatbot responds.&lt;/strong> You ask a question, it answers. The conversation ends. If you want something different, you ask again.&lt;/p>
&lt;p>&lt;strong>An agent decides and acts.&lt;/strong> You give it a goal, and it figures out the steps: what information it needs, what tools to use, what order to execute things in. It makes decisions dynamically based on what it learns along the way.&lt;/p>
&lt;p>&lt;strong>The key difference is agency:&lt;/strong> the ability to use tools, make decisions, and adapt based on results.&lt;/p>
&lt;p>&lt;strong>Example:&lt;/strong> You tell a chatbot &amp;ldquo;check if our API is healthy.&amp;rdquo; It might tell you how to check. An agent would actually call your monitoring API, parse the results, identify any issues, check the error logs for those specific issues, and give you a diagnosis.&lt;/p>
&lt;p>That&amp;rsquo;s powerful. It&amp;rsquo;s also where things get dangerous if you build without thinking through the consequences.&lt;/p>
&lt;h2 class="relative group">Where agents actually help (and where they don&amp;rsquo;t)
&lt;div id="where-agents-actually-help-and-where-they-dont" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-agents-actually-help-and-where-they-dont" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>After months of experimenting with agents for real work, I&amp;rsquo;ve seen clear patterns emerge about what succeeds and what fails.&lt;/p>
&lt;p>&lt;strong>Agents work well for:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Repetitive information gathering across multiple systems.&lt;/strong> The kind of task where you need to check five different places, correlate the data, and synthesize an answer. Agents excel at this because they don&amp;rsquo;t get bored and they&amp;rsquo;re consistent.&lt;/p>
&lt;p>Example: &amp;ldquo;Analyze the last production incident - check the error logs, look at the related code changes, find similar past incidents, and summarize what happened and why.&amp;rdquo; That&amp;rsquo;s four different data sources (logs, Git, incident database, codebase) that need to be queried and connected. An agent handles it in one shot.&lt;/p>
&lt;p>&lt;strong>Workflow orchestration with clear decision points.&lt;/strong> Tasks with branching logic that depends on results. If X happens, do Y. If not, do Z. Agents can follow these flows without you manually steering each step.&lt;/p>
&lt;p>Example: A code review assistant that checks style, runs security scans, looks for common anti-patterns specific to your codebase, and only escalates to human review if it finds something it can&amp;rsquo;t handle. The logic is clear, the boundaries are defined.&lt;/p>
&lt;p>&lt;strong>Data analysis and reporting.&lt;/strong> When you need to query data, transform it, apply business logic, and generate insights. As long as the queries are read-only and the logic is sound, agents can do this repeatedly without fatigue or errors.&lt;/p>
&lt;p>Example: Weekly customer health reports that pull data from your database, your support system, and your usage analytics, then generate a summary with trend analysis and flagged accounts. That&amp;rsquo;s several hours of manual work that an agent can do in minutes.&lt;/p>
&lt;p>&lt;strong>Agents struggle with:&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Ambiguous goals without clear success criteria.&lt;/strong> If you can&amp;rsquo;t define what &amp;ldquo;done&amp;rdquo; looks like in concrete terms, the agent will wander. Agents need specific targets.&lt;/p>
&lt;p>&lt;strong>High-stakes decisions without human oversight.&lt;/strong> Letting an agent autonomously make decisions that cost money, delete data, or affect customers is asking for trouble. Always put humans in the loop for irreversible actions.&lt;/p>
&lt;p>&lt;strong>Creative work that requires taste and judgment.&lt;/strong> Agents can generate options, but they can&amp;rsquo;t tell you which design feels right, which message resonates with your audience, or which technical trade-off aligns with your product strategy. That&amp;rsquo;s still your job.&lt;/p>
&lt;p>&lt;strong>Novel problems they haven&amp;rsquo;t seen before.&lt;/strong> Agents work best within known patterns. When they encounter something truly new, they guess, and those guesses can be confidently wrong.&lt;/p>
&lt;h2 class="relative group">The agent landscape in 2025: what&amp;rsquo;s actually worth using
&lt;div id="the-agent-landscape-in-2025-whats-actually-worth-using" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-agent-landscape-in-2025-whats-actually-worth-using" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The market has exploded with agent platforms, frameworks, and tools. Some are genuinely useful. Many are solutions looking for problems. Here&amp;rsquo;s what matters for builders.&lt;/p>
&lt;h3 class="relative group">Cloud platforms: fast to start, limited control
&lt;div id="cloud-platforms-fast-to-start-limited-control" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#cloud-platforms-fast-to-start-limited-control" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>OpenAI Agents SDK&lt;/strong> (&lt;a
href="https://github.com/openai/openai-agents-python/"
target="_blank"
>GitHub&lt;/a>) is the easiest path to a working agent if you&amp;rsquo;re already in the OpenAI ecosystem. The Responses API handles multi-step workflows, and the Agents SDK adds tool calling, file handling, and web search. You can connect it to your systems through MCP (Model Context Protocol).&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Fast iteration. Strong model quality. Built-in safety controls. Web search and computer use features that let agents interact with browser interfaces.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> You&amp;rsquo;re locked into OpenAI&amp;rsquo;s infrastructure. Cost control requires discipline. Less flexibility than open-source approaches.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> Rapid prototyping, proof of concepts, or production systems where convenience matters more than control.&lt;/p>
&lt;p>&lt;strong>Microsoft&amp;rsquo;s agent stack&lt;/strong> spans multiple products: (&lt;a
href="https://azure.microsoft.com/en-us/products/ai-foundry/agent-service"
target="_blank"
>Azure AI Foundry Agent Service&lt;/a>) for managed runtime, (&lt;a
href="https://www.microsoft.com/en-us/microsoft-365-copilot/microsoft-copilot-studio"
target="_blank"
>Copilot Studio&lt;/a>) for low-code multi-agent orchestration, and Semantic Kernel (&lt;a
href="https://github.com/microsoft/semantic-kernel"
target="_blank"
>GitHub&lt;/a>) for custom development.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Deep integration with Microsoft 365 and Azure. Enterprise governance and security built in. Computer use for automating legacy systems without APIs.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Complex product surface area. Licensing can get expensive. Best fit if you&amp;rsquo;re already Microsoft-heavy.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You&amp;rsquo;re a Microsoft shop and need agents integrated with Teams, Office, or Azure services.&lt;/p>
&lt;p>&lt;strong>AWS Bedrock Agents&lt;/strong> (&lt;a
href="https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html"
target="_blank"
>docs&lt;/a>) with Guardrails for safety, plus the open-source Strands orchestration framework for multi-agent coordination.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Scales naturally with AWS infrastructure. Strong security posture. Guardrails for Bedrock give you programmable safety controls.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Setup complexity is higher than other platforms. Service-specific features create lock-in.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You&amp;rsquo;re AWS-first and want agents that integrate tightly with your existing cloud stack.&lt;/p>
&lt;p>&lt;strong>Google Vertex AI Agent Builder&lt;/strong> (&lt;a
href="https://cloud.google.com/vertex-ai/generative-ai/docs/reasoning-engine/overview"
target="_blank"
>docs&lt;/a>) includes the Agent Development Kit (ADK), Agent Engine for managed runtime, and Memory Bank for stateful conversations.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Built-in tools for code execution, search, and data access. Agent-to-agent (A2A) protocol for complex orchestrations. Strong if you&amp;rsquo;re GCP-native.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Newer than competitors, so some features are still in preview. Best value comes from using it with other Google Cloud services.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You&amp;rsquo;re on GCP and need agents that work naturally with BigQuery, Cloud Storage, and other Google services.&lt;/p>
&lt;p>&lt;strong>Salesforce Agentforce&lt;/strong> (&lt;a
href="https://www.salesforce.com/agentforce/"
target="_blank"
>announcement&lt;/a>) is purpose-built for customer-facing workflows. If your work lives in Salesforce CRM, Sales, or Service Cloud, Agentforce gives you pre-built templates and deep integration.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Fast deployment for GTM and customer service use cases. Native to the Salesforce ecosystem. API and mobile SDK for custom development.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Best value comes from using it within Salesforce. Less general-purpose than other platforms.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You&amp;rsquo;re a Salesforce shop and need agents for customer operations, sales workflows, or service automation.&lt;/p>
&lt;p>&lt;strong>Databricks Agent Bricks&lt;/strong> (&lt;a
href="https://docs.databricks.com/en/generative-ai/agent-framework/index.html"
target="_blank"
>docs&lt;/a>) is optimized for data and analytics teams. It&amp;rsquo;s tightly integrated with Unity Catalog, MLflow, and the lakehouse architecture.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Natural fit for data-centric agents. Strong evaluation and serving infrastructure. Enterprise governance built in.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Best suited for organizations already on Databricks. Less general-purpose than other frameworks.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You&amp;rsquo;re building data or analytics agents on a lakehouse architecture.&lt;/p>
&lt;h3 class="relative group">Open-source frameworks: maximum flexibility, you run the infrastructure
&lt;div id="open-source-frameworks-maximum-flexibility-you-run-the-infrastructure" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#open-source-frameworks-maximum-flexibility-you-run-the-infrastructure" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>LangGraph&lt;/strong> (&lt;a
href="https://github.com/langchain-ai/langgraph"
target="_blank"
>GitHub&lt;/a>) is the current leader in open-source agent orchestration. It&amp;rsquo;s built on LangChain but designed specifically for stateful, graph-based agent workflows.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> True control over behavior. Graph-based execution lets you see and debug agent reasoning. Built-in persistence, retries, and human-in-the-loop patterns. Huge ecosystem of integrations. Works with any LLM.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> You manage the infrastructure. Steeper learning curve than managed platforms. You&amp;rsquo;re responsible for safety and guardrails.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You need maximum flexibility, want to avoid vendor lock-in, or have requirements that managed platforms can&amp;rsquo;t meet.&lt;/p>
&lt;p>&lt;strong>LlamaIndex&lt;/strong> (&lt;a
href="https://github.com/run-llama/llama_index"
target="_blank"
>GitHub&lt;/a>) focuses on data-centric agents. If your agent needs to work with documents, databases, and complex data sources, LlamaIndex has the deepest RAG (retrieval-augmented generation) tooling.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Excellent data connectors. AgentWorkflows for multi-agent patterns. Strong at combining structured and unstructured data.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Narrower focus than general-purpose frameworks. Best suited for data and knowledge work.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> Your agents primarily work with documents, databases, and knowledge bases.&lt;/p>
&lt;p>&lt;strong>CrewAI&lt;/strong> (&lt;a
href="https://github.com/crewAIInc/crewAI"
target="_blank"
>GitHub&lt;/a>) is opinionated about multi-agent teams. You define roles, assign skills, and CrewAI orchestrates collaboration between agents.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Simple mental model. Fast growing community. Good for scenarios where you want specialized agents working together.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Less low-level control than LangGraph. Opinionated design means you work within its patterns.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You want team-of-agents patterns without building orchestration from scratch.&lt;/p>
&lt;p>&lt;strong>Haystack&lt;/strong> (&lt;a
href="https://github.com/deepset-ai/haystack"
target="_blank"
>GitHub&lt;/a>) from deepset is production-grade RAG plus agents. It&amp;rsquo;s mature, well-documented, and has clear patterns for evaluation and deployment.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s good:&lt;/strong> Battle-tested in production. Pipeline model is easy to reason about. Good observability and eval integration.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s limited:&lt;/strong> Less flexible than LangGraph for complex agent behaviors. Optimized for RAG-heavy workflows.&lt;/p>
&lt;p>&lt;strong>When to use it:&lt;/strong> You need production-ready RAG with agent capabilities, and you value stability over cutting-edge features.&lt;/p>
&lt;h3 class="relative group">Safety and observability: the unsexy stuff that matters
&lt;div id="safety-and-observability-the-unsexy-stuff-that-matters" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#safety-and-observability-the-unsexy-stuff-that-matters" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>NVIDIA NeMo Guardrails&lt;/strong> (&lt;a
href="https://github.com/NVIDIA/NeMo-Guardrails"
target="_blank"
>GitHub&lt;/a>) is the most programmable safety layer. It works across different stacks and lets you define explicit policies for what agents can and can&amp;rsquo;t do.&lt;/p>
&lt;p>&lt;strong>Why this matters:&lt;/strong> Agents without guardrails will eventually do something you didn&amp;rsquo;t intend. NeMo lets you prevent that proactively with code, not hope.&lt;/p>
&lt;p>&lt;strong>LangSmith&lt;/strong> (&lt;a
href="https://www.langchain.com/langsmith"
target="_blank"
>site&lt;/a>), &lt;strong>Arize Phoenix&lt;/strong> (&lt;a
href="https://github.com/Arize-ai/phoenix"
target="_blank"
>GitHub&lt;/a>), and &lt;strong>Weights &amp;amp; Biases Weave&lt;/strong> (&lt;a
href="https://wandb.ai/site/weave"
target="_blank"
>docs&lt;/a>) give you observability into what your agents are actually doing. Trace every step, see every tool call, measure quality and cost.&lt;/p>
&lt;p>&lt;strong>Why this matters:&lt;/strong> Agents are black boxes without instrumentation. When something goes wrong (and it will), you need to see exactly what happened. When costs spike, you need to know why.&lt;/p>
&lt;h2 class="relative group">Making the right choice for your situation
&lt;div id="making-the-right-choice-for-your-situation" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#making-the-right-choice-for-your-situation" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The landscape is crowded, but the decision framework is straightforward.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re already invested in a cloud ecosystem:&lt;/strong>&lt;/p>
&lt;p>Go with your cloud provider&amp;rsquo;s agent platform. The integration is easier, the security model aligns with your existing setup, and you leverage investments you&amp;rsquo;ve already made.&lt;/p>
&lt;ul>
&lt;li>Microsoft 365/Azure heavy → Microsoft&amp;rsquo;s agent stack&lt;/li>
&lt;li>AWS infrastructure → Bedrock Agents with Guardrails&lt;/li>
&lt;li>GCP and BigQuery → Vertex AI Agent Builder&lt;/li>
&lt;li>Salesforce for GTM → Agentforce&lt;/li>
&lt;li>Databricks lakehouse → Agent Bricks&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>If you need maximum flexibility and control:&lt;/strong>&lt;/p>
&lt;p>Start with LangGraph. It&amp;rsquo;s the most mature open-source orchestration framework with the largest ecosystem. Add LlamaIndex for data-intensive work, NeMo Guardrails for safety, and LangSmith for observability.&lt;/p>
&lt;p>&lt;strong>If you want to move fast with minimal setup:&lt;/strong>&lt;/p>
&lt;p>OpenAI Agents SDK gets you running quickest. Strong defaults, good documentation, integrated tools. Accept the vendor lock-in as the trade-off for speed.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re in a regulated industry or have strict compliance needs:&lt;/strong>&lt;/p>
&lt;p>Microsoft&amp;rsquo;s agent stack or AWS Bedrock give you the enterprise controls and audit trails you&amp;rsquo;ll need. NVIDIA NeMo Guardrails works across platforms if you need programmable safety.&lt;/p>
&lt;h2 class="relative group">What matters more than the platform
&lt;div id="what-matters-more-than-the-platform" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-matters-more-than-the-platform" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The platform choice matters less than these fundamentals:&lt;/p>
&lt;p>&lt;strong>Clear problem definition.&lt;/strong> Vague goals produce vague results. Agents need specific, measurable success criteria.&lt;/p>
&lt;p>&lt;strong>Proper guardrails from day one.&lt;/strong> Safety isn&amp;rsquo;t something you add later. Build it in from the start.&lt;/p>
&lt;p>&lt;strong>Observability and measurement.&lt;/strong> You can&amp;rsquo;t improve what you can&amp;rsquo;t see. Instrument everything.&lt;/p>
&lt;p>&lt;strong>Realistic expectations.&lt;/strong> Agents augment human judgment, they don&amp;rsquo;t replace it. The best results come from thoughtful human-agent collaboration.&lt;/p>
&lt;p>&lt;strong>Iterative refinement.&lt;/strong> Your first agent won&amp;rsquo;t be great. That&amp;rsquo;s fine. Build, test, learn, improve.&lt;/p>
&lt;h2 class="relative group">For engineering leaders: the strategic opportunity
&lt;div id="for-engineering-leaders-the-strategic-opportunity" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-engineering-leaders-the-strategic-opportunity" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you lead a team or organization, AI agents represent more than a productivity tool. They&amp;rsquo;re a forcing function for operational clarity.&lt;/p>
&lt;p>&lt;strong>The immediate play:&lt;/strong> Teams with well-designed agents handle more work with the same headcount, or maintain output with less burnout. The productivity gains are real and measurable.&lt;/p>
&lt;p>&lt;strong>The deeper value:&lt;/strong> Building agents forces you to clarify processes, document decisions, and standardize workflows. That organizational clarity compounds beyond just the agents themselves.&lt;/p>
&lt;p>&lt;strong>The investment thesis:&lt;/strong> Start small with focused agents solving specific problems. Build expertise through real use. Expand as you learn what works in your specific context.&lt;/p>
&lt;p>&lt;strong>The approach that works:&lt;/strong> Don&amp;rsquo;t mandate top-down. Let teams build agents for their own pain points. Provide infrastructure, guidelines, and shared learnings. The best agents emerge from people solving their own problems.&lt;/p>
&lt;p>&lt;strong>The risks to watch:&lt;/strong> Agents without guardrails. Agents without observability. Agents that automate broken processes. Teams that become dependent without understanding the underlying work.&lt;/p>
&lt;p>&lt;strong>The goal:&lt;/strong> Leveraged productivity, not maximum automation. Free your team from repetitive cognitive work so they can focus on problems requiring judgment, creativity, and expertise.&lt;/p>
&lt;h2 class="relative group">For developers: why this matters to your career
&lt;div id="for-developers-why-this-matters-to-your-career" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-developers-why-this-matters-to-your-career" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Building agents isn&amp;rsquo;t specialist knowledge. It&amp;rsquo;s becoming table stakes for productive developers.&lt;/p>
&lt;p>&lt;strong>The skill combination that&amp;rsquo;s valuable:&lt;/strong> Understanding both AI capabilities and production systems. How to give AI the right context without compromising security. How to design integrations that teams actually use.&lt;/p>
&lt;p>&lt;strong>What&amp;rsquo;s valuable right now:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Using existing agent frameworks effectively&lt;/li>
&lt;li>Building focused agents for specific workflows&lt;/li>
&lt;li>Implementing proper security and guardrails&lt;/li>
&lt;li>Designing integrations that scale&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>What becomes more valuable:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Deep expertise in agent orchestration patterns&lt;/li>
&lt;li>Domain-specific integration knowledge&lt;/li>
&lt;li>Platform-level thinking about AI-system connections&lt;/li>
&lt;li>Security and compliance for AI integrations&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The trajectory:&lt;/strong> Developers who can build reliable agents that solve real problems are differentiating themselves. Not because it&amp;rsquo;s exotic, but because it&amp;rsquo;s practical infrastructure work that delivers measurable value.&lt;/p>
&lt;h2 class="relative group">What separates success from expensive failure
&lt;div id="what-separates-success-from-expensive-failure" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-separates-success-from-expensive-failure" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Most AI agent projects fail. Not because the technology isn&amp;rsquo;t ready, but because teams skip fundamentals.&lt;/p>
&lt;p>They build before understanding the problem. They automate before adding guardrails. They deploy before instrumenting. They scale before validating.&lt;/p>
&lt;p>&lt;strong>The agents that work share common traits:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Focused on specific, well-defined problems&lt;/li>
&lt;li>Built with clear boundaries and safety controls&lt;/li>
&lt;li>Instrumented from day one with proper observability&lt;/li>
&lt;li>Validated with real use before broad deployment&lt;/li>
&lt;li>Maintained and improved based on actual usage patterns&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The discipline required is higher than traditional development.&lt;/strong> Agents make autonomous decisions. Mistakes compound. Poor judgment scales. You need to be more thoughtful, not less.&lt;/p>
&lt;p>But when done right, the leverage is real. Work that took hours happens in minutes. Repetitive cognitive tasks disappear. Context gathering becomes automatic. Teams handle more complexity with less stress.&lt;/p>
&lt;h2 class="relative group">Where to start
&lt;div id="where-to-start" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-to-start" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Understanding the landscape is step one. Building something real is step two.&lt;/p>
&lt;p>In my &lt;a
href="https://pinishv.com/articles/build-your-first-ai-agent-this-week/"
target="_blank"
>next article&lt;/a>, I&amp;rsquo;ll walk through the practical steps: picking the right first problem, setting up your tools, building a working agent in a week, and deploying it to your team. The tactical guide to actually shipping.&lt;/p>
&lt;p>For now, the strategic takeaway is clear: AI agents work when they&amp;rsquo;re focused, bounded, and built for specific workflows. The platform matters less than the approach.&lt;/p>
&lt;p>&lt;strong>The teams winning with agents aren&amp;rsquo;t the ones with the best strategy.&lt;/strong> They&amp;rsquo;re the ones who started experimenting months ago and never stopped learning.&lt;/p>
&lt;p>Start small. Build focused. Measure ruthlessly. The productivity gains compound faster than you&amp;rsquo;d expect.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Key resources:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a
href="https://langchain-ai.github.io/langgraph/"
target="_blank"
>LangGraph documentation&lt;/a> for open-source agent orchestration&lt;/li>
&lt;li>&lt;a
href="https://github.com/openai/openai-agents-python"
target="_blank"
>OpenAI Agents SDK&lt;/a> for managed agent development&lt;/li>
&lt;li>&lt;a
href="https://github.com/microsoft/semantic-kernel"
target="_blank"
>Microsoft Semantic Kernel&lt;/a> for multi-language agent development&lt;/li>
&lt;li>&lt;a
href="https://github.com/NVIDIA/NeMo-Guardrails"
target="_blank"
>NVIDIA NeMo Guardrails&lt;/a> for cross-platform safety controls&lt;/li>
&lt;li>&lt;a
href="https://www.langchain.com/langsmith"
target="_blank"
>LangSmith&lt;/a> for agent observability and debugging&lt;/li>
&lt;/ul>
&lt;p>The gap between AI agent demos and actual productivity is understanding what works and what doesn&amp;rsquo;t. Then building accordingly.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/build-your-own-ai-agents-for-real-productivity/feature.png"/></item><item><title>What's Holding You Back from Succeeding in the AI Era?</title><link>https://pinishv.com/articles/whats-holding-you-back-from-succeeding-in-the-ai-era/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/whats-holding-you-back-from-succeeding-in-the-ai-era/</guid><description>I&amp;rsquo;ve watched teams double their output with AI, and I&amp;rsquo;ve also seen developers stall and managers struggle. The difference isn&amp;rsquo;t the tools, it&amp;rsquo;s what gets exposed when AI handles the grunt work.</description><content:encoded>&lt;p>I&amp;rsquo;ve been experimenting with AI in development teams. Some experiments have gone well. Developers shipping faster, workflows getting streamlined, genuine productivity gains. Others&amp;hellip; not so much. I&amp;rsquo;m still figuring this out, honestly, but I keep running into patterns that concern me.&lt;/p>
&lt;p>Last week, something happened that crystallized these concerns.&lt;/p>
&lt;p>A developer I know (let&amp;rsquo;s call him Marcus) was excited to show me his GitHub stats. Impressive numbers: 247 commits in a month, 23 features shipped, velocity charts trending up. His manager was thrilled. Out of curiosity, I asked him to walk me through the architecture of a feature he&amp;rsquo;d shipped recently. Simple question: &amp;ldquo;Why did you structure the caching layer this way?&amp;rdquo;&lt;/p>
&lt;p>He paused. Then admitted he wasn&amp;rsquo;t sure. The AI had suggested it. It worked. He shipped it. Three days later, that feature caused a production incident. Forty minutes of downtime. Significant revenue impact. All because he&amp;rsquo;d implemented architecture decisions he didn&amp;rsquo;t fully understand.&lt;/p>
&lt;p>&lt;strong>Marcus isn&amp;rsquo;t failing because AI isn&amp;rsquo;t good enough. He&amp;rsquo;s failing because he&amp;rsquo;s gotten really good at using AI without building the judgment to evaluate what it produces.&lt;/strong>&lt;/p>
&lt;p>This got me thinking about something I&amp;rsquo;m noticing more often. Not that AI will replace developers (I don&amp;rsquo;t think that&amp;rsquo;s the real risk), but that we might be accidentally creating developers who move fast but think shallow, and managers who confuse speed with capability. The numbers are striking: by 2028, 90% of enterprise software engineers will likely be using AI code assistants, up from less than 14% in early 2024. Yet 77% of engineering leaders see integrating AI as a major challenge.&lt;/p>
&lt;p>&lt;strong>Maybe the issue isn&amp;rsquo;t AI itself. Maybe it&amp;rsquo;s that AI amplifies whatever approach you already have.&lt;/strong> If you think deeply about problems, AI helps you think faster. If you don&amp;rsquo;t&amp;hellip; well, AI helps you not-think faster too.&lt;/p>
&lt;p>I&amp;rsquo;m starting to see a pattern in how this plays out, and I think it&amp;rsquo;s worth sharing what I&amp;rsquo;ve noticed.&lt;/p>
&lt;h2 class="relative group">The Great Divide: Marcus vs. Sarah
&lt;div id="the-great-divide-marcus-vs-sarah" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-great-divide-marcus-vs-sarah" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>We&amp;rsquo;re accidentally creating a divide. Not between people who use AI and people who don&amp;rsquo;t, but between those who let AI carry them and those who use it to leap forward.&lt;/p>
&lt;p>Marcus represents the first group. There&amp;rsquo;s another developer I&amp;rsquo;ll call Sarah who seems to represent the second. Same company, similar experience level, both use AI heavily. But when I asked Sarah the same architecture question, she didn&amp;rsquo;t just answer. She walked me through her reasoning: the trade-offs she&amp;rsquo;d considered, why she&amp;rsquo;d rejected the AI&amp;rsquo;s first two suggestions (one would have created a memory leak under load, the other couldn&amp;rsquo;t scale horizontally), what she&amp;rsquo;d validated before shipping, and what monitoring she&amp;rsquo;d added because she knew this approach had specific failure modes under network latency.&lt;/p>
&lt;p>Sarah&amp;rsquo;s velocity? Nearly identical to Marcus&amp;rsquo;s. But Sarah&amp;rsquo;s code doesn&amp;rsquo;t cause incidents. When it does break (because all code eventually breaks) she diagnoses it in minutes, not hours. She&amp;rsquo;s using AI to move faster, but her understanding of systems architecture is actually deepening. She treats AI as a thinking partner that suggests solutions, which she then stress-tests against her mental model of how distributed systems behave.&lt;/p>
&lt;p>&lt;strong>The difference between them isn&amp;rsquo;t talent. It&amp;rsquo;s approach.&lt;/strong> Marcus accepts AI suggestions that look good on the surface. Sarah interrogates them. Marcus ships fast. Sarah ships right. Marcus is becoming dependent. Sarah is becoming more capable.&lt;/p>
&lt;p>And here&amp;rsquo;s what makes this dangerous: for the first six months, they look identical on paper. Same velocity, same feature throughput, same commit frequency. The difference only emerges when systems hit scale, when architectural decisions made months ago come home to roost. By then, Marcus has shipped dozens of features built on shaky foundations, and the technical debt is crushing.&lt;/p>
&lt;h2 class="relative group">The Self-Deception Patterns
&lt;div id="the-self-deception-patterns" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-self-deception-patterns" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Beyond the Marcus/Sarah divide, I&amp;rsquo;m noticing three patterns that seem to lead to struggles:&lt;/p>
&lt;p>&lt;strong>The Resisters&lt;/strong> refuse to engage with AI at all. I know a brilliant engineer who was convinced Copilot would &amp;ldquo;rot their brain.&amp;rdquo; Six months later, they were frustrated and behind, trying to catch up with tools they didn&amp;rsquo;t understand while everyone else had already learned to use them thoughtfully.&lt;/p>
&lt;p>&lt;strong>The Checkbox Adopters&lt;/strong> use AI just enough to say they&amp;rsquo;re using it. They&amp;rsquo;ll accept a Copilot suggestion here and there, maybe prompt ChatGPT when really stuck, but fundamentally they&amp;rsquo;re doing things the old way with a thin veneer of AI adoption. They think this is a safe middle ground. It&amp;rsquo;s actually the worst of both worlds. They&amp;rsquo;re not building deep AI collaboration skills because they&amp;rsquo;re not truly engaging. And they&amp;rsquo;re not building deep foundational skills because they&amp;rsquo;re using AI as a crutch for the things they don&amp;rsquo;t want to learn properly.&lt;/p>
&lt;p>Meanwhile, the AI world makes huge leaps forward monthly. Not yearly. &lt;strong>Monthly&lt;/strong>. If you learned Copilot in 2023 and called it done, you&amp;rsquo;re falling behind while convincing yourself you&amp;rsquo;re staying current. The gap between you and people actively learning these tools isn&amp;rsquo;t just widening. It&amp;rsquo;s compounding like interest you can&amp;rsquo;t afford.&lt;/p>
&lt;p>&lt;strong>The Manager&amp;rsquo;s Blind Spot&lt;/strong> might be the most concerning. I&amp;rsquo;m hearing more managers wonder if they still need developers at all. AI can write code, ship features, fix bugs. Why keep investing in expensive engineering talent when AI does it faster and cheaper?&lt;/p>
&lt;p>I think this is a dangerous miscalculation. They do still need developers. Desperately. But they need a fundamentally different kind. They need developers who can see the whole picture, who can challenge AI when it&amp;rsquo;s wrong, who understand both the product vision and the code architecture deeply enough to orchestrate AI effectively.&lt;/p>
&lt;h2 class="relative group">From Privates to Generals
&lt;div id="from-privates-to-generals" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#from-privates-to-generals" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Think about it this way: if AI can write the code, you don&amp;rsquo;t need code writers anymore. You need &lt;strong>generals who can command an AI army.&lt;/strong>&lt;/p>
&lt;p>I mean this literally. In military terms, a private follows orders and executes tasks. A general orchestrates entire campaigns: seeing the terrain, understanding the objective, marshaling resources, adapting to changing conditions, and making strategic decisions that ripple across the entire operation.&lt;/p>
&lt;p>That&amp;rsquo;s what developers need to become. Someone who can define the business problem, set architectural constraints, establish quality bars, plan rollout strategy, and then marshal multiple AI tools to execute on that vision while maintaining coherence across the system. Someone who spots when the AI is headed down the wrong path, not because they read every line of generated code, but because they understand the system deeply enough to catch the architectural smell.&lt;/p>
&lt;p>The private-to-general shift isn&amp;rsquo;t about seniority. It&amp;rsquo;s about thinking level. I&amp;rsquo;ve seen 25-year-old developers who think like generals and 45-year-old senior engineers who still think like privates. The generals understand systems, trade-offs, second-order effects. The privates understand syntax.&lt;/p>
&lt;p>Most managers are still hiring and evaluating for privates while wondering why their team can&amp;rsquo;t handle complexity. They&amp;rsquo;re measuring lines of code, tickets closed, features shipped (all private-level metrics). They should be measuring systems thinking, architectural coherence, the ability to spot when AI suggestions don&amp;rsquo;t fit the bigger picture, and the judgment to maintain quality at AI-augmented speed.&lt;/p>
&lt;h2 class="relative group">The Invisible Barriers
&lt;div id="the-invisible-barriers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-invisible-barriers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>From what I&amp;rsquo;ve observed working with teams going through this transition, there seem to be five core barriers:&lt;/p>
&lt;p>&lt;strong>The Fundamentals Gap:&lt;/strong> I&amp;rsquo;ve interviewed developers who learned to code entirely in the AI era. They&amp;rsquo;ve never written a hundred lines without Copilot running. They can ship features fast, but they can&amp;rsquo;t debug when the AI steers them wrong because they&amp;rsquo;re missing the mental models that tell you when something smells off. It&amp;rsquo;s like someone who learned to navigate exclusively with GPS suddenly needing to read a map and orient themselves by landmarks. The skill atrophied before it fully developed.&lt;/p>
&lt;p>&lt;strong>The Management Gap:&lt;/strong> When AI handles syntax, what remains is collaboration, problem decomposition, and creative solutions to ambiguous problems. But many engineering managers rose through the ranks by being excellent individual contributors. They know how to review a pull request, but not how to review someone&amp;rsquo;s AI collaboration process. They can spot a memory leak, but they can&amp;rsquo;t spot a team that&amp;rsquo;s becoming dependent on tools that mask their fundamental skill gaps.&lt;/p>
&lt;p>&lt;strong>The Ethics and Security Blind Spot:&lt;/strong> Bias in AI-generated code isn&amp;rsquo;t just a headline. I&amp;rsquo;ve heard about recommendation algorithms that worked perfectly in testing but systematically disadvantaged certain user groups in production because the training data was skewed. Data privacy leaks happen when someone prompts ChatGPT with actual customer data to debug an issue, and suddenly proprietary information is in OpenAI&amp;rsquo;s training corpus. These risks are real and can be project killers.&lt;/p>
&lt;p>&lt;strong>The Burnout Nobody Saw Coming:&lt;/strong> I know a developer (call him Jason) who went from energized to exhausted in several months of heavy AI use. He wasn&amp;rsquo;t working more hours. But the cognitive load was crushing him. Before AI, natural breaks were built into his workflow: write code, get stuck, think through the problem, research solutions. With AI, the suggestions come instantly. The code appears. The tests pass. The features ship. There&amp;rsquo;s no natural stopping point. Jason told me: &amp;ldquo;I used to finish a feature and feel done. Now I finish a feature and immediately have three AI-generated options for the next one waiting for review. I&amp;rsquo;m not coding more, but I&amp;rsquo;m deciding constantly. My brain never gets to rest.&amp;rdquo; The pressure isn&amp;rsquo;t about hours anymore. It&amp;rsquo;s about attention.&lt;/p>
&lt;p>&lt;strong>The Skill Gap:&lt;/strong> AI won&amp;rsquo;t make engineers obsolete. It&amp;rsquo;ll automate the repetitive work and free you for complex problem-solving. But only if you develop those complex problem-solving skills. If you spend all your time prompting and none of your time learning fundamentals, you&amp;rsquo;re not building a career. You&amp;rsquo;re becoming an AI operator. And when the AI gets better, what value do you bring?&lt;/p>
&lt;h2 class="relative group">What Works for Managers
&lt;div id="what-works-for-managers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-works-for-managers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you lead a team or a group, you&amp;rsquo;re in the position to shape how AI gets adopted. But first, get honest with yourself about what you actually need. You don&amp;rsquo;t need a team that can write code faster. You need a team of AI generals.&lt;/p>
&lt;p>Here&amp;rsquo;s what seems to be working from what I&amp;rsquo;ve observed:&lt;/p>
&lt;p>&lt;strong>Institute AI literacy training, but make it real.&lt;/strong> I suggest to a team to try &amp;ldquo;fundamentals Fridays.&amp;rdquo; For two hours every Friday afternoon, no AI tools. Period. They work through algorithm problems from scratch, debug performance issues with just a profiler and their understanding of systems, and review code the old-fashioned way. The first few weeks, developers hated it. Three months in, something shifted. They started catching subtle bugs in AI-generated code they would have missed before. They became the team&amp;rsquo;s quality gatekeepers, not because they rejected AI, but because they could evaluate it critically. Meanwhile, I know about teams that went all-in on AI without fundamentals training having much higher incident rates and senior engineer burnout.&lt;/p>
&lt;p>&lt;strong>Set KPIs around quality, not just speed.&lt;/strong> Track code review depth. Measure incident resolution time and root cause quality. Monitor technical debt accumulation. If you only measure velocity, you&amp;rsquo;ll get velocity at the cost of everything else that matters.&lt;/p>
&lt;p>&lt;strong>Prioritize soft skills development.&lt;/strong> Run exercises where developers explain AI outputs in plain English to non-technical stakeholders. If they can&amp;rsquo;t explain why the AI suggested an approach, they probably shouldn&amp;rsquo;t ship it.&lt;/p>
&lt;p>&lt;strong>Implement ethical guidelines before you need them.&lt;/strong> Create clear policies for AI use: what data can go into prompts, what outputs require human review, how to audit for bias, what the security boundaries are. We want those teams that are avoiding serious incidents not because they got lucky, but because they&amp;rsquo;ve thought through the risks ahead of time.&lt;/p>
&lt;p>&lt;strong>Promote work-life balance aggressively.&lt;/strong> Enforce no-AI-after-hours rules if you need to. Set clear boundaries to prevent the 24/7 treadmill. Burnout destroys teams slowly, then all at once.&lt;/p>
&lt;p>&lt;strong>Invest in upskilling with real budget and real time.&lt;/strong> McKinsey&amp;rsquo;s research highlights that AI accelerates innovation in software development, but only with skilled teams. Make continuous learning part of the job, not something people do on weekends.&lt;/p>
&lt;h2 class="relative group">What Works for Developers
&lt;div id="what-works-for-developers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-works-for-developers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;re a developer, you have more control over your trajectory than you might think. Don&amp;rsquo;t wait for your company to figure this out. Take ownership of your growth.&lt;/p>
&lt;p>&lt;strong>Master the fundamentals alongside the tools.&lt;/strong> Spend time every week coding without AI. Implement algorithms from scratch. Debug performance issues using only profiling tools and your understanding of systems. This feels inefficient in the moment. You could ship faster with Copilot. But this is the time investment that makes you valuable. When you&amp;rsquo;re the person in the room who can debug the AI&amp;rsquo;s output, who can spot architectural problems before they ship, who can make trade-offs that the model can&amp;rsquo;t understand, that&amp;rsquo;s when you become indispensable.&lt;/p>
&lt;p>&lt;strong>Stay actively current, not passively aware.&lt;/strong> The AI landscape moves at a pace I&amp;rsquo;ve never seen before in my career. What&amp;rsquo;s cutting-edge this month is table stakes next month. One way to stay up to date is to follow me - I regularly share insights about new AI developments and how they impact software development. Beyond that, learn one new AI-related skill or tool every month, minimum. Not just surface-level &amp;ldquo;I tried it once.&amp;rdquo; Actually integrate it into your workflow and understand its strengths and limitations. Read about what&amp;rsquo;s working in production. Try new models when they drop. Understand what changes when context windows expand from 200K to 1M tokens. Stop lying to yourself that minimal engagement is enough. The gap is widening monthly.&lt;/p>
&lt;p>&lt;strong>Hone your soft skills deliberately.&lt;/strong> This isn&amp;rsquo;t fluffy advice. It&amp;rsquo;s career-critical. Join every code review you can. Present your work to the team regularly. Practice explaining technical decisions to non-technical people. Work on your writing. Clear documentation is a superpower in an AI-augmented world. AI can&amp;rsquo;t replace your storytelling. It can&amp;rsquo;t replicate your ability to build consensus, to read the room, to know when to push an idea and when to let it go.&lt;/p>
&lt;p>&lt;strong>Stay ethical and secure by default.&lt;/strong> Always validate AI outputs for bias and security implications. Make it a habit. Study real cases of AI projects that failed, not to be scared, but to learn the patterns of what goes wrong. When you&amp;rsquo;re prompting, be paranoid about what data you&amp;rsquo;re including.&lt;/p>
&lt;p>&lt;strong>Manage your time and energy like the finite resources they are.&lt;/strong> Track your productivity not just in features shipped, but in energy levels and work satisfaction. When you notice the treadmill speeding up, push back. The fastest way to stall your career is to burn out and need many months to recover.&lt;/p>
&lt;h2 class="relative group">The Uncomfortable Truth About What Comes Next
&lt;div id="the-uncomfortable-truth-about-what-comes-next" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-uncomfortable-truth-about-what-comes-next" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Remember Marcus and Sarah from the beginning? Same tools, same company, similar experience. One caused a six-figure production incident. The other is becoming a more capable engineer every week.&lt;/p>
&lt;p>The gap between them isn&amp;rsquo;t widening linearly. It&amp;rsquo;s widening exponentially.&lt;/p>
&lt;p>One year from now, Marcus will be even more dependent on AI because that&amp;rsquo;s the only way he knows how to work. When the AI fails (and it will, because all tools fail) he&amp;rsquo;ll be stuck. When his manager finally realizes he&amp;rsquo;s been shipping fast but shallow, his career trajectory will have already calcified.&lt;/p>
&lt;p>Sarah will be leading architecture discussions. She&amp;rsquo;ll be mentoring other developers on how to use AI effectively. She&amp;rsquo;ll be the person who gets pulled into critical incidents because she can diagnose systemic problems, not just fix symptoms. She&amp;rsquo;ll be positioned for the next level of responsibility because she&amp;rsquo;s demonstrated judgment, not just velocity.&lt;/p>
&lt;p>&lt;strong>The market is already splitting, and it&amp;rsquo;s splitting fast.&lt;/strong> There are developers who think deeply, paired with AI that moves fast. There are managers who lead boldly, building teams that thrive because of AI, not despite it. These people are pulling ahead at a pace that would have seemed impossible five years ago. They&amp;rsquo;re not working longer hours. They&amp;rsquo;re working with deeper understanding and sharper judgment.&lt;/p>
&lt;p>Then there are people getting left behind, not because they&amp;rsquo;re not using AI, but because they&amp;rsquo;re using it wrong. They&amp;rsquo;re over-relying without building foundations. They&amp;rsquo;re resisting out of fear. They&amp;rsquo;re engaging halfway and calling it done. They look productive today, but they&amp;rsquo;re accumulating a debt (technical, intellectual, professional) that will come due in ways they don&amp;rsquo;t yet understand.&lt;/p>
&lt;p>McKinsey&amp;rsquo;s 2025 outlook shows that AI&amp;rsquo;s impact grows when combined with human ingenuity, not when it replaces it. The differentiator isn&amp;rsquo;t whether you use AI. By 2028, everyone will. The differentiator is whether you use it as a boost or a crutch. Whether you&amp;rsquo;re becoming more capable or more dependent. Whether you&amp;rsquo;re building judgment or eroding it.&lt;/p>
&lt;h2 class="relative group">Your Move
&lt;div id="your-move" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#your-move" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Marcus can still become Sarah. Sarah could still become Marcus if she gets lazy. The trajectory isn&amp;rsquo;t fixed, but it&amp;rsquo;s compounding, and the gap widens every month.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re a manager:&lt;/strong> Your job right now is to build teams of generals, not privates. That means investing in skills deliberately, setting boundaries aggressively, creating psychological safety for experimentation, and holding quality bars even when it&amp;rsquo;s easier to ship fast and sloppy. It means measuring the right things: systems thinking, architectural coherence, AI collaboration effectiveness, judgment under pressure.&lt;/p>
&lt;p>&lt;strong>If you&amp;rsquo;re a developer:&lt;/strong> Your job is to become someone who elevates AI, not someone who&amp;rsquo;s elevated by it. That means mastering fundamentals while learning tools. Staying actively current, not passively aware. Building soft skills that AI can&amp;rsquo;t replicate. Maintaining the judgment that separates generals from privates. Treating AI as a thinking partner, not an autopilot.&lt;/p>
&lt;p>The AI era isn&amp;rsquo;t about surviving. It&amp;rsquo;s about succeeding. The people who succeed will be the ones who overcome these barriers deliberately, who build both their AI collaboration skills and their independent judgment in parallel, who understand that velocity without understanding is just speed toward the cliff.&lt;/p>
&lt;p>Six months from now, you&amp;rsquo;ll either be further ahead or further behind than you are today. The compounding has already started. The question isn&amp;rsquo;t whether the AI era is here. It&amp;rsquo;s whether you&amp;rsquo;ll be one of the people who define it or one of the people left wondering what happened.&lt;/p>
&lt;p>&lt;strong>So here&amp;rsquo;s my question for you: Which path are you choosing today?&lt;/strong>&lt;/p>
&lt;p>Not tomorrow. Not when you have more time. Not when things settle down. Today.&lt;/p>
&lt;p>What&amp;rsquo;s your first step?&lt;/p>
&lt;hr>
&lt;p>&lt;em>The gap between teams that successfully navigate the AI transition and those that struggle often comes down to intentional strategy around skill development and quality standards. If you&amp;rsquo;re wrestling with how to build AI-augmented teams that maintain deep engineering capability, I&amp;rsquo;m always up for a conversation.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/whats-holding-you-back-from-succeeding-in-the-ai-era/feature.png"/></item><item><title>Model Context Protocol: The Missing Connection Between AI and Your Real Work</title><link>https://pinishv.com/articles/model-context-protocol-connecting-ai-to-your-real-work/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/model-context-protocol-connecting-ai-to-your-real-work/</guid><description>Your AI coding assistant is blind to your company&amp;rsquo;s actual context. MCP fixes that. Here&amp;rsquo;s how to connect Claude, ChatGPT, and Cursor to your databases, documentation, and workflows—and why this changes everything about how we build software.</description><content:encoded>&lt;p>Your AI coding assistant can write impressive code. But it can&amp;rsquo;t read your company&amp;rsquo;s database schema, your internal documentation, or your production logs. It doesn&amp;rsquo;t know your team&amp;rsquo;s conventions, your deployment workflows, or why that weird workaround exists in the payment service.&lt;/p>
&lt;p>&lt;strong>This is the context gap.&lt;/strong> And it&amp;rsquo;s why AI tools feel powerful in demos but limited in real work.&lt;/p>
&lt;p>The Model Context Protocol (MCP) is changing that. Not with better models or smarter prompts, but by standardizing how AI connects to the actual systems where your work lives.&lt;/p>
&lt;p>Here&amp;rsquo;s what you need to know, what you can do today, and why this matters more than most AI announcements.&lt;/p>
&lt;h2 class="relative group">The problem MCP solves
&lt;div id="the-problem-mcp-solves" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-problem-mcp-solves" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>AI assistants live in a bubble. They see what you show them: the current file, maybe the conversation history, perhaps a few documentation snippets you paste in.&lt;/p>
&lt;p>&lt;strong>What they don&amp;rsquo;t see:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Your database tables and relationships&lt;/li>
&lt;li>Your API schemas and internal services&lt;/li>
&lt;li>Your Git history and commit patterns&lt;/li>
&lt;li>Your company&amp;rsquo;s documentation and decision records&lt;/li>
&lt;li>Your production metrics and error logs&lt;/li>
&lt;li>Your team&amp;rsquo;s code conventions and architectural patterns&lt;/li>
&lt;/ul>
&lt;p>Every time you switch contexts, you&amp;rsquo;re starting over. The AI has to relearn. You spend time explaining things it should already know.&lt;/p>
&lt;p>&lt;strong>The traditional solution:&lt;/strong> Build custom integrations. Write a plugin that connects Claude to your database. Write another for ChatGPT. Another for Cursor. Maintain them all as things change.&lt;/p>
&lt;p>&lt;strong>This doesn&amp;rsquo;t scale.&lt;/strong> Three AI tools, five data sources, fifteen custom integrations. Then a new AI tool launches and you start over.&lt;/p>
&lt;p>MCP solves this by standardizing the connection layer. Build once, use everywhere.&lt;/p>
&lt;h2 class="relative group">What MCP actually does
&lt;div id="what-mcp-actually-does" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-mcp-actually-does" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;a
href="https://modelcontextprotocol.io/introduction"
target="_blank"
>MCP is an open protocol&lt;/a> that lets AI applications connect to three types of capabilities:&lt;/p>
&lt;p>&lt;strong>1. Resources (what AI can read)&lt;/strong>&lt;/p>
&lt;p>Your databases, files, documentation, APIs. Anything that provides context the AI needs to understand your work.&lt;/p>
&lt;p>Example: Your database exposes its schema as an MCP resource. Now Claude can see your table structure without you pasting it into the chat.&lt;/p>
&lt;p>&lt;strong>2. Tools (what AI can do)&lt;/strong>&lt;/p>
&lt;p>Search operations, API calls, data queries, workflow triggers. Actions the AI can take on your behalf.&lt;/p>
&lt;p>Example: A search tool lets the AI query your documentation. A database tool lets it run read-only queries. A Git tool lets it analyze commit history.&lt;/p>
&lt;p>&lt;strong>3. Prompts (how AI should think)&lt;/strong>&lt;/p>
&lt;p>Templated workflows for specific tasks. Structured ways to guide AI behavior for your team&amp;rsquo;s common patterns.&lt;/p>
&lt;p>Example: A code review prompt that includes your team&amp;rsquo;s specific conventions. An incident analysis prompt that knows your logging structure.&lt;/p>
&lt;h2 class="relative group">Understanding the architecture (if you&amp;rsquo;ve built APIs, you&amp;rsquo;ll get this)
&lt;div id="understanding-the-architecture-if-youve-built-apis-youll-get-this" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#understanding-the-architecture-if-youve-built-apis-youll-get-this" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;ve worked with REST APIs, MCP will feel familiar. It&amp;rsquo;s the same pattern applied to AI integrations.&lt;/p>
&lt;p>&lt;strong>REST API thinking:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Server exposes endpoints (GET /users, POST /orders)&lt;/li>
&lt;li>Client makes requests to those endpoints&lt;/li>
&lt;li>Standard protocol (HTTP) means any client can talk to any server&lt;/li>
&lt;li>Authentication and authorization control access&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>MCP thinking:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Server exposes resources, tools, and prompts&lt;/li>
&lt;li>Client (AI application) discovers and uses those capabilities&lt;/li>
&lt;li>Standard protocol (JSON-RPC) means any MCP client can talk to any MCP server&lt;/li>
&lt;li>Host (container for the AI) enforces permissions and approval&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">The three-layer architecture
&lt;div id="the-three-layer-architecture" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-three-layer-architecture" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>1. Server (your systems)&lt;/strong>&lt;/p>
&lt;p>The MCP server wraps your existing systems and exposes them through a standard interface. This is like building a REST API for your database, except instead of HTTP endpoints, you&amp;rsquo;re exposing MCP resources and tools.&lt;/p>
&lt;p>Example: Your PostgreSQL database gets an MCP server that exposes:&lt;/p>
&lt;ul>
&lt;li>Resources: schema definitions, table structures&lt;/li>
&lt;li>Tools: query execution (read-only to start)&lt;/li>
&lt;li>Prompts: common analysis patterns your team uses&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>2. Client (the connection layer)&lt;/strong>&lt;/p>
&lt;p>The MCP client sits between the AI and the servers. It discovers what&amp;rsquo;s available, routes requests, and handles responses. Think of it like an API gateway, but for AI integrations.&lt;/p>
&lt;p>The client handles:&lt;/p>
&lt;ul>
&lt;li>Connection management to multiple servers&lt;/li>
&lt;li>Capability negotiation (what does this server support?)&lt;/li>
&lt;li>Message routing and response handling&lt;/li>
&lt;li>Security boundaries enforcement&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>3. Host (the orchestrator)&lt;/strong>&lt;/p>
&lt;p>The host is the container that manages everything. It controls which servers the AI can access, enforces approval flows for sensitive operations, and mediates access to the AI model itself.&lt;/p>
&lt;p>This is the security and policy layer. Even if a server offers dangerous tools, the host can require explicit user approval before the AI can invoke them.&lt;/p>
&lt;h3 class="relative group">How it compares to other integration patterns
&lt;div id="how-it-compares-to-other-integration-patterns" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-it-compares-to-other-integration-patterns" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Like REST APIs:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Standard protocol that anyone can implement&lt;/li>
&lt;li>Server/client architecture with clear separation&lt;/li>
&lt;li>Discoverability (list available endpoints/resources)&lt;/li>
&lt;li>Stateless individual operations, stateful sessions&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Like GraphQL:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Clients can discover the schema (what&amp;rsquo;s available)&lt;/li>
&lt;li>Type-safe interactions with JSON Schema validation&lt;/li>
&lt;li>Flexible queries for exactly what you need&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Like OAuth:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Explicit permission and consent flows&lt;/li>
&lt;li>Scoped access to resources&lt;/li>
&lt;li>User remains in control of what AI can access&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Unlike traditional APIs:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Bidirectional communication (servers can request things from clients)&lt;/li>
&lt;li>Built-in support for streaming responses&lt;/li>
&lt;li>Designed specifically for AI-to-system integration&lt;/li>
&lt;li>Security model assumes untrusted AI behavior&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">The transport layer (how data moves)
&lt;div id="the-transport-layer-how-data-moves" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-transport-layer-how-data-moves" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>MCP uses two primary transports:&lt;/p>
&lt;p>&lt;strong>stdio (standard input/output):&lt;/strong> For local processes. The MCP server runs on your machine, communicates through stdin/stdout. Simplest and most secure for desktop applications. This is how Claude Desktop connects to local servers.&lt;/p>
&lt;p>&lt;strong>Streamable HTTP:&lt;/strong> For remote servers. JSON-RPC over HTTP with server-sent events for streaming. Use this when you need team-wide access to a server or want to deploy servers in the cloud.&lt;/p>
&lt;p>&lt;strong>Why this matters:&lt;/strong> Start with stdio (local, simple, secure). Move to HTTP when you need remote access or horizontal scaling.&lt;/p>
&lt;h3 class="relative group">The protocol is simple (intentionally)
&lt;div id="the-protocol-is-simple-intentionally" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-protocol-is-simple-intentionally" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>MCP uses JSON-RPC 2.0. If you&amp;rsquo;ve worked with JSON APIs, the message format will look familiar:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;jsonrpc&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resources/list&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The simplicity is deliberate. Easy to implement, easy to debug, easy to extend.&lt;/p>
&lt;h3 class="relative group">Why this architecture works
&lt;div id="why-this-architecture-works" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-this-architecture-works" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Separation of concerns:&lt;/strong> Servers don&amp;rsquo;t need to know about AI models. AI applications don&amp;rsquo;t need to know about your database internals. The protocol is the contract between them.&lt;/p>
&lt;p>&lt;strong>Composability:&lt;/strong> One AI application can connect to multiple servers. One server can serve multiple clients. Mix and match based on needs.&lt;/p>
&lt;p>&lt;strong>Security boundaries:&lt;/strong> Servers are isolated from each other. The host enforces what the AI can access. Sensitive operations require explicit approval.&lt;/p>
&lt;p>&lt;strong>Ecosystem effects:&lt;/strong> When everyone builds to the same protocol, servers become reusable assets. Your PostgreSQL MCP server works with Claude, ChatGPT, and Gemini. Build once, benefit everywhere.&lt;/p>
&lt;h2 class="relative group">How to start using MCP today
&lt;div id="how-to-start-using-mcp-today" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-to-start-using-mcp-today" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>This is the important part.&lt;/strong> You don&amp;rsquo;t need to build MCP servers to benefit from MCP. Start by using what exists.&lt;/p>
&lt;h3 class="relative group">Step 1: Install an MCP-compatible client
&lt;div id="step-1-install-an-mcp-compatible-client" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-1-install-an-mcp-compatible-client" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Claude Desktop&lt;/strong> is the easiest starting point. Download it, and you already have an MCP client ready to go.&lt;/p>
&lt;p>&lt;strong>Cursor&lt;/strong> supports MCP through Claude Desktop integration. If you&amp;rsquo;re using Cursor for coding, this path makes sense.&lt;/p>
&lt;p>&lt;strong>Other options:&lt;/strong> Zed, Windsurf, and Sourcegraph Cody all support MCP. Pick the tool you already use.&lt;/p>
&lt;h3 class="relative group">Step 2: Add your first MCP server
&lt;div id="step-2-add-your-first-mcp-server" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-2-add-your-first-mcp-server" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Start simple. The &lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>filesystem server&lt;/a> lets Claude read your local files.&lt;/p>
&lt;p>&lt;strong>What this gives you:&lt;/strong> Instead of copying and pasting code into Claude, you can say &amp;ldquo;read the authentication module and suggest improvements.&amp;rdquo; Claude accesses the file directly, sees the full context, and gives better answers.&lt;/p>
&lt;p>&lt;strong>Five minute setup:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Install the filesystem MCP server&lt;/li>
&lt;li>Configure Claude Desktop to use it&lt;/li>
&lt;li>Point it at your project directory&lt;/li>
&lt;li>Now Claude can read your actual codebase&lt;/li>
&lt;/ol>
&lt;h3 class="relative group">Step 3: Connect to your databases
&lt;div id="step-3-connect-to-your-databases" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-3-connect-to-your-databases" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>The &lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>PostgreSQL MCP server&lt;/a> (and similar for other databases) exposes your schema and enables read-only queries.&lt;/p>
&lt;p>&lt;strong>What this changes:&lt;/strong> You can ask &amp;ldquo;show me all users who signed up in the last week but haven&amp;rsquo;t completed onboarding&amp;rdquo; and Claude queries your database directly. No copy-paste, no context switching.&lt;/p>
&lt;p>&lt;strong>The right way to do this:&lt;/strong> Start with read-only access. Use environment variables for credentials. Test on development databases first.&lt;/p>
&lt;h3 class="relative group">Step 4: Add Git context
&lt;div id="step-4-add-git-context" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-4-add-git-context" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>The &lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>Git MCP server&lt;/a> exposes repository history, branches, and diffs.&lt;/p>
&lt;p>&lt;strong>What becomes possible:&lt;/strong> &amp;ldquo;Analyze the last ten commits to the payment service and summarize what changed.&amp;rdquo; Claude reads the actual Git log and gives you a coherent summary.&lt;/p>
&lt;h3 class="relative group">Step 5: Connect to your tools
&lt;div id="step-5-connect-to-your-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-5-connect-to-your-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>Existing MCP servers&lt;/a> cover Google Drive, Slack, GitHub, Postgres, and more. The &lt;a
href="https://blog.modelcontextprotocol.io/"
target="_blank"
>MCP Registry&lt;/a> (in preview) is where you find community servers.&lt;/p>
&lt;p>&lt;strong>Pick what matters to your workflow.&lt;/strong> Documentation? Customer data? Production metrics? Connect the systems where your context lives.&lt;/p>
&lt;h2 class="relative group">What changes when AI has real context
&lt;div id="what-changes-when-ai-has-real-context" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-changes-when-ai-has-real-context" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This isn&amp;rsquo;t just convenience. It&amp;rsquo;s a fundamental shift in how you work with AI.&lt;/p>
&lt;h3 class="relative group">From manual context to automatic context
&lt;div id="from-manual-context-to-automatic-context" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#from-manual-context-to-automatic-context" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Before:&lt;/strong> You spend five minutes explaining your database structure, pasting schema definitions, copying relevant code into the chat.&lt;/p>
&lt;p>&lt;strong>After:&lt;/strong> Claude already sees your schema. You skip straight to the actual question.&lt;/p>
&lt;p>&lt;strong>The compounding effect:&lt;/strong> Over dozens of interactions per day, you save hours of context-gathering work.&lt;/p>
&lt;h3 class="relative group">From shallow answers to deep understanding
&lt;div id="from-shallow-answers-to-deep-understanding" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#from-shallow-answers-to-deep-understanding" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Before:&lt;/strong> AI suggests generic solutions because it doesn&amp;rsquo;t know your actual constraints and patterns.&lt;/p>
&lt;p>&lt;strong>After:&lt;/strong> AI sees how your team actually structures code, what conventions you follow, what trade-offs you&amp;rsquo;ve made. Suggestions are specific to your reality.&lt;/p>
&lt;p>&lt;strong>The quality shift:&lt;/strong> Fewer &amp;ldquo;that won&amp;rsquo;t work here&amp;rdquo; moments. More &amp;ldquo;that actually fits our architecture.&amp;rdquo;&lt;/p>
&lt;h3 class="relative group">From single-turn to multi-step workflows
&lt;div id="from-single-turn-to-multi-step-workflows" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#from-single-turn-to-multi-step-workflows" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Before:&lt;/strong> Every task is a new conversation. AI has no memory of what you&amp;rsquo;re working on or why.&lt;/p>
&lt;p>&lt;strong>After:&lt;/strong> AI can follow multi-step workflows that span files, systems, and contexts. It remembers the goal and carries it forward.&lt;/p>
&lt;p>&lt;strong>Example:&lt;/strong> &amp;ldquo;Analyze the performance metrics for the API, identify the slow endpoints, check the database queries for those endpoints, and suggest optimizations based on our actual schema.&amp;rdquo;&lt;/p>
&lt;p>That&amp;rsquo;s four different context sources (metrics, API code, database, schema) orchestrated into one coherent workflow.&lt;/p>
&lt;h2 class="relative group">When to start building your own MCP servers
&lt;div id="when-to-start-building-your-own-mcp-servers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#when-to-start-building-your-own-mcp-servers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Once you&amp;rsquo;ve used MCP and see the value, you&amp;rsquo;ll spot the gaps. Systems specific to your company. Internal tools that don&amp;rsquo;t have public MCP servers. Workflows unique to your team.&lt;/p>
&lt;p>&lt;strong>That&amp;rsquo;s when you build.&lt;/strong>&lt;/p>
&lt;h3 class="relative group">The right first server to build
&lt;div id="the-right-first-server-to-build" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-right-first-server-to-build" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Your internal documentation.&lt;/strong> If you have Confluence, Notion, or internal wikis, an MCP server that exposes them as resources solves an immediate problem.&lt;/p>
&lt;p>&lt;strong>What it enables:&lt;/strong> Developers can ask AI questions about your internal systems and get answers sourced from your actual docs. No more hunting through wiki pages.&lt;/p>
&lt;p>&lt;strong>Technical complexity:&lt;/strong> Low. Resources are read-only, security is straightforward, and the value is immediate.&lt;/p>
&lt;h3 class="relative group">The second server: your APIs
&lt;div id="the-second-server-your-apis" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-second-server-your-apis" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Expose your internal API schemas and enable AI to understand how services connect.&lt;/p>
&lt;p>&lt;strong>What becomes possible:&lt;/strong> &amp;ldquo;Show me how to call the user service to update preferences&amp;rdquo; gets a response based on your actual API, not generic examples.&lt;/p>
&lt;p>&lt;strong>The integration pattern:&lt;/strong> Start with read-only schema exposure. Add safe test operations. Never expose production-write operations without explicit approval flows.&lt;/p>
&lt;h3 class="relative group">Building with the official SDKs
&lt;div id="building-with-the-official-sdks" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#building-with-the-official-sdks" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;a
href="https://github.com/modelcontextprotocol"
target="_blank"
>Official SDKs&lt;/a> exist for TypeScript, Python, Java, Kotlin, C#, Go, PHP, Ruby, Rust, and Swift. Pick your stack and start.&lt;/p>
&lt;p>&lt;strong>The architecture is simple:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Expose resources through &lt;code>resources/list&lt;/code> and &lt;code>resources/read&lt;/code>&lt;/li>
&lt;li>Declare tools through &lt;code>tools/list&lt;/code> and handle calls through &lt;code>tools/call&lt;/code>&lt;/li>
&lt;li>Define prompts that guide AI behavior for your specific use cases&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Use the &lt;a
href="https://github.com/modelcontextprotocol/inspector"
target="_blank"
>MCP Inspector&lt;/a>&lt;/strong> to test your server. Connect to it, browse resources, invoke tools, see what the AI sees. Essential for debugging.&lt;/p>
&lt;h3 class="relative group">Security patterns that matter
&lt;div id="security-patterns-that-matter" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#security-patterns-that-matter" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>1. Start local, go remote carefully&lt;/strong>&lt;/p>
&lt;p>Local servers (stdio transport) are simpler and more secure. They run on the developer&amp;rsquo;s machine with their permissions.&lt;/p>
&lt;p>Remote servers (HTTP transport) enable team-wide access but require proper authentication, authorization, and audit logging.&lt;/p>
&lt;p>&lt;strong>2. Read-only first, mutations later&lt;/strong>&lt;/p>
&lt;p>Resources are safe. Tools that modify data are not. Start with exposure, add write operations only when you have proper approval flows.&lt;/p>
&lt;p>&lt;strong>3. Never trust inputs&lt;/strong>&lt;/p>
&lt;p>Validate everything. Use JSON Schema for tool parameters. Sanitize inputs. Assume the AI might be tricked into sending malicious requests.&lt;/p>
&lt;p>&lt;strong>4. Handle credentials properly&lt;/strong>&lt;/p>
&lt;p>Environment variables for development. OS keychains for local desktop apps. Proper secret management for remote servers. Never in code, never in logs.&lt;/p>
&lt;h2 class="relative group">Why OpenAI and Google adopted this so fast
&lt;div id="why-openai-and-google-adopted-this-so-fast" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-openai-and-google-adopted-this-so-fast" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>MCP launched in November 2024 from Anthropic. By March 2025, &lt;a
href="https://techcrunch.com/2025/03/26/openai-adopts-rival-anthropics-standard-for-connecting-ai-models-to-data/"
target="_blank"
>OpenAI adopted it&lt;/a>. By April, &lt;a
href="https://techcrunch.com/2025/04/09/google-says-itll-embrace-anthropics-standard-for-connecting-ai-models-to-data/"
target="_blank"
>Google announced support&lt;/a>.&lt;/p>
&lt;p>When competing AI companies agree on a standard in months, not years, pay attention.&lt;/p>
&lt;p>&lt;strong>The reason:&lt;/strong> Everyone faces the same integration problem. Claude needs to connect to databases. ChatGPT needs to connect to databases. Gemini needs to connect to databases.&lt;/p>
&lt;p>&lt;strong>The old approach:&lt;/strong> Build custom connectors for each AI tool and each data source. Multiplication of effort.&lt;/p>
&lt;p>&lt;strong>The MCP approach:&lt;/strong> Build one server that exposes your database through a standard protocol. Every MCP-compatible AI tool can use it immediately.&lt;/p>
&lt;p>&lt;strong>The ecosystem effect:&lt;/strong> As more tools adopt MCP, every MCP server you build becomes more valuable. As more servers exist, every AI tool that adopts MCP becomes more useful.&lt;/p>
&lt;p>This is infrastructure-level network effects.&lt;/p>
&lt;h2 class="relative group">What this enables that wasn&amp;rsquo;t possible before
&lt;div id="what-this-enables-that-wasnt-possible-before" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-this-enables-that-wasnt-possible-before" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The real shift isn&amp;rsquo;t about making current work easier. It&amp;rsquo;s about making new patterns possible.&lt;/p>
&lt;h3 class="relative group">Contextual code review
&lt;div id="contextual-code-review" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#contextual-code-review" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>AI that reviews code with full access to:&lt;/p>
&lt;ul>
&lt;li>Your architecture decision records&lt;/li>
&lt;li>Previous similar changes and their outcomes&lt;/li>
&lt;li>Production metrics for affected services&lt;/li>
&lt;li>Team conventions and style guides&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>This isn&amp;rsquo;t generic linting.&lt;/strong> It&amp;rsquo;s review that understands your actual system and suggests improvements based on what you&amp;rsquo;ve learned, not what&amp;rsquo;s theoretically best.&lt;/p>
&lt;h3 class="relative group">Predictive debugging
&lt;div id="predictive-debugging" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#predictive-debugging" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>When an error occurs, AI with MCP access can:&lt;/p>
&lt;ul>
&lt;li>Read the error logs from your monitoring system&lt;/li>
&lt;li>Analyze the relevant code with full repository context&lt;/li>
&lt;li>Check similar past incidents and their resolutions&lt;/li>
&lt;li>Query the database state at the time of the error&lt;/li>
&lt;li>Suggest fixes based on your actual patterns&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>From hours to minutes.&lt;/strong> The context gathering that used to take most of the debugging time happens automatically.&lt;/p>
&lt;h3 class="relative group">Architectural coherence
&lt;div id="architectural-coherence" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#architectural-coherence" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>AI that can enforce architectural patterns by:&lt;/p>
&lt;ul>
&lt;li>Seeing your actual service boundaries and dependencies&lt;/li>
&lt;li>Understanding the intent behind your design decisions&lt;/li>
&lt;li>Catching violations as they&amp;rsquo;re written, not in review&lt;/li>
&lt;li>Suggesting alternatives that fit your established patterns&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>This moves from reactive to proactive.&lt;/strong> Instead of fixing architectural drift, you prevent it.&lt;/p>
&lt;h3 class="relative group">Knowledge continuity
&lt;div id="knowledge-continuity" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#knowledge-continuity" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>When a developer leaves or moves teams, their context doesn&amp;rsquo;t disappear if it&amp;rsquo;s encoded in MCP servers. The AI has the same access to systems, docs, and patterns.&lt;/p>
&lt;p>&lt;strong>Onboarding acceleration:&lt;/strong> New developers get answers sourced from actual systems, not just wikis that might be outdated.&lt;/p>
&lt;h2 class="relative group">For managers: the strategic opportunity
&lt;div id="for-managers-the-strategic-opportunity" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-managers-the-strategic-opportunity" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;re leading a team or organization, MCP represents more than a technical standard. It&amp;rsquo;s a forcing function for better infrastructure.&lt;/p>
&lt;h3 class="relative group">The immediate productivity play
&lt;div id="the-immediate-productivity-play" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-immediate-productivity-play" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>Week 1:&lt;/strong> Install Claude Desktop for your team. Add filesystem and Git MCP servers. Developers can now ask AI about your actual codebase.&lt;/p>
&lt;p>&lt;strong>Week 2-4:&lt;/strong> Add database MCP servers (read-only, development instances). Connect to internal documentation.&lt;/p>
&lt;p>&lt;strong>Month 2:&lt;/strong> Measure time saved on context gathering, debugging, and code review.&lt;/p>
&lt;p>&lt;strong>The ROI is quick and measurable.&lt;/strong> Developers spend less time hunting for context and more time solving problems.&lt;/p>
&lt;h3 class="relative group">The platform investment
&lt;div id="the-platform-investment" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-platform-investment" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>MCP forces you to think about your systems as APIs. What should be exposed? What&amp;rsquo;s the right level of abstraction? What are the security boundaries?&lt;/p>
&lt;p>&lt;strong>This work pays dividends beyond AI.&lt;/strong> Better-defined interfaces, clearer boundaries, improved documentation. You get organizational clarity whether or not MCP becomes the dominant standard.&lt;/p>
&lt;h3 class="relative group">The competitive positioning
&lt;div id="the-competitive-positioning" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-competitive-positioning" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>AI adoption is uneven across teams. The constraint isn&amp;rsquo;t model quality, it&amp;rsquo;s integration with real work.&lt;/p>
&lt;p>&lt;strong>Teams with good MCP infrastructure can use AI effectively.&lt;/strong> Teams without it are stuck with generic, context-free interactions.&lt;/p>
&lt;p>&lt;strong>This creates meaningful differentiation&lt;/strong> in productivity, quality, and velocity.&lt;/p>
&lt;h3 class="relative group">The talent development angle
&lt;div id="the-talent-development-angle" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-talent-development-angle" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Engineers who understand how to build, secure, and scale MCP integrations are developing valuable skills.&lt;/p>
&lt;p>This is infrastructure-level knowledge that transfers across companies. It&amp;rsquo;s not framework-specific or company-specific. It&amp;rsquo;s fundamental to how AI connects to systems.&lt;/p>
&lt;p>&lt;strong>Investing in team education here compounds.&lt;/strong> These skills become more valuable as the ecosystem matures.&lt;/p>
&lt;h2 class="relative group">The broader pattern: context is infrastructure
&lt;div id="the-broader-pattern-context-is-infrastructure" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-broader-pattern-context-is-infrastructure" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>MCP is part of a larger shift. AI isn&amp;rsquo;t just about better models. It&amp;rsquo;s about better connections between models and the systems where work happens.&lt;/p>
&lt;p>&lt;strong>We&amp;rsquo;re moving from:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Isolated AI interactions to connected workflows&lt;/li>
&lt;li>Generic suggestions to context-specific guidance&lt;/li>
&lt;li>Manual context gathering to automatic context access&lt;/li>
&lt;li>Single-turn conversations to multi-step orchestration&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>This is the infrastructure layer for AI-native development.&lt;/strong> Just like REST APIs became infrastructure for web services, MCP is becoming infrastructure for AI integration.&lt;/p>
&lt;p>The companies and teams that recognize this early and build the right connective tissue will have a sustained advantage.&lt;/p>
&lt;h2 class="relative group">What comes next
&lt;div id="what-comes-next" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-comes-next" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Near-term (Q4 2025):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>MCP 1.0 spec release (November 25, 2025)&lt;/li>
&lt;li>Wider IDE integration as standard feature&lt;/li>
&lt;li>Improved tooling for building and testing servers&lt;/li>
&lt;li>Enterprise adoption at scale&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Medium-term (2026):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>MCP becomes expected, not optional&lt;/li>
&lt;li>Security and compliance frameworks mature&lt;/li>
&lt;li>Performance optimizations and caching patterns&lt;/li>
&lt;li>Vertical-specific server ecosystems emerge&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Long-term trend:&lt;/strong> AI context shifts from &amp;ldquo;what you paste in the chat&amp;rdquo; to &amp;ldquo;what the AI has access to through proper integrations.&amp;rdquo;&lt;/p>
&lt;p>The quality of AI assistance becomes proportional to the quality of your MCP infrastructure.&lt;/p>
&lt;h2 class="relative group">For developers: the career angle
&lt;div id="for-developers-the-career-angle" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-developers-the-career-angle" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>What&amp;rsquo;s valuable right now:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Understanding how to use existing MCP servers effectively&lt;/li>
&lt;li>Building servers for gaps in your team&amp;rsquo;s workflow&lt;/li>
&lt;li>Implementing security patterns correctly&lt;/li>
&lt;li>Designing integrations that scale&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>What becomes valuable:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Deep expertise in MCP architecture and best practices&lt;/li>
&lt;li>Domain-specific integration knowledge (healthcare, finance, etc.)&lt;/li>
&lt;li>Platform-level thinking about how AI connects to systems&lt;/li>
&lt;li>Security and compliance for AI integrations&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The skill combination that matters:&lt;/strong> Understanding both AI capabilities and production systems. How to give AI the right context without compromising security. How to design integrations that teams actually use.&lt;/p>
&lt;p>This is infrastructure work. It&amp;rsquo;s less flashy than training models but more durable and more broadly applicable.&lt;/p>
&lt;h2 class="relative group">Start now, build as you go
&lt;div id="start-now-build-as-you-go" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#start-now-build-as-you-go" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>If you&amp;rsquo;re a developer:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Install Claude Desktop this week&lt;/li>
&lt;li>Add filesystem and Git servers to your workflow&lt;/li>
&lt;li>Notice where you still need to manually provide context&lt;/li>
&lt;li>Build MCP servers for those gaps&lt;/li>
&lt;li>Share what you build with your team&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>If you&amp;rsquo;re a manager:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Set up MCP infrastructure for your team this month&lt;/li>
&lt;li>Measure time saved on context gathering&lt;/li>
&lt;li>Identify team-specific systems that need servers&lt;/li>
&lt;li>Invest in building those integrations&lt;/li>
&lt;li>Make MCP literacy part of onboarding&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>The best time to start was six months ago when MCP launched. The second best time is today.&lt;/strong>&lt;/p>
&lt;p>The teams that move now will have compound advantages as the ecosystem matures. Not because they predicted the future, but because they built the infrastructure that makes AI actually useful for real work.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Get started:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a
href="https://modelcontextprotocol.io/introduction"
target="_blank"
>MCP introduction and documentation&lt;/a>&lt;/li>
&lt;li>&lt;a
href="https://github.com/modelcontextprotocol/servers"
target="_blank"
>Official servers repository with examples&lt;/a>&lt;/li>
&lt;li>&lt;a
href="https://github.com/modelcontextprotocol/inspector"
target="_blank"
>MCP Inspector for testing&lt;/a>&lt;/li>
&lt;li>&lt;a
href="https://claude.ai/download"
target="_blank"
>Claude Desktop download&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The gap between AI demos and AI productivity is context. MCP is how you close it.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/model-context-protocol-connecting-ai-to-your-real-work/feature.png"/></item><item><title>Developer Work Did Not Change. The Sequence Did.</title><link>https://pinishv.com/articles/developer-work-did-not-change-the-sequence-did/</link><pubDate>Sat, 27 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/developer-work-did-not-change-the-sequence-did/</guid><description>AI doesn&amp;rsquo;t make the job different. It changes when parts of the job happen, turning Monday morning from archaeology into editing.</description><content:encoded>&lt;p>On most teams, productivity hits a weird ceiling. New tools make us faster, then we bottleneck on context, reviews, and decision time. The blocker is rarely typing speed. &lt;strong>It&amp;rsquo;s waiting for the right information to show up.&lt;/strong>&lt;/p>
&lt;p>AI doesn&amp;rsquo;t make the job different. It changes &lt;strong>when&lt;/strong> parts of the job happen. The moment a ticket is clear enough for a human, it can be clear enough for a model that knows your repo. That single shift moves context earlier. It turns Monday morning from archaeology into editing.&lt;/p>
&lt;p>This is a perspective on helping teams find ways to build more while staying balanced. Not a prescriptive guide, just an approach that&amp;rsquo;s proven effective in practice.&lt;/p>
&lt;h2 class="relative group">The bottleneck is us, not the tools
&lt;div id="the-bottleneck-is-us-not-the-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottleneck-is-us-not-the-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Two-week sprints, estimates, planning, PRs, CI, retro. These rituals mostly work. &lt;strong>The problem is their timing.&lt;/strong> Context arrives late, so developers spend the first hour of every ticket just getting oriented. Models help most when they create good starting points before we start.&lt;/p>
&lt;h2 class="relative group">A small, useful shift
&lt;div id="a-small-useful-shift" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#a-small-useful-shift" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>When a ticket is truly ready, &lt;strong>it should be ready for both a person and a model&lt;/strong>. Ready means: goal, relevant paths in the repo, constraints, acceptance examples. With that, you can ask a model for four things:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>A change outline&lt;/strong> - what needs to touch what&lt;/li>
&lt;li>&lt;strong>A thin scaffold&lt;/strong> - something that compiles and runs&lt;/li>
&lt;li>&lt;strong>Tests that fail for the right reasons&lt;/strong> - executable specifications&lt;/li>
&lt;li>&lt;strong>A short risk list&lt;/strong> - what could break&lt;/li>
&lt;/ul>
&lt;p>You wake up to a draft you can run and critique. The first hour becomes review and naming, not searching and guessing.&lt;/p>
&lt;h2 class="relative group">What changes, what doesn&amp;rsquo;t
&lt;div id="what-changes-what-doesnt" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-changes-what-doesnt" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Changes:&lt;/strong> sequence, not ownership. Planning, scaffolding, and tests move earlier. Pull systems work better because tickets carry context with them.&lt;/p>
&lt;p>&lt;strong>Doesn&amp;rsquo;t change:&lt;/strong> taste, trade-offs, responsibility. Humans still decide shapes, enforce style and architecture, and say no when a fast path breaks the system.&lt;/p>
&lt;h2 class="relative group">A day in this rhythm
&lt;div id="a-day-in-this-rhythm" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#a-day-in-this-rhythm" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Maya opens a ticket about retry logic for webhooks. The ticket links two specific modules (&lt;code>webhooks/handlers.py&lt;/code> and &lt;code>utils/backoff.py&lt;/code>), shows the current handler function, sets a 200ms performance budget, and mentions idempotency concerns.&lt;/p>
&lt;p>Overnight, someone asked the model for an outline, tests, and a sketch of the exponential backoff. Maya pulls the branch, runs the failing tests, fixes the import paths, renames &lt;code>retryWithDelay&lt;/code> to &lt;code>retryWithBackoff&lt;/code>, and adds the edge case the model missed: what happens when the webhook endpoint returns a 2xx but with an error payload.&lt;/p>
&lt;p>The pull request explains why this retry shape fits the existing error-handling patterns. Review is quicker because the tests tell a coherent story and the implementation follows established conventions.&lt;/p>
&lt;p>Other days the draft is wrong. That&amp;rsquo;s fine. &lt;strong>Treat model output like a junior colleague who works nights.&lt;/strong> Useful, not in charge.&lt;/p>
&lt;h2 class="relative group">Rules that work
&lt;div id="rules-that-work" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#rules-that-work" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>Move work left.&lt;/strong> Earlier context beats later speed. A well-prepared ticket with model scaffolding saves more time than the fastest possible code review.&lt;/p>
&lt;p>&lt;strong>Tests first, always.&lt;/strong> A failing test is a better specification than three paragraphs. It&amp;rsquo;s also harder for models to misinterpret.&lt;/p>
&lt;p>&lt;strong>Keep context near code.&lt;/strong> Prompt fragments, architectural decisions, and constraint notes live in the repo, in README files, in draft PRs, embedded in comments. Not buried in tickets.&lt;/p>
&lt;p>&lt;strong>Guardrails on by default.&lt;/strong> Lint, types, security scanning, secret detection. Machines excel at boring compliance checks.&lt;/p>
&lt;p>&lt;strong>Measure flow, not effort.&lt;/strong> Track cycle time per PR, lead time per ticket, escaped defects. Forecast by readiness and risk, not by story points.&lt;/p>
&lt;p>&lt;strong>Privacy and security require explicit protocols.&lt;/strong> The risk of accidentally sharing sensitive code with public AI models is real and costly. Establish clear guidelines: never include API keys, connection strings, or personally identifiable information in prompts. Use enterprise-grade, secure AI platforms that offer data residency guarantees and audit trails for proprietary codebases. Train teams to craft prompts that describe patterns and requirements without sharing actual sensitive business logic. When in doubt, use masked or synthetic data for sensitive workflows.&lt;/p>
&lt;h2 class="relative group">If you manage people
&lt;div id="if-you-manage-people" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#if-you-manage-people" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Your job is removing friction, not managing output. Give time for tickets to become model-ready. This is planning work, not overhead. Keep a small library of prompt examples and improve them during retrospectives.&lt;/p>
&lt;p>Tighten CI so &amp;ldquo;fast&amp;rdquo; doesn&amp;rsquo;t mean &amp;ldquo;sloppy.&amp;rdquo; Publish a simple flow dashboard that shows where work gets stuck. &lt;strong>Hire for judgment and systems thinking.&lt;/strong> These are the skills that matter when the typing is handled.&lt;/p>
&lt;h2 class="relative group">The jargon, decoded
&lt;div id="the-jargon-decoded" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-jargon-decoded" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>CI/CD&lt;/strong>: Continuous Integration/Deployment. Scripts that build, test, and deploy code automatically&lt;/li>
&lt;li>&lt;strong>PR&lt;/strong>: Pull Request. A proposed change waiting for review and approval&lt;/li>
&lt;li>&lt;strong>Scaffold&lt;/strong>: A minimal starter that compiles and runs, giving structure without implementation&lt;/li>
&lt;li>&lt;strong>SAST&lt;/strong>: Static Application Security Testing. Automated scans that catch risky code patterns&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">Common challenges and practical fixes
&lt;div id="common-challenges-and-practical-fixes" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#common-challenges-and-practical-fixes" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This isn&amp;rsquo;t magic. Not every ticket will be well-prepared, and AI-generated code comes with predictable problems. Here&amp;rsquo;s what we&amp;rsquo;ve learned from teams making this transition:&lt;/p>
&lt;p>&lt;strong>Ambiguous requirements lead to hallucinated features.&lt;/strong> When tickets say &amp;ldquo;make it faster&amp;rdquo; or &amp;ldquo;improve error handling,&amp;rdquo; models invent requirements that sound reasonable but miss the point. Fix: Break vague tickets into smaller, well-defined tasks with specific success criteria. &amp;ldquo;Reduce webhook timeout from 30s to 10s&amp;rdquo; beats &amp;ldquo;improve webhook performance.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>AI misreads context and creates plausible but wrong solutions.&lt;/strong> Models excel at patterns but struggle with business logic edge cases. Fix: Implement a quick human-in-the-loop review before any AI-generated code gets merged. Treat the first commit as a draft that needs validation, not a solution that needs polish.&lt;/p>
&lt;p>&lt;strong>Legacy systems resist model understanding.&lt;/strong> Older codebases with inconsistent patterns, missing documentation, or complex implicit contracts confuse models. Fix: Start with greenfield features or well-documented modules. Let models learn your patterns gradually rather than throwing them at your most complex legacy code first.&lt;/p>
&lt;h2 class="relative group">Developer experience matters
&lt;div id="developer-experience-matters" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#developer-experience-matters" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Efficiency gains mean nothing if developers lose engagement. The teams seeing the best results from this approach focus as much on satisfaction as speed.&lt;/p>
&lt;p>&lt;strong>Automating repetitive tasks creates space for creative problem-solving.&lt;/strong> Developers report higher job satisfaction when they spend less time on boilerplate and more time on architecture, user experience, and system design. The cognitive overhead of switching between mundane tasks and complex decisions is real.&lt;/p>
&lt;p>&lt;strong>Maintaining ownership prevents AI dependency.&lt;/strong> The key is ensuring developers still feel ownership over their work. AI provides starting points, not finished solutions. Developers should be critiquing, refining, and ultimately deciding what ships. When people feel like code reviewers rather than code authors, engagement drops.&lt;/p>
&lt;p>&lt;strong>Recognition and growth paths need updating.&lt;/strong> Traditional metrics like lines of code or features shipped become less meaningful. Focus instead on system design contributions, code review quality, and mentoring newer team members on effective AI collaboration patterns.&lt;/p>
&lt;h2 class="relative group">Practical patterns that work
&lt;div id="practical-patterns-that-work" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#practical-patterns-that-work" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here are specific workflows teams are using to shift work earlier and run processes in parallel:&lt;/p>
&lt;p>&lt;strong>Background ticket processing.&lt;/strong> Set up automation that starts working on tickets as soon as they&amp;rsquo;re marked &amp;ldquo;ready for development.&amp;rdquo; While you finish your current task, AI generates scaffolding, tests, and implementation sketches for the next three tickets in your queue. You arrive to find branches with failing tests and working code that needs review, not blank files.&lt;/p>
&lt;p>&lt;strong>Automated test generation on PR creation.&lt;/strong> Every time someone opens a pull request, trigger automation that generates comprehensive test cases based on the code changes. The developer reviews and refines these tests using AI feedback loops. Multiple processes run in parallel: the original feature development, test generation, security scanning, and performance analysis.&lt;/p>
&lt;p>&lt;strong>Proactive code review preparation.&lt;/strong> Before requesting human review, run AI analysis that identifies potential issues, suggests improvements, and generates explanatory comments. The reviewer gets a pre-analyzed PR with highlighted concerns and suggested fixes, turning review from detective work into decision-making.&lt;/p>
&lt;p>&lt;strong>Context-aware documentation updates.&lt;/strong> When code changes, automatically generate documentation updates and README modifications. AI identifies which docs are affected and creates draft updates that maintainers can approve or refine.&lt;/p>
&lt;p>&lt;strong>Dependency and impact analysis.&lt;/strong> For every change, run background analysis of what else might be affected. Generate migration guides, update scripts, and compatibility notes before anyone asks for them.&lt;/p>
&lt;p>&lt;strong>Parallel environment management.&lt;/strong> While you work on feature A, have automation preparing environments, running tests, and validating deployments for features B and C. Manage multiple workstreams simultaneously without context switching.&lt;/p>
&lt;p>The key is treating AI like a team of junior developers working different shifts. They prepare, you decide. They draft, you refine. They analyze, you prioritize.&lt;/p>
&lt;h2 class="relative group">Start small, learn fast
&lt;div id="start-small-learn-fast" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#start-small-learn-fast" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Pick one team, one project type, one workflow. See what works. The goal isn&amp;rsquo;t perfect tickets overnight, it&amp;rsquo;s better starting points for the work that matters most.&lt;/p>
&lt;p>We&amp;rsquo;ll keep our rituals. We&amp;rsquo;ll move their weight. When a developer opens a ticket and sees tests, a sketch, and a plan, the day starts on step two. &lt;strong>The work that remains is the part that needs judgment.&lt;/strong> That&amp;rsquo;s the part worth getting faster at.&lt;/p>
&lt;p>The sequence changed. The responsibility didn&amp;rsquo;t. AI gives us starting points; humans decide where to go.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Teams moving in this direction often find the trickiest part isn&amp;rsquo;t the technical implementation, it&amp;rsquo;s the cultural shift. If you&amp;rsquo;re curious how this might work for your organization, feel free to reach out.&lt;/em>&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/developer-work-did-not-change-the-sequence-did/feature.png"/></item><item><title>GitHub's Double CLI Release: How Two AI Tools Are Reshaping Development Workflows</title><link>https://pinishv.com/articles/github-dual-cli-release-reshaping-development/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/github-dual-cli-release-reshaping-development/</guid><description>GitHub released two different CLI tools for AI in one week. Together, they represent both interactive AI partnership and autonomous development delegation. Here&amp;rsquo;s why this combination changes everything about building software.</description><content:encoded>&lt;p>This week, GitHub released not one but &lt;em>two&lt;/em> different CLI tools for AI development. Most people are focusing on the individual features. I&amp;rsquo;m seeing something bigger: &lt;strong>a significant step toward AI becoming development infrastructure rather than just an assistant.&lt;/strong>&lt;/p>
&lt;p>Here&amp;rsquo;s what actually happened: GitHub released both &lt;a
href="https://pinishv.com/shorts/github-cli-copilot-agent-task-management/"
target="_blank"
>an update to their regular CLI (version 2.80.0)&lt;/a> &lt;em>and&lt;/em> &lt;a
href="https://pinishv.com/shorts/github-copilot-cli-terminal-ai/"
target="_blank"
>a completely separate standalone Copilot CLI tool&lt;/a>. Together, they represent two different but complementary approaches to AI-powered development.&lt;/p>
&lt;p>&lt;strong>This represents a meaningful shift in how we can build and maintain software.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">Two Different Tools, One Big Vision
&lt;div id="two-different-tools-one-big-vision" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#two-different-tools-one-big-vision" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Let me break down what GitHub actually released:&lt;/p>
&lt;h3 class="relative group">Tool 1: GitHub CLI 2.80.0 with Agent Tasks
&lt;div id="tool-1-github-cli-2800-with-agent-tasks" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#tool-1-github-cli-2800-with-agent-tasks" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This updates the regular &lt;code>gh&lt;/code> CLI you already know with new &lt;a
href="https://cli.github.com/manual/gh_agent-task"
target="_blank"
>&lt;code>agent-task&lt;/code> commands&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Start a coding agent task and track it&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;refactor the authentication flow&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># List all your running tasks &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Watch it work in real-time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task view &lt;span class="m">1234&lt;/span> --log --follow
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This solves the &amp;ldquo;black box&amp;rdquo; problem I had with the &lt;a
href="https://github.com/github/github-mcp-server/blob/main/docs/remote-server.md#additional-remote-server-toolsets"
target="_blank"
>GitHub MCP server&lt;/a>. Before, you could trigger the coding agent but had zero visibility into what it was doing. Now you can actually see the work happening and integrate it into scripts.&lt;/p>
&lt;p>For the full command reference, see &lt;a
href="https://github.com/cli/cli/releases/tag/v2.80.0"
target="_blank"
>GitHub CLI 2.80.0 release notes&lt;/a>.&lt;/p>
&lt;h3 class="relative group">Tool 2: Standalone Copilot CLI
&lt;div id="tool-2-standalone-copilot-cli" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#tool-2-standalone-copilot-cli" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This is completely separate. You install it with &lt;code>npm install -g @github/copilot&lt;/code> and it becomes an interactive AI partner in your terminal:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Interactive mode - have a conversation&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ copilot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; Help me find all the CSV files in this directory recursively
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">AI suggests: find . -name &lt;span class="s2">&amp;#34;*.csv&amp;#34;&lt;/span> -type f
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Autonomous mode - one-shot commands &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ copilot -p &lt;span class="s2">&amp;#34;create a Python script to parse log files&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># AI writes the script, asks permission, then creates the file&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">The Key Difference
&lt;div id="the-key-difference" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-key-difference" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>&lt;strong>GitHub CLI agent-tasks&lt;/strong> = manage long-running coding projects (like delegating work to a team member)&lt;/p>
&lt;p>&lt;strong>Copilot CLI&lt;/strong> = interactive terminal assistance (like pair programming with AI)&lt;/p>
&lt;p>Here&amp;rsquo;s where it gets interesting. You can combine both:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Use Copilot CLI to craft the perfect task description&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ copilot -p &lt;span class="s2">&amp;#34;help me write a task description for refactoring our auth system&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Then delegate it to the coding agent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ gh agent-task create &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>copilot -p &lt;span class="s1">&amp;#39;write task: refactor auth system&amp;#39;&lt;/span>&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Monitor it while doing other work&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ gh agent-task view &lt;span class="nv">$TASK_ID&lt;/span> --log --follow
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>We just went from &amp;ldquo;AI helps me code&amp;rdquo; to &amp;ldquo;AI runs my entire development process.&amp;rdquo; That&amp;rsquo;s not an incremental improvement. That&amp;rsquo;s a category shift.&lt;/p>
&lt;h2 class="relative group">The Missing Piece: Context-Aware AI That Runs Everywhere
&lt;div id="the-missing-piece-context-aware-ai-that-runs-everywhere" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-missing-piece-context-aware-ai-that-runs-everywhere" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>To understand why this matters, you have to think about what makes these CLI releases fundamentally different from other AI development tools. It&amp;rsquo;s not that GitHub suddenly built smarter AI. OpenAI and Anthropic probably have better raw models. &lt;strong>What&amp;rsquo;s different is that GitHub&amp;rsquo;s AI already knows your codebase.&lt;/strong>&lt;/p>
&lt;p>When you call OpenAI&amp;rsquo;s API or use Claude directly, you&amp;rsquo;re starting fresh every time. You have to explain your architecture, your patterns, your naming conventions. You&amp;rsquo;re basically teaching the AI about your project from scratch with every interaction. It&amp;rsquo;s powerful, but it&amp;rsquo;s also exhausting.&lt;/p>
&lt;p>GitHub&amp;rsquo;s coding agent is different because it lives in your repository. It already understands your issues, your pull requests, your workflow patterns. It knows how your team writes code. And now, with CLI access, that context-aware intelligence can work automatically in your production workflows.&lt;/p>
&lt;p>Here&amp;rsquo;s what that means practically: when your monitoring system detects a performance issue, the GitHub coding agent doesn&amp;rsquo;t just get the error message. It gets your entire codebase context, recent deployments, related issues, and team patterns. When you trigger an agent-task from your CI pipeline, it&amp;rsquo;s not running generic analysis - it&amp;rsquo;s applying intelligence that already knows your specific architecture, coding standards, and business logic.&lt;/p>
&lt;h2 class="relative group">The Model Selection Catch
&lt;div id="the-model-selection-catch" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-model-selection-catch" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s something important I discovered while testing these tools: you can only choose which AI model to use with the standalone Copilot CLI, not with the agent-task commands.&lt;/p>
&lt;p>The agent-task commands are locked to whatever model GitHub has configured for their coding agent - currently Claude 4 Sonnet as of September 2025. There&amp;rsquo;s no way to switch it to GPT-5 or any other model. The standalone Copilot CLI, on the other hand, lets you pick your model by setting an environment variable before running commands.&lt;/p>
&lt;p>This creates an interesting tradeoff. The agent-tasks give you AI that truly understands your specific project context, but you&amp;rsquo;re stuck with GitHub&amp;rsquo;s model choice. The standalone CLI lets you choose between Claude or GPT-5, but each conversation starts fresh without deep knowledge of your codebase.&lt;/p>
&lt;p>In practice, this means you get context or you get control, but not both. For most workflows, I&amp;rsquo;d choose context over control - having AI that knows your repository is more valuable than being able to switch models. But for complex reasoning tasks where you need GPT-5&amp;rsquo;s capabilities, the standalone CLI becomes the better choice.&lt;/p>
&lt;h2 class="relative group">What the Web Interface Doesn&amp;rsquo;t Want You to Know
&lt;div id="what-the-web-interface-doesnt-want-you-to-know" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-the-web-interface-doesnt-want-you-to-know" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you read GitHub&amp;rsquo;s official documentation about Copilot coding agent limitations, you&amp;rsquo;ll see statements like &amp;ldquo;You cannot change the AI model&amp;rdquo; and &amp;ldquo;You cannot integrate with external systems.&amp;rdquo; Reading this, you&amp;rsquo;d think these are fundamental technical constraints.&lt;/p>
&lt;p>But the CLI releases expose these as design choices, not technical limitations. The agent-task commands let you script everything, monitor progress in real-time, and integrate with any tool that can run shell commands. The standalone Copilot CLI gives you model selection that the web interface deliberately hides.&lt;/p>
&lt;p>This reveals something important about how developer tools get designed. When companies build &amp;ldquo;user-friendly&amp;rdquo; interfaces, they often hide capabilities to avoid overwhelming users. The problem is that hiding complexity also hides possibility. The web interface trains you to think of AI as a black box you occasionally visit, rather than as programmable infrastructure you can integrate into your workflows.&lt;/p>
&lt;p>The CLI approach is different - it makes AI composable. Instead of protecting you from complexity, it gives you the tools to manage complexity. That&amp;rsquo;s the difference between convenient shortcuts and real automation.&lt;/p>
&lt;h2 class="relative group">Real Examples: What You Can Build When Both Tools Work Together
&lt;div id="real-examples-what-you-can-build-when-both-tools-work-together" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#real-examples-what-you-can-build-when-both-tools-work-together" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Once you have both an interactive AI assistant and a way to manage long-running coding tasks, the possibilities get wild. Here are some workflows, from beginner to advanced:&lt;/p>
&lt;h3 class="relative group">Simple Debug Session (Beginner-Friendly)
&lt;div id="simple-debug-session-beginner-friendly" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#simple-debug-session-beginner-friendly" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1"># Use both tools to debug a failing test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># First, get quick guidance from Copilot CLI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">copilot -p &lt;span class="s2">&amp;#34;My test is failing with &amp;#39;connection timeout&amp;#39;. What should I check first?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Based on the advice, let the agent investigate and fix&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;Test &amp;#39;user-login-test&amp;#39; is failing with connection timeout. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Check database connection, network config, and timeout settings. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Fix any obvious issues you find.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Monitor the progress&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">Smart Performance Monitoring (Using Both Tools)
&lt;div id="smart-performance-monitoring-using-both-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#smart-performance-monitoring-using-both-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1"># When servers get slow, use both AIs to investigate and fix&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Note: Assumes get_cpu_usage() function is defined elsewhere&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> true&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="o">[&lt;/span> &lt;span class="k">$(&lt;/span>get_cpu_usage&lt;span class="k">)&lt;/span> -gt &lt;span class="m">80&lt;/span> &lt;span class="o">]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;CPU usage high, investigating...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># First, use Copilot CLI to quickly analyze what&amp;#39;s happening&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">ANALYSIS&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>copilot -p &lt;span class="s2">&amp;#34;Help me understand what might cause CPU usage of &lt;/span>&lt;span class="k">$(&lt;/span>get_cpu_usage&lt;span class="k">)&lt;/span>&lt;span class="s2">% in a web app&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Then delegate the actual investigation to the coding agent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">TASK_ID&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>gh agent-task create &lt;span class="s2">&amp;#34;CPU is at &lt;/span>&lt;span class="k">$(&lt;/span>get_cpu_usage&lt;span class="k">)&lt;/span>&lt;span class="s2">%. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Analysis suggests: &lt;/span>&lt;span class="nv">$ANALYSIS&lt;/span>&lt;span class="s2"> \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Investigate recent deployments and create a fix.&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model gpt-5&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Created task &lt;/span>&lt;span class="nv">$TASK_ID&lt;/span>&lt;span class="s2"> to investigate. Monitoring progress...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Watch for completion and take action&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> gh agent-task view &lt;span class="nv">$TASK_ID&lt;/span> --log --follow &lt;span class="p">|&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> grep -i &lt;span class="s2">&amp;#34;pull request&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="nb">read&lt;/span> pr_line&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Performance fix ready: &lt;/span>&lt;span class="nv">$pr_line&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> notify-team &lt;span class="s2">&amp;#34;AI created performance fix: &lt;/span>&lt;span class="nv">$pr_line&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sleep &lt;span class="m">300&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">Intelligent Code Review Pipeline
&lt;div id="intelligent-code-review-pipeline" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#intelligent-code-review-pipeline" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1"># Use both tools for comprehensive code reviews&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># When a new PR is created (webhook trigger)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PR_NUMBER&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># First, get quick insights from Copilot CLI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">REVIEW_FOCUS&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>copilot -p &lt;span class="s2">&amp;#34;What should I look for when reviewing a PR for &lt;/span>&lt;span class="nv">$PR_TITLE&lt;/span>&lt;span class="s2">? Give me 3 key areas to focus on.&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Then delegate the actual review to the coding agent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;Review PR #&lt;/span>&lt;span class="nv">$PR_NUMBER&lt;/span>&lt;span class="s2">. Focus on: &lt;/span>&lt;span class="nv">$REVIEW_FOCUS&lt;/span>&lt;span class="s2">. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Look for bugs, security issues, and maintainability problems. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Add review comments and create follow-up tasks for any issues.&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model gpt-5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 class="relative group">Development Workflow Orchestration
&lt;div id="development-workflow-orchestration" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#development-workflow-orchestration" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="c1"># Complete development workflow using both tools&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Daily maintenance routine&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">daily_maintenance&lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Use Copilot CLI to plan what needs attention&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">PRIORITIES&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>copilot -p &lt;span class="s2">&amp;#34;Look at our recent commits and issues. What are the top 3 maintenance tasks I should focus on today?&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Today&amp;#39;s AI-suggested priorities: &lt;/span>&lt;span class="nv">$PRIORITIES&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Create agent tasks for each priority&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$PRIORITIES&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="nv">IFS&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="nb">read&lt;/span> -r task&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="o">[[&lt;/span> -n &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$task&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> gh agent-task create &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$task&lt;/span>&lt;span class="s2"> - make it production ready&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Smart test generation from failures &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">monitor_production_errors&lt;span class="o">()&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> tail -f /var/log/app.log &lt;span class="p">|&lt;/span> grep ERROR &lt;span class="p">|&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="nb">read&lt;/span> error&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Quick analysis with Copilot CLI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">TEST_STRATEGY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>copilot -p &lt;span class="s2">&amp;#34;How should I test for this error: &amp;#39;&lt;/span>&lt;span class="nv">$error&lt;/span>&lt;span class="s2">&amp;#39;?&amp;#34;&lt;/span>&lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Create comprehensive tests with coding agent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> gh agent-task create &lt;span class="s2">&amp;#34;Production error: &amp;#39;&lt;/span>&lt;span class="nv">$error&lt;/span>&lt;span class="s2">&amp;#39;. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Testing strategy: &lt;/span>&lt;span class="nv">$TEST_STRATEGY&lt;/span>&lt;span class="s2"> \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Write comprehensive tests to prevent this.&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model gpt-5
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The common pattern here? &lt;strong>We&amp;rsquo;re moving from reactive to proactive.&lt;/strong> Instead of fixing problems after they happen, we&amp;rsquo;re building systems that think ahead and improve continuously.&lt;/p>
&lt;p>More importantly, &lt;strong>we&amp;rsquo;re combining quick AI assistance with deep AI work.&lt;/strong> Copilot CLI helps you think through problems fast. The coding agent executes the actual work. Together, they create workflows that are both intelligent and thorough.&lt;/p>
&lt;h2 class="relative group">The Economics Make Sense for Both Tools
&lt;div id="the-economics-make-sense-for-both-tools" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-economics-make-sense-for-both-tools" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s something interesting about the pricing: both tools use your existing Copilot subscription and count against your monthly premium request quota. The specifics matter:&lt;/p>
&lt;p>&lt;strong>Agent-task commands:&lt;/strong> Each task counts as one premium request, regardless of complexity:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># These all cost the same: 1 request each&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;fix typo in README&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;migrate our entire codebase to Python 3.12&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;do a full security audit and fix everything&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Copilot CLI:&lt;/strong> Each interaction (prompt) counts as one premium request:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Each of these is 1 request&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">copilot -p &lt;span class="s2">&amp;#34;help me write a regex&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">copilot -p &lt;span class="s2">&amp;#34;explain this error and suggest fixes&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">copilot -p &lt;span class="s2">&amp;#34;create a complete monitoring dashboard&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Important pricing details:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Premium request quotas vary by plan (check &lt;a
href="https://docs.github.com/en/copilot/about-github-copilot/about-billing-for-github-copilot"
target="_blank"
>GitHub Copilot billing docs&lt;/a>)&lt;/li>
&lt;li>You&amp;rsquo;re not charged per API call or line of code generated&lt;/li>
&lt;li>Complex tasks cost the same as simple ones within each tool&lt;/li>
&lt;/ul>
&lt;p>This pricing model encourages ambitious automation. Don&amp;rsquo;t ration your AI usage. Don&amp;rsquo;t optimize for fewer requests. Build the automation you actually want.&lt;/p>
&lt;p>&lt;strong>Strategic insight:&lt;/strong> Use Copilot CLI for quick decisions and planning. Use agent-tasks for substantial work. This optimizes your premium request budget.&lt;/p>
&lt;h2 class="relative group">Important Limitations and Security Considerations
&lt;div id="important-limitations-and-security-considerations" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#important-limitations-and-security-considerations" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>While these tools are powerful, they come with important limitations and security considerations:&lt;/p>
&lt;p>&lt;strong>Security Risks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Copilot CLI can modify files and execute commands - only use in trusted directories&lt;/li>
&lt;li>Always review AI-generated code before running it, especially in production&lt;/li>
&lt;li>Agent-task outputs should be reviewed for security vulnerabilities before merging&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Current Limitations:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>No external integrations yet (tools work within GitHub ecosystem only)&lt;/li>
&lt;li>Agent-tasks are repo-bound (no cross-repository context)&lt;/li>
&lt;li>Both tools are in preview and may change significantly&lt;/li>
&lt;li>Limited to GitHub&amp;rsquo;s model selection (you can&amp;rsquo;t use your own AI models)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Responsible Use:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Don&amp;rsquo;t blindly trust AI outputs - human oversight is essential&lt;/li>
&lt;li>Start with non-critical tasks while you learn the tools&amp;rsquo; behavior&lt;/li>
&lt;li>Monitor your premium request quota to avoid service interruptions&lt;/li>
&lt;li>Be mindful of sensitive data in prompts (logs may be retained)&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">We Just Crossed Multiple Lines We Can&amp;rsquo;t Uncross
&lt;div id="we-just-crossed-multiple-lines-we-cant-uncross" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#we-just-crossed-multiple-lines-we-cant-uncross" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Think about how AI coding tools have evolved, and what GitHub just delivered:&lt;/p>
&lt;p>&lt;strong>Phase 1:&lt;/strong> Autocomplete (AI suggests the next few characters)&lt;br>
&lt;strong>Phase 2:&lt;/strong> Chat (AI answers questions and helps with tasks)&lt;br>
&lt;strong>Phase 3:&lt;/strong> Interactive partnership (Copilot CLI becomes your terminal buddy)&lt;br>
&lt;strong>Phase 4:&lt;/strong> Autonomous delegation (agent-tasks work independently on projects)&lt;/p>
&lt;p>Most companies are still figuring out Phase 2. GitHub just delivered both Phase 3 and 4 at the same time.&lt;/p>
&lt;p>That&amp;rsquo;s not incremental progress. &lt;strong>That&amp;rsquo;s the difference between using AI tools and having AI colleagues.&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Interactive partnership&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ copilot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt; I&lt;span class="err">&amp;#39;&lt;/span>m getting a weird database error. Help me debug it.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">AI walks you through debugging step by step...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Autonomous delegation &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ gh agent-task create &lt;span class="s2">&amp;#34;Fix the database performance issues we just found&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">AI goes away and comes back with a solution...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>The combination is what makes this significant.&lt;/strong> You can brainstorm with one AI and delegate work to another. You can get instant feedback and long-term project execution. You can think fast and build thoroughly.&lt;/p>
&lt;h2 class="relative group">How Teams Will Actually Work
&lt;div id="how-teams-will-actually-work" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-teams-will-actually-work" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The most successful engineering teams are going to figure out how to split work between humans and AI effectively, and I think the division is becoming clearer.&lt;/p>
&lt;p>Humans will still own the strategic decisions - architecture choices, priority setting, customer conversations. We&amp;rsquo;re also better at the ethical considerations and creative problem-solving when systems behave in unexpected ways. These require judgment, empathy, and the ability to see broader business context.&lt;/p>
&lt;p>AI, on the other hand, is already excellent at maintaining consistency. It can keep code quality standards across a large codebase, write comprehensive test suites, monitor for security issues, and update documentation as code changes. These tasks require attention to detail and pattern recognition, but not creativity or judgment.&lt;/p>
&lt;p>The interesting middle ground is where human expertise combines with AI execution. Code reviews will likely split this way: AI handles the mechanical checks for style violations and obvious bugs, while humans focus on logic, design decisions, and architectural implications. Planning becomes collaborative too - AI can suggest tasks based on codebase analysis, but humans decide priorities based on business needs.&lt;/p>
&lt;h2 class="relative group">Where This Is Really Heading
&lt;div id="where-this-is-really-heading" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-this-is-really-heading" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s the part that gets me excited: we&amp;rsquo;re building systems that can improve themselves. Once AI can write code, test it, deploy it, monitor how it performs, and learn from the results, we&amp;rsquo;re not talking about tools anymore. We&amp;rsquo;re talking about software that evolves on its own.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Imagine AI analyzing its own work&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gh agent-task create &lt;span class="s2">&amp;#34;Look at all the code changes I&amp;#39;ve made this month. \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Which ones worked well? Which ones caused problems? \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Update your approach based on what you learned.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>That&amp;rsquo;s a feedback loop that gets better over time. The AI learns from its successes and failures, just like a human developer would.&lt;/p>
&lt;h2 class="relative group">What You Should Do Right Now
&lt;div id="what-you-should-do-right-now" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-you-should-do-right-now" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Both tools are available today, though they&amp;rsquo;re still in preview status. Before you can use them, you&amp;rsquo;ll need a GitHub Copilot Pro+ subscription, and if you&amp;rsquo;re in an organization, make sure the CLI policy is enabled. Keep in mind that since these are preview features, they may change significantly without notice.&lt;/p>
&lt;p>Getting started is straightforward - update your GitHub CLI to version 2.80.0 with &lt;code>gh --upgrade&lt;/code> and install the standalone Copilot CLI with &lt;code>npm install -g @github/copilot&lt;/code>. But the real strategy is in how you use them together.&lt;/p>
&lt;p>Start with quick wins rather than trying to automate everything at once. Use the Copilot CLI for those daily terminal tasks you&amp;rsquo;re always googling - you&amp;rsquo;ll be surprised how much faster it is than switching to a browser. For agent-tasks, pick one annoying maintenance job you do weekly and delegate that first.&lt;/p>
&lt;p>As you get comfortable, you&amp;rsquo;ll start to notice a natural rhythm emerging. The Copilot CLI becomes your thinking partner for quick questions and planning, while agent-tasks handle anything that takes more than fifteen minutes of sustained work. The real breakthrough happens when you start chaining them together - using insights from the interactive CLI to inform the work you delegate to the coding agent.&lt;/p>
&lt;p>The teams that figure out this combination first are going to operate at a completely different level. They won&amp;rsquo;t just ship faster. They&amp;rsquo;ll build intelligent systems that improve themselves while the team focuses on innovation and strategy rather than maintenance and routine tasks.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/github-dual-cli-release-reshaping-development/feature.png"/></item><item><title>Hiring Developers in the Age of AI: What Actually Matters Now</title><link>https://pinishv.com/articles/hiring-developers-in-the-age-of-ai-what-actually-matters-now/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/hiring-developers-in-the-age-of-ai-what-actually-matters-now/</guid><description>LeetCode is dead. With AI writing the code, we need to fundamentally rethink how we identify and hire the developers who will actually thrive in 2025 and beyond.</description><content:encoded>&lt;p>Let&amp;rsquo;s be honest: &lt;strong>LeetCode is dead&lt;/strong>.&lt;/p>
&lt;p>Not because solving algorithm puzzles was ever the perfect way to measure real-world skills, but because today it&amp;rsquo;s simply irrelevant. With GenAI tools writing clean code, fixing bugs, and suggesting multiple solution paths before lunch, traditional coding tests have lost their predictive power.&lt;/p>
&lt;p>I&amp;rsquo;ve seen the earthquake that AI has caused in our industry over the past two years. The results have been staggering: teams that embraced AI and shifted focus from raw coding ability to systems thinking and AI collaboration aren&amp;rsquo;t just doing better, they&amp;rsquo;re demolishing their competition. I&amp;rsquo;m talking 2-3x faster delivery times, dramatically fewer production issues, and consistently better architectural decisions.&lt;/p>
&lt;p>So if not coding tests, then what? What should we actually be looking for when we hire developers now?&lt;/p>
&lt;h2 class="relative group">The Old Way (And Why It Worked&amp;hellip; Until Now)
&lt;div id="the-old-way-and-why-it-worked-until-now" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-old-way-and-why-it-worked-until-now" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The traditional approach was elegantly simple:&lt;/p>
&lt;ol>
&lt;li>Throw candidates into a coding challenge&lt;/li>
&lt;li>Test their ability to debug, write clean functions, and handle scale&lt;/li>
&lt;li>Hire the ones who could execute under pressure&lt;/li>
&lt;/ol>
&lt;p>It worked decently well for building teams of strong individual contributors. We got developers who could implement features, fix bugs, and optimize performance; exactly what we needed when writing code was the primary bottleneck.&lt;/p>
&lt;h2 class="relative group">Why That Mental Model Is Broken
&lt;div id="why-that-mental-model-is-broken" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-that-mental-model-is-broken" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s the uncomfortable truth: &lt;strong>writing code is now tactical work.&lt;/strong>&lt;/p>
&lt;p>I&amp;rsquo;ve watched junior developers with six months of experience use Claude or Cursor to produce code that would have taken senior developers hours to write just two years ago. The AI handles boilerplate, suggests optimizations, and even catches edge cases that humans regularly miss.&lt;/p>
&lt;p>The real bottleneck isn&amp;rsquo;t typing code anymore, it&amp;rsquo;s knowing what to build, how to design it, and how to guide AI to get you there safely.&lt;/p>
&lt;p>Talking with hiring managers and candidates, a clear pattern emerges: many candidates who excel at complex LeetCode problems struggle to design a simple feature end-to-end. They know algorithms but not architecture. They can optimize a function but can&amp;rsquo;t decompose a business problem.&lt;/p>
&lt;p>Those candidates wouldn&amp;rsquo;t last six months on a modern development team.&lt;/p>
&lt;h2 class="relative group">What We Actually Need Now: The New Developer Profile
&lt;div id="what-we-actually-need-now-the-new-developer-profile" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#what-we-actually-need-now-the-new-developer-profile" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The developers you want on your team in 2025 aren&amp;rsquo;t &amp;ldquo;code monkeys.&amp;rdquo; They&amp;rsquo;re system architects with hands-on pragmatism and AI fluency.&lt;/p>
&lt;p>Here&amp;rsquo;s what I actively look for:&lt;/p>
&lt;h3 class="relative group">Systems Thinking
&lt;div id="systems-thinking" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#systems-thinking" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>They see the whole picture without blind spots. When you describe a feature, they immediately start asking about data flow, failure modes, and integration points. They think in terms of systems, not just functions.&lt;/p>
&lt;h3 class="relative group">Architectural Reasoning
&lt;div id="architectural-reasoning" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#architectural-reasoning" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>They can translate messy business problems into clean technical blueprints. More importantly, they can explain their design decisions and trade-offs to both technical and non-technical stakeholders.&lt;/p>
&lt;h3 class="relative group">Problem Decomposition
&lt;div id="problem-decomposition" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#problem-decomposition" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>They break down complexity into clear, buildable parts. They don&amp;rsquo;t get overwhelmed by large problems, they methodically slice them into manageable pieces and tackle them systematically.&lt;/p>
&lt;h3 class="relative group">AI Collaboration Skills
&lt;div id="ai-collaboration-skills" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#ai-collaboration-skills" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This is the big one. They know how to write effective prompts, guide AI tools toward useful solutions, and—critically—review AI output for correctness and maintainability. They&amp;rsquo;re not intimidated by AI; they&amp;rsquo;re empowered by it.&lt;/p>
&lt;h3 class="relative group">Quality Gatekeeping
&lt;div id="quality-gatekeeping" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#quality-gatekeeping" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>They maintain high standards when AI &amp;ldquo;gets creative.&amp;rdquo; They catch hallucinations, spot security issues, and ensure that generated code meets production standards.&lt;/p>
&lt;p>In short: &lt;strong>I want generalists who can connect the dots across the entire system, not specialists who excel at optimizing one corner.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">How We Test for This: A Practical Interview Framework
&lt;div id="how-we-test-for-this-a-practical-interview-framework" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-we-test-for-this-a-practical-interview-framework" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I&amp;rsquo;ve completely restructured my interview process around two core evaluations:&lt;/p>
&lt;h3 class="relative group">Interview 1: Architecture &amp;amp; Systems Design (60 minutes)
&lt;div id="interview-1-architecture--systems-design-60-minutes" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#interview-1-architecture--systems-design-60-minutes" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Present a realistic business problem and watch how they think through it. I&amp;rsquo;m not looking for the &amp;ldquo;perfect&amp;rdquo; solution, I want to see their thought process.&lt;/p>
&lt;p>&lt;strong>What I&amp;rsquo;m evaluating: What questions do they think to ask.&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Do they ask clarifying questions about scale, requirements, and constraints?&lt;/li>
&lt;li>Can they sketch out data models, API contracts, and system boundaries?&lt;/li>
&lt;li>Do they consider failure modes, monitoring, and rollback strategies?&lt;/li>
&lt;li>Can they explain complex technical decisions in simple terms?&lt;/li>
&lt;/ul>
&lt;p>I don&amp;rsquo;t mind if candidates don&amp;rsquo;t immediately know the answers - in fact, I expect them to leverage AI for help. What I&amp;rsquo;m really evaluating is whether they know what questions need to be asked in the first place. The best candidates:&lt;/p>
&lt;ul>
&lt;li>Think out loud and demonstrate their reasoning process&lt;/li>
&lt;li>Ask insightful questions that reveal system-level thinking&lt;/li>
&lt;li>Know when and how to use AI effectively to fill knowledge gaps&lt;/li>
&lt;li>Arrive at pragmatic solutions that account for real-world constraints&lt;/li>
&lt;/ul>
&lt;p>It&amp;rsquo;s not about having all the answers memorized - it&amp;rsquo;s about knowing which questions matter and how to find answers systematically.&lt;/p>
&lt;h3 class="relative group">Interview 2: Problem Analysis + AI Collaboration (90 minutes)
&lt;div id="interview-2-problem-analysis--ai-collaboration-90-minutes" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#interview-2-problem-analysis--ai-collaboration-90-minutes" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This is where the magic happens. I give candidates access to their preferred AI tools (Cursor, Claude, ChatGPT, whatever) and present a realistic development challenge.&lt;/p>
&lt;p>&lt;strong>Example:&lt;/strong> &amp;ldquo;Our API response times have increased 300% over the past month. Here&amp;rsquo;s our codebase and monitoring data. Figure out what&amp;rsquo;s wrong and propose a fix.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>What I&amp;rsquo;m evaluating: Managing the process.&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>How do they break down the investigation process?&lt;/li>
&lt;li>What prompts do they write to get useful AI assistance?&lt;/li>
&lt;li>How do they verify AI suggestions before implementing them?&lt;/li>
&lt;li>Do they maintain code quality standards while moving fast?&lt;/li>
&lt;li>Can they explain their findings and proposed solution clearly?&lt;/li>
&lt;/ul>
&lt;p>This interview reveals exactly how they think, how they collaborate with AI, and whether they hold themselves to high standards when tools are doing the heavy lifting.&lt;/p>
&lt;h2 class="relative group">A Note to Technical Recruiters (This Could Change Your Game)
&lt;div id="a-note-to-technical-recruiters-this-could-change-your-game" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#a-note-to-technical-recruiters-this-could-change-your-game" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;re screening candidates, stop filtering solely on &amp;ldquo;years of Java experience&amp;rdquo; or &amp;ldquo;React expertise.&amp;rdquo; Those metrics are becoming less predictive by the month.&lt;/p>
&lt;p>Instead, ask these questions:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>&amp;ldquo;Walk me through how you&amp;rsquo;d approach building [specific system] from scratch.&amp;rdquo;&lt;/strong> Listen for systems thinking and architectural reasoning.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&amp;ldquo;Tell me about a time you used AI tools in development. What worked well? What didn&amp;rsquo;t?&amp;rdquo;&lt;/strong> You want candidates who&amp;rsquo;ve thoughtfully integrated AI into their workflow.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&amp;ldquo;How do you ensure code quality when using AI assistance?&amp;rdquo;&lt;/strong> The best candidates have developed personal standards and review processes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>&amp;ldquo;Describe a complex problem you&amp;rsquo;ve broken down into smaller parts.&amp;rdquo;&lt;/strong> Problem decomposition skills transfer across technologies and domains.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Helping your hiring managers identify these profiles will make you stand out in a crowded market. You&amp;rsquo;ll be the recruiter who actually understands what modern development teams need.&lt;/p>
&lt;h2 class="relative group">The Competitive Advantage: Speed vs. Wisdom
&lt;div id="the-competitive-advantage-speed-vs-wisdom" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-competitive-advantage-speed-vs-wisdom" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what I&amp;rsquo;ve learned from teams that have successfully made this transition: the companies winning in the AI era aren&amp;rsquo;t just moving faster, they&amp;rsquo;re making better decisions faster.&lt;/p>
&lt;p>When your developers can think architecturally and collaborate effectively with AI, you get both velocity and quality. Features ship quickly, but they&amp;rsquo;re well-designed, maintainable, and robust.&lt;/p>
&lt;p>When you hire traditional &amp;ldquo;coders&amp;rdquo; who struggle with AI collaboration, you get neither speed nor quality. They&amp;rsquo;re intimidated by the tools, suspicious of AI output, and spend too much time doing things that should be automated.&lt;/p>
&lt;h2 class="relative group">What&amp;rsquo;s Next: The Future of Developer Hiring
&lt;div id="whats-next-the-future-of-developer-hiring" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#whats-next-the-future-of-developer-hiring" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The industry is already splitting into two camps: companies that have modernized their hiring practices and those still clinging to the old ways.&lt;/p>
&lt;p>The companies in the first camp are building teams of AI-augmented architects who can design and deliver complex systems at unprecedented speed.&lt;/p>
&lt;p>The companies in the second camp are collecting strong individual contributors who excel at tasks that AI is increasingly handling better.&lt;/p>
&lt;p>Guess which teams will be more competitive in 2026?&lt;/p>
&lt;p>The way we hire has to evolve, and it has to evolve now. Code challenges won&amp;rsquo;t disappear overnight, but their value is fading rapidly. If you&amp;rsquo;re still hiring the &amp;ldquo;old way,&amp;rdquo; you&amp;rsquo;re probably missing the kind of people who will thrive in the AI-driven future of software development.&lt;/p>
&lt;h2 class="relative group">The Bottom Line
&lt;div id="the-bottom-line" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottom-line" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>The transition is already happening. The question isn&amp;rsquo;t whether to change your hiring process, it&amp;rsquo;s whether you&amp;rsquo;ll change it proactively or be forced to change it when your competitors start outshipping you with smaller teams.&lt;/p>
&lt;p>I&amp;rsquo;ve seen this transformation up close. Companies that embrace it early get first pick of the best AI-native talent. Companies that wait find themselves competing for a shrinking pool of traditional developers who may not be equipped for the future of software development.&lt;/p>
&lt;h2 class="relative group">Want More Guidance?
&lt;div id="want-more-guidance" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#want-more-guidance" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I&amp;rsquo;ll be publishing a follow-up article specifically for developers looking to thrive in this AI-driven job market. We&amp;rsquo;ll cover:&lt;/p>
&lt;ul>
&lt;li>How to demonstrate your architectural thinking in interviews&lt;/li>
&lt;li>Building a portfolio that showcases your AI collaboration skills&lt;/li>
&lt;li>Practical exercises to strengthen your system design abilities&lt;/li>
&lt;li>Tips for discussing AI tools without overselling them&lt;/li>
&lt;/ul>
&lt;p>Stay tuned. The future of development is exciting, and I want to help you be ready for it.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/hiring-developers-in-the-age-of-ai-what-actually-matters-now/feature.png"/></item><item><title>RAG for Developers: A No-BS Introduction</title><link>https://pinishv.com/articles/rag-for-developers-a-no-bs-introduction/</link><pubDate>Sun, 21 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/rag-for-developers-a-no-bs-introduction/</guid><description>Developers keep asking me to explain RAG. Here&amp;rsquo;s the straightforward explanation: it&amp;rsquo;s the difference between an AI that makes stuff up and one that actually knows your company&amp;rsquo;s data.</description><content:encoded>&lt;p>I&amp;rsquo;m being asked by developers from time to time to explain what RAG is. Usually, it&amp;rsquo;s because they&amp;rsquo;ve heard the term thrown around in AI circles, or their company is evaluating whether to build a RAG system, or they&amp;rsquo;re trying to figure out if it&amp;rsquo;s just another AI buzzword.&lt;/p>
&lt;p>Here&amp;rsquo;s the straightforward answer: &lt;strong>RAG stands for Retrieval-Augmented Generation, and it&amp;rsquo;s the difference between an AI that makes stuff up and one that actually knows your company&amp;rsquo;s data.&lt;/strong>&lt;/p>
&lt;p>Think of an LLM like a brilliant new hire who has read the entire internet up to a certain date. They know a ton, but their knowledge is frozen in time, and they don&amp;rsquo;t know anything about your company&amp;rsquo;s private data; your internal wiki, your codebase, your support tickets, your processes.&lt;/p>
&lt;p>You have two ways to get this new hire up to speed:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Fine-Tuning:&lt;/strong> Send them to an intense, months-long training program. You retrain the model on your specific data. It&amp;rsquo;s powerful, but it&amp;rsquo;s slow, expensive, and you have to do it all over again every time your data changes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>RAG:&lt;/strong> Give them access to your company&amp;rsquo;s internal search engine. When they get a question, they first search for the most relevant documents and &lt;em>then&lt;/em> use their intelligence to formulate an answer based on what they found.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>RAG is the second approach. It&amp;rsquo;s a surprisingly simple way to make LLMs smarter, more accurate, and more useful by connecting them to live, external data sources.&lt;/p>
&lt;h2 class="relative group">How RAG Actually Works
&lt;div id="how-rag-actually-works" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#how-rag-actually-works" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>At its core, RAG is a two-step process. When you ask a question, the system doesn&amp;rsquo;t just pass it directly to the LLM.&lt;/p>
&lt;h3 class="relative group">Step 1: Retrieval (The &amp;ldquo;R&amp;rdquo;)
&lt;div id="step-1-retrieval-the-r" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-1-retrieval-the-r" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>First, the system takes your question and searches for relevant information. This isn&amp;rsquo;t keyword search, it&amp;rsquo;s semantic search that looks for meaning and context, not just matching words.&lt;/p>
&lt;p>Here&amp;rsquo;s where the magic happens:&lt;/p>
&lt;p>&lt;strong>Embeddings:&lt;/strong> An embedding model converts your text (documents, sentences, your question) into a vector, a list of numbers that represents the text&amp;rsquo;s meaning. Think of it like GPS coordinates for information. Texts with similar meanings get similar vectors and end up &amp;ldquo;close&amp;rdquo; to each other in high-dimensional space.&lt;/p>
&lt;p>&lt;strong>Vector Database:&lt;/strong> This is where you store and search through these vectors incredibly fast. When your question comes in, the system creates an embedding of the question and uses the vector database to find the text chunks whose vectors are closest to your question&amp;rsquo;s vector. Popular options include Pinecone, Chroma, and Weaviate.&lt;/p>
&lt;p>&lt;strong>Chunking:&lt;/strong> You don&amp;rsquo;t dump entire documents into the database. You break them down into logical pieces or &amp;ldquo;chunks.&amp;rdquo; This makes search results more precise and relevant.&lt;/p>
&lt;p>The retrieval step finds the most relevant chunks of text from your knowledge base and passes them to the next step.&lt;/p>
&lt;h3 class="relative group">Step 2: Augmentation and Generation (The &amp;ldquo;AG&amp;rdquo;)
&lt;div id="step-2-augmentation-and-generation-the-ag" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#step-2-augmentation-and-generation-the-ag" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>This part is straightforward. The system takes your original question and &amp;ldquo;augments&amp;rdquo; it by stuffing the relevant text chunks right into the prompt.&lt;/p>
&lt;p>The final prompt sent to the LLM looks like this:&lt;/p>
&lt;pre tabindex="0">&lt;code>Context: [Here are the relevant text chunks we found...]
Based on the context above, answer this question: [Your original question...]
&lt;/code>&lt;/pre>&lt;p>The LLM uses its reasoning ability to synthesize an answer based &lt;em>only on the provided context&lt;/em>. This simple trick dramatically improves the quality and accuracy of the output.&lt;/p>
&lt;h2 class="relative group">Why You Should Care
&lt;div id="why-you-should-care" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-you-should-care" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Okay, so the tech is interesting. But what does it actually mean for you as a developer?&lt;/p>
&lt;p>&lt;strong>It fights hallucinations.&lt;/strong> The biggest problem with LLMs is that they sometimes make stuff up with incredible confidence. RAG grounds the LLM in facts. By forcing it to base answers on documents you provide, you drastically reduce hallucination.&lt;/p>
&lt;p>&lt;strong>Your data stays yours.&lt;/strong> With RAG, you&amp;rsquo;re not retraining a model or sending sensitive data to third parties. The knowledge base lives in your infrastructure. You&amp;rsquo;re just pulling relevant pieces at query time.&lt;/p>
&lt;p>&lt;strong>It&amp;rsquo;s always up-to-date.&lt;/strong> Company wiki updated? New support ticket? Just create an embedding and add it to your vector database. The LLM can use this information instantly. Compare that to the pain of constantly fine-tuning a model.&lt;/p>
&lt;p>&lt;strong>You can cite sources.&lt;/strong> Because you know exactly which chunks were used to generate the answer, you can easily add citations. This builds trust in your application, whether it&amp;rsquo;s an internal chatbot or public-facing support system.&lt;/p>
&lt;h2 class="relative group">RAG vs. Fine-Tuning: When to Use What
&lt;div id="rag-vs-fine-tuning-when-to-use-what" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#rag-vs-fine-tuning-when-to-use-what" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s the practical breakdown:&lt;/p>
&lt;h3 class="relative group">Use RAG when:
&lt;div id="use-rag-when" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#use-rag-when" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;ul>
&lt;li>You need to ground the LLM in specific, factual, changing information&lt;/li>
&lt;li>You need to prevent hallucinations and cite sources&lt;/li>
&lt;li>Your application is knowledge-based (Q&amp;amp;A on documents, custom support bot)&lt;/li>
&lt;li>You want your AI to know about recent information&lt;/li>
&lt;/ul>
&lt;h3 class="relative group">Use Fine-Tuning when:
&lt;div id="use-fine-tuning-when" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#use-fine-tuning-when" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;ul>
&lt;li>You need to change the LLM&amp;rsquo;s &lt;em>behavior&lt;/em>, &lt;em>style&lt;/em>, or &lt;em>tone&lt;/em>&lt;/li>
&lt;li>You want it to learn specific domain language or formats&lt;/li>
&lt;li>You need it to always respond in a particular way (like generating code in a niche programming language)&lt;/li>
&lt;/ul>
&lt;p>They aren&amp;rsquo;t mutually exclusive. You can use RAG on a fine-tuned model for the best of both worlds. But &lt;strong>for most developers starting out, RAG is the most direct, cheapest, and effective way to build powerful, fact-based AI applications.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">The Real-World Impact
&lt;div id="the-real-world-impact" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-real-world-impact" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here are some quick wins for teams looking to implement RAG:&lt;/p>
&lt;p>&lt;strong>Support teams&lt;/strong> should build chatbots that can answer customer questions using the actual documentation, not hallucinated answers that sound plausible but are wrong.&lt;/p>
&lt;p>&lt;strong>Engineering teams&lt;/strong> should create internal assistants that can explain legacy codebases, find relevant examples, and help onboard new developers using actual project documentation and code comments.&lt;/p>
&lt;p>&lt;strong>Product teams&lt;/strong> should build recommendation systems that use real product data, user feedback, and business context rather than generic suggestions.&lt;/p>
&lt;p>The pattern is consistent: RAG turns general-purpose AI into domain-specific expertise. And that&amp;rsquo;s where the real value lives.&lt;/p>
&lt;h2 class="relative group">The Bottom Line
&lt;div id="the-bottom-line" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottom-line" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>RAG isn&amp;rsquo;t magic, it&amp;rsquo;s engineering. It&amp;rsquo;s a straightforward pattern that solves a real problem: how to make AI systems that are both intelligent and accurate.&lt;/p>
&lt;p>If you&amp;rsquo;re building AI applications that need to be grounded in facts, cite sources, or work with private data, RAG should be on your radar. The infrastructure is mature, the patterns are proven, and the results speak for themselves.&lt;/p>
&lt;p>The future belongs to AI systems that combine the reasoning power of large language models with the accuracy of real data. RAG is how you get there.&lt;/p></content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://pinishv.com/articles/rag-for-developers-a-no-bs-introduction/feature.png"/></item><item><title>The Context Engine: What Comes After We've Solved Code Generation</title><link>https://pinishv.com/articles/the-context-engine-what-comes-after-weve-solved-code-generation/</link><pubDate>Fri, 19 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/the-context-engine-what-comes-after-weve-solved-code-generation/</guid><description>We&amp;rsquo;ve largely solved the context problem in AI coding tools. RAG systems ingest our docs, codebase-aware assistants understand our architecture, and operational feedback loops are closing. So what&amp;rsquo;s next? The real opportunity isn&amp;rsquo;t building better context engines—it&amp;rsquo;s leveraging them to fundamentally reshape how we think about software development.</description><content:encoded>&lt;p>We&amp;rsquo;ve largely won the context war. RAG systems seamlessly ingest our documentation. Tools like Cursor and GitHub Copilot understand entire codebases. Error monitoring platforms like Sentry now provide AI-powered root cause analysis. The basic infrastructure for AI-powered development is here, deployed, and working.&lt;/p>
&lt;p>But here&amp;rsquo;s what I&amp;rsquo;m seeing in organizations that have moved beyond the &amp;ldquo;wow, AI can write code&amp;rdquo; phase: &lt;strong>the real opportunity isn&amp;rsquo;t building better context engines—it&amp;rsquo;s using them to fundamentally reshape how we approach software development.&lt;/strong>&lt;/p>
&lt;p>The question is no longer &amp;ldquo;How do we make AI understand our code?&amp;rdquo; It&amp;rsquo;s &amp;ldquo;Now that AI understands our code better than most humans, what becomes possible?&amp;rdquo;&lt;/p>
&lt;p>The answer is a shift from reactive to predictive development. From managing technical debt to preventing it. From architectural drift to architectural evolution. Let me show you what this looks like.&lt;/p>
&lt;h2 class="relative group">The Architectural Evolution Engine
&lt;div id="the-architectural-evolution-engine" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-architectural-evolution-engine" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>With context engines in place, we can now tackle something that&amp;rsquo;s been impossible until now: &lt;strong>real-time architectural evolution&lt;/strong>. Instead of letting architecture drift and then scrambling to fix it, AI can now guide architectural decisions as they happen.&lt;/p>
&lt;p>&lt;strong>The New Reality:&lt;/strong> Your AI assistant doesn&amp;rsquo;t just understand your current architecture—it understands the &lt;em>intent&lt;/em> behind it. When a developer is about to introduce a new dependency or pattern, the AI can say: &amp;ldquo;This breaks the bounded context principle we established for the payment service. Here are three alternatives that maintain architectural integrity.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Beyond Code Review:&lt;/strong> Traditional code review catches syntax and logic errors. AI-powered architectural review catches &lt;em>conceptual&lt;/em> errors. It can detect when a change violates domain boundaries, introduces circular dependencies, or creates coupling that will cause problems six months from now.&lt;/p>
&lt;p>&lt;strong>The Impact:&lt;/strong> Architecture becomes a living, enforced discipline rather than a document that gets outdated. Teams can move fast while maintaining long-term system health.&lt;/p>
&lt;h2 class="relative group">The Technical Debt Prevention System
&lt;div id="the-technical-debt-prevention-system" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-technical-debt-prevention-system" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s where it gets interesting. With full codebase understanding, AI can now predict technical debt before it accumulates. Instead of paying down debt, we can prevent it from accruing in the first place.&lt;/p>
&lt;p>&lt;strong>Debt Pattern Recognition:&lt;/strong> AI systems can now identify the early warning signs of technical debt: duplicated logic patterns, growing function complexity, increasing coupling between modules. But more importantly, they can suggest refactoring &lt;em>before&lt;/em> the debt becomes painful.&lt;/p>
&lt;p>&lt;strong>The Compound Interest Problem:&lt;/strong> Technical debt compounds like financial debt. A small architectural inconsistency today becomes a major refactoring effort next year. AI can now calculate the &amp;ldquo;interest rate&amp;rdquo; of technical decisions and surface this to developers in real-time.&lt;/p>
&lt;p>&lt;strong>Proactive Refactoring:&lt;/strong> Instead of waiting for code to become unmaintainable, AI can suggest micro-refactorings during normal development. &amp;ldquo;I notice this function is growing complex and similar logic exists in three other places. Would you like me to extract a shared utility?&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>The Impact:&lt;/strong> Teams spend less time fighting legacy code and more time building new features. Technical debt becomes a managed, predictable cost rather than a surprise that derails projects.&lt;/p>
&lt;h2 class="relative group">The Predictive Operations Layer
&lt;div id="the-predictive-operations-layer" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-predictive-operations-layer" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This is where the future gets really exciting. With operational data flowing back into our context engines, we can move from reactive incident response to predictive system health management.&lt;/p>
&lt;p>&lt;strong>Performance Regression Prevention:&lt;/strong> AI can now analyze code changes against historical performance data and predict: &amp;ldquo;This database query pattern caused a 40% slowdown in the user service last month. The current change introduces a similar pattern in the payment service.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Failure Pattern Recognition:&lt;/strong> Instead of waiting for systems to fail, AI can recognize the precursor patterns. &amp;ldquo;CPU usage is trending upward in a pattern that preceded the last three outages. The common factor appears to be this background job that was modified two weeks ago.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Capacity Planning as Code:&lt;/strong> AI can now predict resource needs based on code complexity and usage patterns. &amp;ldquo;The new feature you&amp;rsquo;re building will likely increase database load by 30% based on similar features. Here&amp;rsquo;s the infrastructure scaling plan.&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>The Impact:&lt;/strong> Operations becomes predictive rather than reactive. Teams prevent incidents instead of responding to them. System reliability improves while operational overhead decreases.&lt;/p>
&lt;h2 class="relative group">The Development Paradigm Shift
&lt;div id="the-development-paradigm-shift" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-development-paradigm-shift" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>We&amp;rsquo;re standing at an inflection point. The basic infrastructure for AI-powered development is largely solved. The question now is: what do we do with this unprecedented capability?&lt;/p>
&lt;p>The organizations that will thrive in the next phase are those that use AI not just to write code faster, but to &lt;strong>fundamentally rethink how software is built and maintained&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>From reactive to predictive:&lt;/strong> Instead of fixing problems, prevent them.&lt;/li>
&lt;li>&lt;strong>From debt management to debt prevention:&lt;/strong> Instead of paying down technical debt, avoid accruing it.&lt;/li>
&lt;li>&lt;strong>From architectural drift to architectural evolution:&lt;/strong> Instead of letting systems decay, guide their growth.&lt;/li>
&lt;li>&lt;strong>From incident response to system health:&lt;/strong> Instead of reacting to failures, predict and prevent them.&lt;/li>
&lt;/ul>
&lt;p>This isn&amp;rsquo;t about better tools—it&amp;rsquo;s about better practices enabled by AI that understands our systems as well as we do.&lt;/p>
&lt;p>The future of software development isn&amp;rsquo;t just AI that can code. It&amp;rsquo;s AI that can think architecturally, predict operationally, and evolve systematically. The context engine was just the beginning.&lt;/p></content:encoded></item><item><title>I'm Pro-AI. That's Exactly Why I'm Worried About Our Next Senior Engineers</title><link>https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/</link><pubDate>Thu, 18 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/im-pro-ai-thats-exactly-why-im-worried-about-our-next-senior-engineers/</guid><description>A guide for engineering managers on growing junior developers in an AI-heavy world, and for junior developers who want to stand out beyond just being &amp;lsquo;AI operators.&amp;rsquo;</description><content:encoded>&lt;p>I&amp;rsquo;m the person inside my company who pushes AI. I run pilots, set policies, and cheer when a team ships twice as fast with a good copilot. I&amp;rsquo;m not a doomer. But I keep bumping into a hard question that&amp;rsquo;s keeping some people up at night:&lt;/p>
&lt;p>&lt;strong>What happens to the next generation of senior engineers if AI eats all the work that used to grow them?&lt;/strong>&lt;/p>
&lt;p>This question hits differently depending on where you sit. If you&amp;rsquo;re an &lt;strong>engineering manager&lt;/strong>, you might have junior developers on your team right now who are impressively good with AI tools but struggle when those tools fail. If you&amp;rsquo;re a &lt;strong>junior developer&lt;/strong>, you might wonder how to stand out in a world where everyone can prompt their way to working code.&lt;/p>
&lt;p>Both of you are facing the same challenge: in a world of AI-assisted development, how do you build (or grow) engineers who can think beyond the tool?&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/TNeVpNdDyhQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;h2 class="relative group">The real problem: AI operators vs. AI-augmented engineers
&lt;div id="the-real-problem-ai-operators-vs-ai-augmented-engineers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-real-problem-ai-operators-vs-ai-augmented-engineers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what I&amp;rsquo;m seeing across teams: we&amp;rsquo;re accidentally creating two types of junior developers.&lt;/p>
&lt;p>&lt;strong>Type 1: AI Operators&lt;/strong> - They&amp;rsquo;re fast with prompts, great at stitching together tool outputs, and can ship features quickly. But they struggle when the AI is wrong, when context is missing, or when they need to debug something the model has never seen.&lt;/p>
&lt;p>&lt;strong>Type 2: AI-Augmented Engineers&lt;/strong> - They use AI aggressively but maintain the ability to reason from first principles. When the copilot fails, they don&amp;rsquo;t panic—they switch to manual mode and solve the problem.&lt;/p>
&lt;p>Guess which type becomes your next senior engineer?&lt;/p>
&lt;p>The difference isn&amp;rsquo;t talent—it&amp;rsquo;s how they learned to work with AI. The first group learned with AI as a teacher; the second learned with AI as a tool.&lt;/p>
&lt;h2 class="relative group">For Engineering Managers: Growing AI-Augmented Engineers
&lt;div id="for-engineering-managers-growing-ai-augmented-engineers" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-engineering-managers-growing-ai-augmented-engineers" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you manage junior developers, you have the power to shape which type they become. Here&amp;rsquo;s your playbook:&lt;/p>
&lt;h3 class="relative group">Design &amp;ldquo;AI-off hours&amp;rdquo;
&lt;div id="design-ai-off-hours" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#design-ai-off-hours" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Block out 2-3 hours per week where your juniors solve problems without AI assistance. Yes, they&amp;rsquo;ll be slower. That&amp;rsquo;s the point. They&amp;rsquo;re building mental models they&amp;rsquo;ll need when the AI is wrong or unavailable.&lt;/p>
&lt;p>&lt;strong>Example:&lt;/strong> Give them a bug that requires reading logs, tracing execution, and writing a fix from scratch. No copilot, no ChatGPT. Just them, the debugger, and their brain.&lt;/p>
&lt;h3 class="relative group">Create critical-thinking exercises
&lt;div id="create-critical-thinking-exercises" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#create-critical-thinking-exercises" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Present two plausible AI-generated solutions to the same problem. Ask your junior to pick one and defend their choice with tests, performance metrics, and trade-off analysis.&lt;/p>
&lt;p>&lt;strong>Why this works:&lt;/strong> You&amp;rsquo;re not testing their ability to prompt—you&amp;rsquo;re testing their ability to evaluate, which is what senior engineers do all day.&lt;/p>
&lt;h3 class="relative group">Make AI transparency mandatory
&lt;div id="make-ai-transparency-mandatory" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#make-ai-transparency-mandatory" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>In code reviews, ask juniors to include their prompts and explain their verification process. Don&amp;rsquo;t just review the code—review how they worked with the AI.&lt;/p>
&lt;p>&lt;strong>Questions to ask:&lt;/strong> &amp;ldquo;How did you validate this suggestion?&amp;rdquo; &amp;ldquo;What did you do when the first attempt didn&amp;rsquo;t work?&amp;rdquo; &amp;ldquo;How confident are you that this handles edge cases?&amp;rdquo;&lt;/p>
&lt;h3 class="relative group">Rotate &amp;ldquo;first-principles on-call&amp;rdquo;
&lt;div id="rotate-first-principles-on-call" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#rotate-first-principles-on-call" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>When systems break, give juniors the first shot at diagnosing (with a senior on backup). They need to learn how to read logs, trace problems, and write clear incident reports without AI assistance.&lt;/p>
&lt;h3 class="relative group">Pair AI-natives with domain veterans
&lt;div id="pair-ai-natives-with-domain-veterans" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#pair-ai-natives-with-domain-veterans" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Your best senior engineer might not prompt as smoothly as your junior, but they know every edge case in your system. Pair them. The junior learns context; the senior learns tools.&lt;/p>
&lt;h2 class="relative group">For Junior Developers: How to Stand Out
&lt;div id="for-junior-developers-how-to-stand-out" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#for-junior-developers-how-to-stand-out" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>If you&amp;rsquo;re a junior developer, here&amp;rsquo;s how to differentiate yourself from the crowd of AI operators:&lt;/p>
&lt;h3 class="relative group">Build your &amp;ldquo;no-AI&amp;rdquo; skills
&lt;div id="build-your-no-ai-skills" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#build-your-no-ai-skills" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Spend time every week solving problems without AI assistance. Pick small challenges: write a sorting algorithm by hand, debug a performance issue using only profiling tools, trace through a complex codebase to understand how data flows.&lt;/p>
&lt;p>&lt;strong>Why this matters:&lt;/strong> When you&amp;rsquo;re the only person in the room who can debug the AI&amp;rsquo;s output, you become indispensable.&lt;/p>
&lt;h3 class="relative group">Learn to evaluate AI output critically
&lt;div id="learn-to-evaluate-ai-output-critically" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#learn-to-evaluate-ai-output-critically" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Don&amp;rsquo;t just accept what the AI gives you. Ask: &amp;ldquo;Is this the best approach?&amp;rdquo; &amp;ldquo;What are the trade-offs?&amp;rdquo; &amp;ldquo;How would this perform at scale?&amp;rdquo; &amp;ldquo;What happens if this assumption is wrong?&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>Practice exercise:&lt;/strong> Take an AI-generated solution and try to break it. Write tests that expose its weaknesses. Then improve it.&lt;/p>
&lt;h3 class="relative group">Become an AI transparency expert
&lt;div id="become-an-ai-transparency-expert" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#become-an-ai-transparency-expert" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>Document your AI workflows. Show your manager not just what you built, but how you used AI to build it, what you validated, and where you made decisions the AI couldn&amp;rsquo;t make.&lt;/p>
&lt;p>&lt;strong>Career benefit:&lt;/strong> This demonstrates judgment, not just tool proficiency. Judgment is what gets you promoted.&lt;/p>
&lt;h3 class="relative group">Volunteer for &amp;ldquo;AI-unfriendly&amp;rdquo; tasks
&lt;div id="volunteer-for-ai-unfriendly-tasks" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#volunteer-for-ai-unfriendly-tasks" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>When something breaks at 2 AM and the AI doesn&amp;rsquo;t understand your legacy system, volunteer to dive in. When there&amp;rsquo;s a gnarly performance issue that requires deep system knowledge, raise your hand.&lt;/p>
&lt;p>&lt;strong>The pattern:&lt;/strong> While others rely on AI for everything, you become the person who can work when AI can&amp;rsquo;t help.&lt;/p>
&lt;h3 class="relative group">Study the fundamentals
&lt;div id="study-the-fundamentals" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#study-the-fundamentals" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>AI can&amp;rsquo;t replace understanding of data structures, algorithms, system design, and debugging. Invest time in these foundations. They&amp;rsquo;re your differentiator in a world of prompt engineers.&lt;/p>
&lt;h3 class="relative group">Ask senior engineers about their &amp;ldquo;pre-AI&amp;rdquo; war stories
&lt;div id="ask-senior-engineers-about-their-pre-ai-war-stories" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#ask-senior-engineers-about-their-pre-ai-war-stories" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h3>
&lt;p>How did they debug race conditions? How did they optimize that critical query? How did they design that tricky API? Learn from their mental models, not just their code.&lt;/p>
&lt;h2 class="relative group">The uncomfortable truth about career paths
&lt;div id="the-uncomfortable-truth-about-career-paths" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-uncomfortable-truth-about-career-paths" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Here&amp;rsquo;s what I tell the junior developers I mentor: the market is about to be flooded with people who can use AI tools effectively. That&amp;rsquo;s not special anymore—it&amp;rsquo;s table stakes.&lt;/p>
&lt;p>What&amp;rsquo;s rare (and valuable) is someone who can use AI tools effectively &lt;strong>and&lt;/strong> think independently when those tools fail. Someone who can prompt well &lt;strong>and&lt;/strong> code well without prompts. Someone who can ship fast with AI &lt;strong>and&lt;/strong> debug deep problems when AI can&amp;rsquo;t help.&lt;/p>
&lt;p>That person is your future senior engineer. The question is: are you building that person, or are you just building better AI operators?&lt;/p>
&lt;h2 class="relative group">The bottom line
&lt;div id="the-bottom-line" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-bottom-line" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I&amp;rsquo;m not anti-AI—I&amp;rsquo;m pro-expertise. The future belongs to engineers who can harness AI&amp;rsquo;s speed while maintaining their ability to think, debug, and solve problems independently.&lt;/p>
&lt;p>If you&amp;rsquo;re a manager, you have the power to shape this. Design deliberate learning experiences. Protect the struggle that builds judgment. Review not just what your juniors build, but how they think through problems.&lt;/p>
&lt;p>If you&amp;rsquo;re a junior developer, the opportunity is enormous. While others become fluent in prompting, become fluent in fundamentals. While others depend on AI, learn to evaluate it. While others panic when tools fail, become the person who steps up and solves the problem.&lt;/p>
&lt;p>The market will soon be flooded with AI operators. Don&amp;rsquo;t be one of them. Be the AI-augmented engineer your future self will thank you for becoming.&lt;/p></content:encoded></item><item><title>From "Toys" to "Tools": The Missing Layer Developers Actually Need</title><link>https://pinishv.com/articles/from-toys-to-tools-the-missing-layer-developers-actually-need/</link><pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate><guid>https://pinishv.com/articles/from-toys-to-tools-the-missing-layer-developers-actually-need/</guid><description>AI coding isn&amp;rsquo;t about clever completions anymore. It&amp;rsquo;s about stitching work together so results cross the threshold from toy to tool—from interesting demos to outcomes you can trust.</description><content:encoded>&lt;p>I&amp;rsquo;m no longer a hands-on developer and haven&amp;rsquo;t written production code in a while. Over the last year, though, I&amp;rsquo;ve been busy rolling out AI tooling to make developers more productive. That vantage point made Idan Gazit, Head of GitHub Next, and his talk at GitHub Connect Israel really resonate: it put clean language to patterns I&amp;rsquo;ve seen on the ground.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Oyn9nfQ-gHg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;p>&lt;strong>AI coding isn&amp;rsquo;t about clever completions anymore. It&amp;rsquo;s about stitching work together so results cross the threshold from toy to tool—from interesting demos to outcomes you can trust.&lt;/strong>&lt;/p>
&lt;h2 class="relative group">Where productivity really lives
&lt;div id="where-productivity-really-lives" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-productivity-really-lives" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Idan emphasized something we often forget: most developer time isn&amp;rsquo;t typing—it&amp;rsquo;s understanding. Reading code, tracing decisions, navigating repos, connecting issues to diffs. If that&amp;rsquo;s the job, then the winning AI isn&amp;rsquo;t a &amp;ldquo;faster keyboard&amp;rdquo;; it&amp;rsquo;s a context engine. In my deployments, the largest gains came when tools reduced the time to find and trust the next action, not when they suggested a few extra lines.&lt;/p>
&lt;h2 class="relative group">Models matter; orchestration matters more
&lt;div id="models-matter-orchestration-matters-more" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#models-matter-orchestration-matters-more" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Idan shared that Cursor&amp;rsquo;s rise was helped by early access to strong models that GitHub Copilot didn&amp;rsquo;t yet have (e.g., Anthropic&amp;rsquo;s Claude 3.5). GitHub Copilot is catching up fast with smarter selection and repo-scale workflows. Same editor base (VS Code); different orchestration philosophies. And that&amp;rsquo;s the real race: who turns messy inputs (code, issues, docs, tests) into a clear plan with traceable steps—at a sensible latency and cost?&lt;/p>
&lt;p>Two pragmatic truths follow:&lt;/p>
&lt;p>&lt;strong>Latency won&amp;rsquo;t magically vanish.&lt;/strong> Treat it as a design constraint, not a bug. Good tools keep you moving while the model works: batch related calls, prefetch likely context, stream or show partial results, and always land progress in a &lt;strong>reviewable artifact&lt;/strong> (branch/PR/plan) instead of a spinning loader. You stay productive; the heavy lifting can finish in the background.&lt;/p>
&lt;p>&lt;strong>Cost and correctness are product features.&lt;/strong> Model choice is an economic and risk decision. The tool should make that trade-off visible (and often choose for you): fast/cheap paths for low-stakes edits; slower/more thorough paths for refactors and migrations. Show expected cost/latency, explain why a model was selected, and offer a one-click upgrade/downgrade when stakes change.&lt;/p>
&lt;h2 class="relative group">The firehose problem
&lt;div id="the-firehose-problem" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-firehose-problem" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>AI didn&amp;rsquo;t reduce information; it amplified it. More suggestions, more tabs, more &amp;ldquo;help.&amp;rdquo; Without a memory of intent, this becomes context switching with extra steps. The tools that stick are the ones that carry context forward—they remember the goal, thread it through each step, and keep the evidence attached so trust can accumulate.&lt;/p>
&lt;h2 class="relative group">The gap between IDE and platform
&lt;div id="the-gap-between-ide-and-platform" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-gap-between-ide-and-platform" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This is why Idan&amp;rsquo;s hint about a technical preview in ~six weeks caught my attention: something that sits between the IDE (where you do the work) and GitHub (where you collaborate). That&amp;rsquo;s exactly the seam where productivity currently leaks. Most real tasks span files, repos, people, and tickets; the handoffs are where intent gets lost.&lt;/p>
&lt;p>If I could spec that missing layer, I&amp;rsquo;d keep it simple:&lt;/p>
&lt;p>&lt;strong>Hold the intent.&lt;/strong> Start every task with a plain-English objective and keep it attached to every artifact—plan, diff, test, PR. Every change should answer: does this move us closer to the stated goal?&lt;/p>
&lt;p>&lt;strong>Prefer plans over paragraphs.&lt;/strong> Propose steps (analyze → patch → test → PR) with clear checkpoints. Humans review plans faster than prose.&lt;/p>
&lt;p>&lt;strong>Make provenance and reversibility default.&lt;/strong> Show what sources the AI used and always operate on a branch/PR so rollback is one click, not a hope.&lt;/p>
&lt;p>When we rolled out AI internally, even lightweight versions of the above moved the needle more than any single &amp;ldquo;smarter&amp;rdquo; model choice.&lt;/p>
&lt;h2 class="relative group">So, will developers stop looking at code?
&lt;div id="so-will-developers-stop-looking-at-code" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#so-will-developers-stop-looking-at-code" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Probably not. But they&amp;rsquo;ll look at less code and more intent, diffs, and evidence. The center of gravity shifts from &amp;ldquo;type this&amp;rdquo; to &amp;ldquo;approve this change under these constraints.&amp;rdquo; For that to work, the system must preserve context, explain itself, and keep the human decisively in the loop.&lt;/p>
&lt;p>I left the event convinced of one thing: the future isn&amp;rsquo;t another sidebar. It&amp;rsquo;s continuity. When tools remember what we&amp;rsquo;re trying to do and carry that memory across the workflow, AI finally feels less like a toy—and more like a tool.&lt;/p></content:encoded></item></channel></rss>