<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Todd Schiller - spec-driven development</title><link href="https://toddschiller.com/" rel="alternate"></link><link href="https://toddschiller.com/feeds/tag/spec-driven-development.atom.xml" rel="self"></link><id>https://toddschiller.com/</id><updated>2026-08-12T00:00:00-04:00</updated><subtitle>Human ✘ Artificial Intelligence</subtitle><entry><title>Agentic Software Factories: Parallel agents diverge. Plan to converge.</title><link href="https://toddschiller.com/blog/parallel-agents-diverge-converge.html" rel="alternate"></link><published>2026-08-12T00:00:00-04:00</published><updated>2026-08-12T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-08-12:/blog/parallel-agents-diverge-converge.html</id><summary type="html">Running coding agents in parallel is closer to a team of different developers than one developer multitasking, so plan a deliberate converge phase after the diverge phase.</summary><content type="html">&lt;p&gt;Running coding agents in parallel is less like one developer juggling features
and more like a team of different developers building at the same time
independently.&lt;/p&gt;
&lt;p&gt;Even when the agents share the same system prompt and the same skills, they
diverge fast. LLMs are stochastic, and the divergence compounds with every
decision.&lt;/p&gt;
&lt;p&gt;Spec-Driven Development and Domain-Driven Design help. They give each agent a
global view of what the others are doing and a shared, ubiquitous language. But
in practice, compounding drift erodes coherence fast.&lt;/p&gt;
&lt;p&gt;The only way to keep your codebase sane is to plan deliberate converge phases.&lt;/p&gt;
&lt;p&gt;Here are my tips for diverge-converge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Put new features behind a feature flag so agents can iterate on the
intermediate result cleanly&lt;/li&gt;
&lt;li&gt;Define protocols and interfaces first to contain where drift can happen&lt;/li&gt;
&lt;li&gt;Use static analysis and linters to bound architectural and stylistic drift&lt;/li&gt;
&lt;li&gt;Use a skill to update your specs and ubiquitous language based on the gaps the
diverge phase exposed&lt;/li&gt;
&lt;li&gt;Use a skill to identify and prioritize the tech debt the diverge phase
introduced&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What's your approach to building features in parallel with coding agents?&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;figure&gt;
  &lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/images/parallel-agents-diverge-converge/parallel-agents-diverge-converge-landscape-2400.png" alt="Whiteboard-style diagram titled Parallel agents drift, plan to converge. From a single Shared start node (same prompt, specs, skills), three colored paths labeled agent 1, agent 2, and agent 3 fan outward through a pink Diverge zone where drift compounds with every decision, reach their widest spread, then are pulled back together through a green Converge zone into one Coherent result node. A footer reads: converge with feature flags, interfaces first, linters, and a spec and debt refresh."&gt;
  &lt;figcaption&gt;Parallel coding agents fan out during the diverge phase, then a deliberate converge phase pulls them back into a coherent result.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="coding agents"></category><category term="spec-driven development"></category><category term="domain-driven design"></category><category term="parallelism"></category></entry></feed>