{"article":{"slug":"trying-the-software-factory-pattern","title":"Trying the Software Factory Pattern","subtitle":null,"summary":"One of the interesting challenges of the AI ecosystem in 2026 is that new, effective patterns emerge faster than I can adopt them. I’ll find a handful, get back to work, and realize a month later that I’d missed four or five more. The adoption cycle for Imprint this year has been something like: - April: local development is bottlenecked on checkout and worktree model, instead create ~10 local workspaces which each have an independent checkout of every repository, and operate at the workspace level, not at the repository level, so it can generate cross-repository pull requests across…","content_type":"blog_post","language":"en","canonical_url":"https://lethain.com/software-factory-experiment/","author":{"name":"Will Larson","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Irrational Exuberance","url":"https://lethain.com","listing_slug":null,"listing":null},"topics":[{"name":"Engineering","slug":"engineering","url":"https://listedarticles.com/topics/engineering"},{"name":"AI Agents","slug":"ai-agents","url":"https://listedarticles.com/topics/ai-agents"},{"name":"Programming","slug":"programming","url":"https://listedarticles.com/topics/programming"},{"name":"Startups","slug":"startups","url":"https://listedarticles.com/topics/startups"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":871,"reading_minutes":4,"published_at":"2026-09-20T00:00:00.000Z","added_at":"2026-09-21T00:20:21.478Z","updated_at":"2026-09-21T00:20:21.478Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":false},"profile_url":"https://listedarticles.com/articles/trying-the-software-factory-pattern","markdown_url":"https://listedarticles.com/articles/trying-the-software-factory-pattern.md","example":false,"citation":"Will Larson, Irrational Exuberance. \"Trying the Software Factory Pattern.\" 20 Sept 2026. https://lethain.com/software-factory-experiment/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://lethain.com/software-factory-experiment/"},"body_markdown":"Published on September 20, 2026.\nmanagement (221)\n\nOne of the interesting challenges of the AI ecosystem in 2026 is that new,\neffective patterns emerge faster than I can adopt them. I’ll find a handful,\nget back to work, and realize a month later that I’d missed four or five more.\nThe adoption cycle for Imprint this year has been something like:\n\n- January: get every engineer onto Claude Code every single day\n\n- March: ok, let’s also get everyone else onto Claude Code or Claude Cowork every single day\n\n- April: local development is bottlenecked on checkout and worktree model,\ninstead create ~10 local workspaces which each have an independent checkout of every repository,\nand operate at the workspace level, not at the repository level, so it can generate cross-repository\npull requests across frontend, backend, infrastructure and data monorepos\n\n- June: oh boy, agent-driven development is heavily constrained by lack of a common task management\nsystem with higher visibility and less permission complexity than Jira,\nso let’s migrate the entire company over to Linear and hard stop on Jira\n\n- July: yikes, now we have visibility into all these tickets, many of them are trivial\nbut managing them through local development isn’t scaling, let’s roll out an orchestrated harness\nwhich internally we call “Agent Fleet”,\nalong the lines of Stripe’s Minions\n\nThe most recent question for me has been figuring out how to adopt the software factory pattern.\n(After some light research, the specific AI-context origin of this term is slightly messy to\nattribute, but I think it might be Justin McCarthy in February 2026’s\nSoftware Factories And The Agentic Moment.)\n\nThe software factory pattern is looping on a broad goal, and then relying on the harness to\ndrive progress towards that goal. Our first pass at implementation is fairly basic:\n\n- \nAn agent skill /linear-project-loop which reads in a Linear project and starts by auditing\nthat project’s goal definition on these dimensions:\n\n- An RFC in Notion that describes the project’s goals, how those goals are measured, and the general approach\n\n- A Datadog dashboard or Snowflake queries that measure progress against those goals\n\nIf those are missing, or the Linear project is missing in its entirety, it iterates with you on creating those missing tools.\n\n- \nThen it reviews the state of the metrics and issues for the project.\nIf new work is identified, it adds those issues to the project.\nIt updates the state of issues that have moved.\n\n- \nIt works on the non-blocked tasks based on the project’s current state. This is often writing a pull request, updating a pull request, pinging for review, asking\na clarifying question, etc.\n\n- \nWhen a task completes, if the project description is fresh, it takes on the next task.\nIf the description hasn’t been updated in a while, it reruns the loop starting with the first step.\n\nRight now I am running this locally in a local harness, but it’s working well enough that I anticipate\nmoving the behavior to be driven by the same orchestrated harness that we assign one-off tasks to.\n\nWhat I particularly like about the factory pattern is that it parallels very closely how I’ve been working locally,\nwhile forcing me to recognize the places where I was accidentally hording parts of the state for myself regarding\nthe goals of the project. I was already asking agents to iterate on specific Linear projects, but they didn’t\nhave the ability to evaluate if they were going in the right direction, or if it was missing necessary tasks.\nNow it does.\nThe other place this has been extremely helpful for me is checking in on projects post release.\nFor example, I shipped our passkeys implementation earlier this year, but some months go by without my checking in\non how it’s going. If we saw adoption spike, or error rates start to turn, I might miss it, but running the\nfactory in a less frequent post-release mode would catch it immediately.\n\nThe final thought that’s been interesting to me is how much all of the pieces here compound only to the extent\nthat you have the other pieces. For example, this factory pattern depends on having Datadog MCP and Snowflake access available\nto manage goal-tracking, but it also depends on Linear being the single source of state for the company’s work,\nand an orchestrated harness that can perform work independently from your laptop. Keeping up with this\nmany migrations is a fascinating industry moment.\n\nHi folks. I'm Will Larson.\n\nIf you're looking to reach out to me, here are ways I help.\n\nBooks\n\nI wrote\nAn Elegant Puzzle,\nStaff Engineer,\nThe Engineering Executive's Primer, and\nCrafting Engineering Strategy.\n\nNewsletter\n\nIf you'd like to get get updates, subscribe for weekly emails, or follow my RSS feed.\n\nPopular\n\n- Building internal agents\n\n- \"Good engineering management\" is a fad\n\n- Moving from an orchestration-heavy to leadership-heavy management role.\n\n- Eng org seniority-mix model.\n\n- How to create software quality.\n\nRecent\n\n- Trying the Software factory pattern.\n\n- Roadmap decisions rather than dates.\n\n- Middle management roles are also a trap.\n\n- Generated and suppressed demand.\n\n- Make no assumptions.\n\nRelated\n\n- Roadmap decisions rather than dates.\n\n- Middle management roles are also a trap.\n\n- Generated and suppressed demand.\n\n- Make no assumptions.\n\n- Revised rules of engineering leadership.\n\n© Will Larson 2026\nTags\nNewsletter\nRSS\nAbout","body_html":"<p>Published on September 20, 2026.\nmanagement (221)</p>\n<p>One of the interesting challenges of the AI ecosystem in 2026 is that new,\neffective patterns emerge faster than I can adopt them. I’ll find a handful,\nget back to work, and realize a month later that I’d missed four or five more.\nThe adoption cycle for Imprint this year has been something like:</p>\n<ul><li>January: get every engineer onto Claude Code every single day</li><li>March: ok, let’s also get everyone else onto Claude Code or Claude Cowork every single day</li><li><p>April: local development is bottlenecked on checkout and worktree model,</p><p>instead create ~10 local workspaces which each have an independent checkout of every repository,\nand operate at the workspace level, not at the repository level, so it can generate cross-repository\npull requests across frontend, backend, infrastructure and data monorepos</p></li><li><p>June: oh boy, agent-driven development is heavily constrained by lack of a common task management</p><p>system with higher visibility and less permission complexity than Jira,\nso let’s migrate the entire company over to Linear and hard stop on Jira</p></li><li><p>July: yikes, now we have visibility into all these tickets, many of them are trivial</p><p>but managing them through local development isn’t scaling, let’s roll out an orchestrated harness\nwhich internally we call “Agent Fleet”,\nalong the lines of Stripe’s Minions</p></li></ul>\n<p>The most recent question for me has been figuring out how to adopt the software factory pattern.\n(After some light research, the specific AI-context origin of this term is slightly messy to\nattribute, but I think it might be Justin McCarthy in February 2026’s\nSoftware Factories And The Agentic Moment.)</p>\n<p>The software factory pattern is looping on a broad goal, and then relying on the harness to\ndrive progress towards that goal. Our first pass at implementation is fairly basic:</p>\n<ul><li></li></ul>\n<p>An agent skill /linear-project-loop which reads in a Linear project and starts by auditing\nthat project’s goal definition on these dimensions:</p>\n<ul><li>An RFC in Notion that describes the project’s goals, how those goals are measured, and the general approach</li><li>A Datadog dashboard or Snowflake queries that measure progress against those goals</li></ul>\n<p>If those are missing, or the Linear project is missing in its entirety, it iterates with you on creating those missing tools.</p>\n<ul><li></li></ul>\n<p>Then it reviews the state of the metrics and issues for the project.\nIf new work is identified, it adds those issues to the project.\nIt updates the state of issues that have moved.</p>\n<ul><li></li></ul>\n<p>It works on the non-blocked tasks based on the project’s current state. This is often writing a pull request, updating a pull request, pinging for review, asking\na clarifying question, etc.</p>\n<ul><li></li></ul>\n<p>When a task completes, if the project description is fresh, it takes on the next task.\nIf the description hasn’t been updated in a while, it reruns the loop starting with the first step.</p>\n<p>Right now I am running this locally in a local harness, but it’s working well enough that I anticipate\nmoving the behavior to be driven by the same orchestrated harness that we assign one-off tasks to.</p>\n<p>What I particularly like about the factory pattern is that it parallels very closely how I’ve been working locally,\nwhile forcing me to recognize the places where I was accidentally hording parts of the state for myself regarding\nthe goals of the project. I was already asking agents to iterate on specific Linear projects, but they didn’t\nhave the ability to evaluate if they were going in the right direction, or if it was missing necessary tasks.\nNow it does.\nThe other place this has been extremely helpful for me is checking in on projects post release.\nFor example, I shipped our passkeys implementation earlier this year, but some months go by without my checking in\non how it’s going. If we saw adoption spike, or error rates start to turn, I might miss it, but running the\nfactory in a less frequent post-release mode would catch it immediately.</p>\n<p>The final thought that’s been interesting to me is how much all of the pieces here compound only to the extent\nthat you have the other pieces. For example, this factory pattern depends on having Datadog MCP and Snowflake access available\nto manage goal-tracking, but it also depends on Linear being the single source of state for the company’s work,\nand an orchestrated harness that can perform work independently from your laptop. Keeping up with this\nmany migrations is a fascinating industry moment.</p>\n<p>Hi folks. I&#39;m Will Larson.</p>\n<p>If you&#39;re looking to reach out to me, here are ways I help.</p>\n<p>Books</p>\n<p>I wrote\nAn Elegant Puzzle,\nStaff Engineer,\nThe Engineering Executive&#39;s Primer, and\nCrafting Engineering Strategy.</p>\n<p>Newsletter</p>\n<p>If you&#39;d like to get get updates, subscribe for weekly emails, or follow my RSS feed.</p>\n<p>Popular</p>\n<ul><li>Building internal agents</li><li>&quot;Good engineering management&quot; is a fad</li><li>Moving from an orchestration-heavy to leadership-heavy management role.</li><li>Eng org seniority-mix model.</li><li>How to create software quality.</li></ul>\n<p>Recent</p>\n<ul><li>Trying the Software factory pattern.</li><li>Roadmap decisions rather than dates.</li><li>Middle management roles are also a trap.</li><li>Generated and suppressed demand.</li><li>Make no assumptions.</li></ul>\n<p>Related</p>\n<ul><li>Roadmap decisions rather than dates.</li><li>Middle management roles are also a trap.</li><li>Generated and suppressed demand.</li><li>Make no assumptions.</li><li>Revised rules of engineering leadership.</li></ul>\n<p>© Will Larson 2026\nTags\nNewsletter\nRSS\nAbout</p>","headings":[]}}