{"id":719,"date":"2026-05-28T02:03:54","date_gmt":"2026-05-28T02:03:54","guid":{"rendered":"https:\/\/sqlhammer.com\/?p=719"},"modified":"2026-05-28T02:03:54","modified_gmt":"2026-05-28T02:03:54","slug":"build-t-shaped-agents-not-assembly-lines","status":"publish","type":"post","link":"https:\/\/sqlhammer.com\/index.php\/2026\/05\/28\/build-t-shaped-agents-not-assembly-lines\/","title":{"rendered":"Build T-Shaped Agents, Not Assembly Lines"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The most expensive decision in an agentic system is not which model you run. It is how you divide the work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The industry&#8217;s first instinct was to specialize. Borrow the lesson from microservices, shatter the monolith, give each agent a single narrow responsibility, then chain them together. One agent researches and hands off to a drafter; the drafter hands off to a reviewer. This also mirrors how we think about roles in some large teams. Every person has their own part to play and coordination is needed to bring it all together. The same types of context leaks that occur with humans are even more prevalent with agents.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"500\" src=\"https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/t-shaped-agents.png\" alt=\"\" class=\"wp-image-720\" srcset=\"https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/t-shaped-agents.png 917w, https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/t-shaped-agents-300x164.png 300w, https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/t-shaped-agents-768x419.png 768w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Handoff Is the Failure Surface<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Multi-agent systems fail in production between 41% and 87% of the time, and roughly 79% of those failures trace to coordination and specification rather than model quality (<a href=\"https:\/\/www.getmaxim.ai\/articles\/multi-agent-system-reliability-failure-patterns-root-causes-and-production-validation-strategies\/\" target=\"_blank\" rel=\"noreferrer noopener\">Maxim<\/a>, <a href=\"https:\/\/futureagi.substack.com\/p\/why-do-multi-agent-llm-systems-fail\" target=\"_blank\" rel=\"noreferrer noopener\">Future AGI<\/a>). Inter-agent misalignment alone accounts for nearly 37% of the total: communication breakdowns, context lost in transit, format mismatches, conflicting outputs. The model is rarely the problem. The seams between models are.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each handoff is a lossy compression step. Agent A holds a rich working context; it passes a message rather than that context to Agent B; Agent B treats the degraded summary as ground truth and builds on it. <a href=\"https:\/\/redis.io\/blog\/why-multi-agent-llm-systems-fail\/\" target=\"_blank\" rel=\"noreferrer noopener\">Redis calls this a &#8220;high-tech telephone game,&#8221;<\/a> and the metaphor is exact. Errors do not stay local. They compound downstream and surface three stages later as symptoms with no stack trace to follow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cognition, <a href=\"https:\/\/cognition.ai\/blog\/dont-build-multi-agents\" target=\"_blank\" rel=\"noreferrer noopener\">in &#8220;Don&#8217;t Build Multi-Agents,&#8221;<\/a> names the mechanism underneath: actions carry implicit decisions, and conflicting decisions produce broken results. Their illustration is a parallel build where one subagent renders a game background in one visual style while another builds a character that clashes with it; neither agent saw the other&#8217;s assumptions, so the outputs collided at integration. Their prescription is a single-threaded agent operating on one continuous context. One worker. One unbroken picture of the task.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What the T-Shaped Agent Borrows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fix is not a new idea. It is a thirty-year-old one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The T-shaped model describes broad competence across many areas with deep expertise in one. It <a href=\"https:\/\/en.wikipedia.org\/wiki\/T-shaped_skills\" target=\"_blank\" rel=\"noreferrer noopener\">originated at McKinsey in the 1980s and was popularized by IDEO&#8217;s Tim Brown<\/a>. Agile software organizations adopted the same shape under a different name, the <a href=\"https:\/\/agilemodeling.com\/essays\/generalizingspecialists.htm\" target=\"_blank\" rel=\"noreferrer noopener\">generalizing specialist<\/a>: the engineer who goes deep in one discipline but carries enough range to bridge the others. The rationale never changed. Pure specialists create coordination bottlenecks and become single points of failure; pure generalists lack the depth to do hard work well. The T-shape holds the middle, and it holds the whole picture without a handoff.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A T-shaped agent is the same construct rebuilt in software. Broad working knowledge, depth in the task at hand, and one continuous context window that never has to survive a translation step.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Boundary: Deep and Narrow vs. Wide and Shallow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This does not argue for one agent doing everything. The honest counter-evidence is real, and it draws the line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/news.smol.ai\/issues\/25-06-13-cognition-vs-anthropic\" target=\"_blank\" rel=\"noreferrer noopener\">Anthropic&#8217;s multi-agent research system beat its single-agent baseline by more than 90%<\/a>, but the win came specifically on wide-and-shallow work, where the advantage is parallel reasoning across more aggregate context than one agent can hold. Searching a hundred sources at once is genuinely parallel; the subtasks are independent, and the contract between them is small enough to write down. Deep-and-narrow work is the opposite. Coding, long-form writing, debugging: these demand memory consistency and logical coherence that a single continuous context preserves and a pipeline destroys.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The boundary is the decision. Split the work when the subtasks are genuinely independent and the handoff contract is small. Keep it in one agent when the work has to hold a single coherent picture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In my own practice that line is concrete. I folded code review and quality assurance into one agent because the two share most of their context; running them separately only rebuilt the same understanding twice and forced a handoff between them. My DevOps agent owns the entire adjacent territory: infrastructure, infrastructure as code, project builds, and CI\/CD pipelines. Those concerns are continuous, not independent. A change to the build affects the pipeline; a change to the infrastructure affects the code that provisions it. One agent holding that whole surface reasons better than four agents negotiating across it.<\/p>\n\n\n<figure class=\"wp-block-post-featured-image\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"500\" src=\"https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/separation-of-duties.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" style=\"object-fit:cover;\" srcset=\"https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/separation-of-duties.png 917w, https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/separation-of-duties-300x164.png 300w, https:\/\/sqlhammer.com\/wp-content\/uploads\/2026\/05\/separation-of-duties-768x419.png 768w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n<h2 class=\"wp-block-heading\">Where Consolidation Stops<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is a hard limit, and it has nothing to do with performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consolidate purposes far enough and a single agent accumulates system access that should never sit in one place. The capability argument says merge the code-writing and the deploy abilities into one efficient worker; separation of duties says do not. A code-writing agent and a production-deploy agent stay apart not because one agent could not perform both, but because the blast radius of a compromise, a defect, or a bad decision has to stay contained. <a href=\"https:\/\/sqlhammer.com\/index.php\/2026\/03\/31\/least-privilege-maximum-constraint\/\" target=\"_blank\" rel=\"noreferrer noopener\">Least privilege<\/a> is a constraint that overrides the consolidation instinct, and the <a href=\"https:\/\/sqlhammer.com\/index.php\/2026\/03\/28\/calibrate-autonomy-to-stakes\/\" target=\"_blank\" rel=\"noreferrer noopener\">stakes of the action decide how hard it binds<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So the rule carries two clauses. Default to the broadest agent the work&#8217;s coherence justifies; stop the moment consolidation would escalate access beyond what separation of duties permits. Capability argues for fewer agents. Security sometimes argues for more. Where they conflict, security wins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Principle<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Specialization feels like rigor. On a diagram it looks like clean architecture. But every boundary drawn between agents is a seam where context leaks and decisions collide, and the production data shows those seams are where systems break. <a href=\"https:\/\/sqlhammer.com\/index.php\/2026\/03\/30\/decompose-before-you-delegate\/\" target=\"_blank\" rel=\"noreferrer noopener\">Decomposition still matters<\/a>; breaking a task into well-scoped steps is not the same as scattering those steps across separate agents, each holding its own partial view.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Default to one T-shaped agent: broad enough to hold the territory, deep enough to do the work, coherent enough to keep one continuous picture. Reach for a pipeline only when the work is genuinely parallel, or when separation of duties demands a wall you are not permitted to remove.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The most expensive decision in an agentic system is not which model you run. It is how you divide the work. The industry&#8217;s first instinct was to specialize. Borrow the lesson from microservices, shatter the monolith, give each agent a single narrow responsibility, then chain them together. One agent researches and hands off to a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[],"class_list":["post-719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"_links":{"self":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/comments?post=719"}],"version-history":[{"count":1,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/719\/revisions"}],"predecessor-version":[{"id":722,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/posts\/719\/revisions\/722"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/media\/721"}],"wp:attachment":[{"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/media?parent=719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/categories?post=719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlhammer.com\/index.php\/wp-json\/wp\/v2\/tags?post=719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}