<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[jw.dev]]></title><description><![CDATA[Notes on engineering leadership. Building remry.ai.]]></description><link>https://blog.jweatherby.dev</link><image><url>https://blog.jweatherby.dev/img/substack.png</url><title>jw.dev</title><link>https://blog.jweatherby.dev</link></image><generator>Substack</generator><lastBuildDate>Wed, 28 Oct 2026 09:28:12 GMT</lastBuildDate><atom:link href="https://blog.jweatherby.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jamie Weatherby]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jweatherby@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jweatherby@substack.com]]></itunes:email><itunes:name><![CDATA[jweatherby]]></itunes:name></itunes:owner><itunes:author><![CDATA[jweatherby]]></itunes:author><googleplay:owner><![CDATA[jweatherby@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jweatherby@substack.com]]></googleplay:email><googleplay:author><![CDATA[jweatherby]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why I built Remry]]></title><description><![CDATA[A notebook for the classic org structure, filed and organised by Claude.]]></description><link>https://blog.jweatherby.dev/p/why-i-built-remry</link><guid isPermaLink="false">https://blog.jweatherby.dev/p/why-i-built-remry</guid><dc:creator><![CDATA[jweatherby]]></dc:creator><pubDate>Wed, 28 Oct 2026 01:14:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tqYD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tqYD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tqYD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 424w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 848w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 1272w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tqYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png" width="301" height="375.1868131868132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:637,&quot;resizeWidth&quot;:301,&quot;bytes&quot;:60930,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.jweatherby.dev/i/222425784?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tqYD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 424w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 848w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 1272w, https://substackcdn.com/image/fetch/$s_!tqYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4fdd475-fc3e-444e-8a81-78bfcd5fd953_637x794.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Remry is out. It&#8217;s a free, local notebook that Claude keeps for you. This post is the longer story of why it exists - <em>the one I&#8217;ll point to when someone asks &#8220;why not just use Notion?&#8221;</em></p><p>I oversee six teams. That&#8217;s a lot of people, projects, goals and half-remembered 1:1 conversations to carry around in one head. And I&#8217;m terrible at planning ahead.</p><p>That combination is the whole reason Remry exists. Before a meeting I don&#8217;t have time to work out where a note <em>should</em> go according what I set up three months ago. I need to say the thing and have it land in the right place. Then, when review season comes round, I need it all to be there.</p><p>I tried the obvious tools first.</p><h2>Starting with Notion</h2><p>I started in Notion, and I still think it gets a lot right. I <a href="https://blog.jweatherby.dev/posts/docs-that-scale">ran a Notion workspace for 300+ people</a>, so I can say I was something of an authority.</p><p>For me, most of Notion&#8217;s value is in a few things:</p><ul><li><p><strong>Databases:</strong> A person, a project and a goal are records with fields, and you can create, update and filter them like any other database.</p></li><li><p><strong>Relations and rollups:</strong> A project links to its owner, a team rolls up its projects, and you can see the whole thing from either end.</p></li><li><p><strong>Peek:</strong> Open a record in a side panel without losing your place in the list. It&#8217;s the feature I missed most when I left.</p></li></ul><p>The trouble is that it needs to be built and maintained , and is meant for a team. For one person it&#8217;s too expensive and frankly, overkill. </p><h2>Obsidian: local, but DIY</h2><p>So I moved to Obsidian. A few things won me over:</p><ul><li><p><strong>Local-first by default.</strong> Your notes are files that never leave your computer. This is important from an enterprise security perspective when selecting tools. And it matters more than it used to - more on that below.</p></li><li><p><strong>Markdown first.</strong> Everything is a plain markdown file, which any model can read and write. That&#8217;s why Obsidian has been the default for LLM wikis so far.</p></li><li><p><strong>The Excalidraw plugin.</strong> One of my favourite things about it. <em>Although Excalidraw is available pretty much everywhere now.</em></p></li></ul><p>But Obsidian is basic, even with all its plugins. A page is a markdown file, and seeing anything useful about a person or a project means hopping between files and hoping the links hold up. I don&#8217;t want to hop between pages to find all the relevant info.</p><p>It&#8217;s also finicky. You build everything yourself - the folder conventions, the templates, the Dataview queries, the plugin combinations that work until one of them updates. I don&#8217;t have time to maintain all that while running six teams.</p><p><em>And no, Confluence and Google Docs weren&#8217;t the answer either. Both are deeply awkward - fine for the team&#8217;s shared documents, painful for keeping your own structured view of things.</em></p><h2>What I actually needed</h2><p>By this point the list was pretty clear:</p><ol><li><p><strong>Batteries included:</strong> People, teams, projects, goals and docs, already there and already linked. No templates to design, no plugins to babysit.</p></li><li><p><strong>A structure I already know works: </strong>Running that 300-person Notion workspace taught me which structures hold up - permanent docs vs. temporary plans, everything tied to an owning team, a snapshot view for leadership. Most businesses end up with something close to that pattern, so I built it in rather than making everyone rediscover it.</p></li><li><p><strong>More on one page:</strong> A person&#8217;s page should show their lead, their teams, their todos, my dated notes and the docs that mention them. Plus side-peek - that was amazing.</p></li><li><p><strong>Local-first: </strong>Security is tightening everywhere, and it&#8217;s strictest at bigger companies. Those are also the places where someone overseeing several teams needs a tool like this. Files on your own machine, no accounts and no sync is a much easier conversation with a security team.</p></li><li><p><strong>A proper view of my reports:</strong> Goals can sync in from wherever the team tracks them, and they sit next to my own notes and observations. When review time comes, most of the digging is already done.</p></li></ol><p>That last one is the one that saves me the most time. <em>Writing reviews used to mean an evening of scrolling back through months of notes. Now it&#8217;s a prompt.</em></p><h2>So I built Remry</h2><p>We&#8217;re in a markdown-first world now. Every model reads and writes markdown well, and that&#8217;s a big part of why most LLM wikis so far sit on top of Obsidian. I wanted to keep that, and add a better way to organize and connect the files. Plenty of people have had a go at this - see any of the second brain wikis out there.</p><p>Remry is my take. It&#8217;s a local notebook with the structure built in, and Claude does the filing over MCP. Before a meeting I say &#8220;note that Dana wants to lead the migration, remind me to book a 1:1&#8221; and it lands on Dana&#8217;s page - dated, in my words, with the todo above it. I don&#8217;t have to remember where things go, that&#8217;s delegated out now.</p><p>So it&#8217;s Notion&#8217;s databases lovable UI, on Obsidian&#8217;s local markdown files, without the setup, using a format I know works for most organizations. <em>Which is roughly what I&#8217;d have asked for two years ago, but now I can build fast, and exactly how I want it.</em></p><h2>Summary</h2><ul><li><p><strong>Notion</strong> has the right ideas - databases, relations, rollups, peek - but it&#8217;s too expensive and too much for one person.</p></li><li><p><strong>Obsidian</strong> is markdown-first and local-first, and has Excalidraw. But it&#8217;s basic and very DIY.</p></li><li><p><strong>Confluence and Google Docs</strong> are awkward - enough said.</p></li><li><p><strong>Remry</strong> is a local, batteries-included notebook built for the classic org structure, and Claude is the one keeping it organized and up to date.</p></li></ul><p>This is the first public release, so a few rough edges: the Mac build is Apple silicon only, Windows will show a warning because the installer isn&#8217;t signed just yet (incoming shortly!), and the code is source-available (FSL), not open source. If setup trips you up anywhere, <a href="https://github.com/remry-ai/remry/issues">open an issue on GitHub</a> - that&#8217;s what I&#8217;m fixing first. For anything else, there&#8217;s the <a href="https://jweatherby.dev/contact">contact form</a>.</p><p>If you carry a lot in your head too, <a href="https://remry.ai">download Remry</a>. To follow along as it changes, <a href="https://jweatherby.substack.com">subscribe to the newsletter</a>.</p>]]></content:encoded></item><item><title><![CDATA[Docs That Scale]]></title><description><![CDATA[A documentation system designed to work within your Notion workspace, built to keep docs findable as your organization grows.]]></description><link>https://blog.jweatherby.dev/p/docs-that-scale</link><guid isPermaLink="false">https://blog.jweatherby.dev/p/docs-that-scale</guid><dc:creator><![CDATA[jweatherby]]></dc:creator><pubDate>Wed, 28 Oct 2026 00:47:16 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><em>This was originally published in 2024. A lot has changed since then.</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4288" height="2848" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2848,&quot;width&quot;:4288,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tall wooden bookshelves filled with old books and marble busts in a library&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tall wooden bookshelves filled with old books and marble busts in a library" title="Tall wooden bookshelves filled with old books and marble busts in a library" srcset="https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1502700807168-484a3e7889d0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNHx8bGlicmFyeXxlbnwwfHx8fDE3OTMxMjQxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@alexblock">Alex Block</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>As Director of Engineering, when we were fully remote at the height of Covid, I realized our documentation was woefully inadequate and in dire need of structure and direction. We&#8217;d see proposals that laid out four solutions, with options scratched out and critical information buried in comments - and this was what people were expected to reference when figuring out how something worked. According to <a href="https://dora.dev/capabilities/documentation-quality/">DORA</a>, good documentation is one of the foundations of better organizational performance, so we decided it was time to improve what we had.</p><p>We looked at Confluence and Notion, and happily settled on Notion for its cleaner UI and the incredible flexibility it provided. The ability to use databases to dynamically link content across the workspace while still preserving the source of truth proved invaluable. Also, the left navbar - being able to see everything from a centralized location is remarkably underrated, something not available by Google Docs or Confluence.</p><p>Our Notion workspace was a huge success, with 300 daily active users at a company of 600, and <em>minimal complaints</em>. There was feedback early on, but once we reorganized the workspace around our domains (more on that below), that feedback disappeared. Different groups had their own domains to work within, teams weren&#8217;t stepping on each other&#8217;s toes, and we were able to accomplish innovative things with the tools Notion provided, like building a software hygiene catalogue (similar to Backstage) for the different services our teams managed.</p><p>The workspace was built on a relatively simple foundation with two ideas: separate documents based on whether they are permanent or temporary, and tie every document back to the team that owns it. Through the power of databases, it scaled nicely with our growing organizational demands. Notion was eventually sunset in favour of Confluence, to bring documentation closer to the rest of our Atlassian tooling, but the ideas behind the structure apply whatever tool you use.</p><h2><strong>Sharing my learnings</strong></h2><p>Below, I&#8217;ll walk through a <a href="https://www.notion.so/DRAFT-Documentation-14f3b75bf3f880408a7bf8b0e7d7a4df">documentation template</a> based on what I learned rolling out our workspace: the overall structure, each section&#8217;s purpose, and the gotchas I encountered. A small team can use it as a proof of concept and expand from there. See the <a href="https://www.notion.so/Getting-Started-14e3b75bf3f880d3a493fb9a29619eb0?pvs=21">Getting Started</a> section for a more in-depth look at the structure and practices that made it succeed.</p><p>Along the way, I&#8217;ll point out five principles that made the system work: <strong>timeliness</strong>, <strong>feedback loops</strong>, <strong>reporting</strong>, <strong>audience</strong> and <strong>dashboards</strong>.</p><p>This template has a few bonuses, including:</p><ul><li><p>An area to measure and track projects</p></li><li><p>Page templates with prompts for things you might not have considered</p></li><li><p>A database to catalogue your internally built software. We had a similar database in place, which helped clarify ownership, add supplementary information, and manage our software&#8217;s hygiene</p></li></ul><h2><strong>The structure</strong></h2><h3><strong>Getting Started</strong></h3><p>Getting Started was where the general guidelines (including what lived where), best practices and governing principles lived. Any good software project has a README that gives people a sense of how to work within its structure. This was the workspace&#8217;s README.</p><h3><strong>Wiki</strong></h3><p>This was where the meat of the information lived, and it required the most governance. It held the current policies, reference materials and diagrams: the state of the world as it related to the domain. It was important to have something centralized like this, because otherwise these docs got buried in team-specific pages or, worst case, in private pages.</p><p>We set the wiki up as a set of databases with the parents containing a relations to the owning teams and applied software services and products. Because pages can be infinitely nested, it became a well organized drill-down of all the documents needed relating to a specific service. This way, we could tag articles and sections with the relevant teams to provide backlinks to their team pages, with filters liberally applied as needed. Any other tags or categories could be added to make governance and visibility more straightforward.</p><p>One of the most important principles when deciding what lived in the wiki was <strong>timeliness</strong>: was it a permanent document or not? If it was a permanent doc (true today, tomorrow, and next year) and was relevant beyond a specific team, it probably belonged here.</p><p>Our first attempt didn&#8217;t organize the wiki by domain, and that&#8217;s where most of the early feedback came from. We work with white-label products, so we split the wiki into &#8220;conceptual&#8221; and &#8220;reality&#8221;. One area described our products, services and policies, with the product and architecture as designed. Another area covered the deployed instances, what we call storefronts: the reality. It made sense on paper, but to understand one product you had to piece it together from two places, and this model didn&#8217;t even apply to other products at all. Instead, we made it domain driven: here&#8217;s the product, and here&#8217;s all the information around it, from the architecture to each deployment.</p><h3><strong>Projects</strong></h3><p>Projects were the opposite of Wiki docs. They were speculative, used for planning, and only relevant for a short period of time. Remember those proposals with four solutions and critical information in the comments? That was fine for a project. It wasn&#8217;t fine as the place people went to understand how something worked. All information about the actual implementation belonged in the Wiki.</p><p>Anything in <strong>Projects</strong> was meant to be relatively short-lived. When a project was done, the team moved what was actually built into the Wiki. This was our <strong>feedback loop</strong>: documentation was part of the software lifecycle, not something written after the fact. Success depended on the team, but the teams who did it well reaped the benefits of clearer docs and better support flows.</p><h3><strong>Snapshot</strong></h3><p>This was where we could see the state of the organization at a high level: the health of services over time, the state of projects, and the capacity of projects. It was designed for a leadership point of view, and covered <strong>reporting</strong> for anyone not part of day-to-day operations. Some organizations would keep this private, but transparency was important to us. Keeping it publicly visible followed our &#8220;write in public&#8221; principle: unless something was sensitive, write it where everyone could see it.</p><h3><strong>People &amp; Teams</strong></h3><p>The pieces above weren&#8217;t groundbreaking; methods like Tiago Forte&#8217;s <a href="https://fortelabs.com/blog/para/">PARA</a> cover similar ground. People and Teams was where this structure set itself apart, by giving every doc an <strong>audience</strong>. With these two databases, we could break out projects and wiki items and associate them with their respective teams. <strong>People</strong> provided granular information about who was on a given team, and <strong>Teams</strong> tied any piece of documentation to its owner. In <strong>Projects</strong>, an <strong>Involved Teams</strong> field showed who was working on what. From there, we could filter projects to only the relevant teams, shielding them from the noise of the centralized structures.</p><p>The <strong>Teams</strong> database also gave teams a space for their team-specific docs: working agreements, code standards, support processes, team policies and onboarding guides. Some teams built comprehensive, complete dashboards to manage their product and software work.</p><p>The one gotcha was the tendency to use team pages for everything, including permanent docs that were relevant beyond the current team. This undermined the entire system, and it&#8217;s where our workspace architects spent most of their time, encouraging teams to put their docs in more widely observed spaces. The trick to tying this information back to the team page was <strong>dashboards</strong>: views on the team page that referenced those centralized documents (Projects and Wiki items). The docs stayed central, and each team still got its own dashboard.</p><h2><strong>Guiding principles</strong></h2><p>These were the foundations that made this documentation system work, and Notion made each of them possible.</p><p><strong>Dashboards:</strong> We created dashboards everywhere, based on predictable, workspace-wide tagging. Documentation stayed central, and filters personalized it where each team would benefit most.</p><p><strong>Reporting:</strong> We provided snapshots and reports for those who weren&#8217;t part of day-to-day operations, giving them a high-level view of progress across the org.</p><p><strong>Audience:</strong> We used the Teams database to organize and tag groups as needed, and gave groups full ownership to work within their own domains.</p><p><strong>Feedback loops:</strong> We integrated documentation into the software lifecycle. A proposal started in Projects, and once it was actioned, the parts that were still true moved out of Projects and into the Wiki. Because every stage of a document&#8217;s life lived in one place, nothing got lost moving between tools, and you could always trace a Wiki page back to the project that produced it.</p><p><strong>Timeliness:</strong> We identified whether a document was temporary or permanent. Each was better served in a specific place (Projects and Wiki, respectively).</p><h2><strong>Takeaways</strong></h2><p>As you can see, it was a simple structure, but it accounted for everything we needed. Overall governance was restricted to a select few, but within a specific domain (product line, software, tooling, wiki sub-sections, team pages, etc.), permissions were granted liberally so teams weren&#8217;t held back and had the flexibility to create what worked for them.</p><p>Hope this helps with your documentation adventures! You can find the <a href="https://www.notion.so/DRAFT-Documentation-14f3b75bf3f880408a7bf8b0e7d7a4df?pvs=21">template here</a>.</p><div><hr></div><p><em>Update from just 2 years later, in 2026: with the rise of AI this year, documentation looks very different than it did in 2024 - some fundamentals stay, others are irrelevant.</em></p><p><em>More on that later.</em></p>]]></content:encoded></item><item><title><![CDATA[The Big 3 of Engineering Goals]]></title><description><![CDATA[Goals in software: Where to focus efforts and how to navigate them into the roadmap]]></description><link>https://blog.jweatherby.dev/p/the-big-3-of-engineering-goals</link><guid isPermaLink="false">https://blog.jweatherby.dev/p/the-big-3-of-engineering-goals</guid><dc:creator><![CDATA[jweatherby]]></dc:creator><pubDate>Mon, 09 Mar 2026 20:30:32 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Everything written here is my own opinion and not representative of my employer or any other persons.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;astronaut on space&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="astronaut on space" title="astronaut on space" srcset="https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1503751071777-d2918b21bbd9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2OXx8cmFuZG9tfGVufDB8fHx8MTc3MzEwNjczN3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Software engineer venturing into the foreign lands of goal setting.&#8221; Photo by <a href="https://unsplash.com/@verstuyftj">Jonas Verstuyft</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><div class="pullquote"><p>Warning: Deeply bureaucratic lessons incoming</p></div><p>Going into the new year, I&#8217;ve been giving goal setting some thought. As with most companies, growth is typically the number 1 concern. It makes sense - the point of a typical business is to bring in revenue and that usually happens through growth. I will dive into how these goals can be navigated by software engineering, a group whose work is often quite a few layers from a company&#8217;s typical commercial goals. </p><p><em>&#8220;Make it align with Product priorities&#8221; - No, the goals will be a balance of product priorities and engineering priorities.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.jweatherby.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The mandate to grow is usually driven by the commercial or product teams from directions on-high. However, in engineering it can be difficult to align priorities with that growth mandate. Engineering priorities don&#8217;t often directly relate to revenue generating activities, and are usually concerned with:</p><ul><li><p>Poor developer experience (DX)</p></li><li><p>Tech debt</p></li><li><p>Woeful test coverage</p></li><li><p>Sunsetting legacy systems</p></li><li><p>Minimizing the number of bugs created</p></li></ul><p>These can be difficult to prioritize because at any company with a decent spread of functionality because the roadmap is relentless and unforgiving and engineering&#8217;s priorities don&#8217;t have visible impact on the end product.</p><h2><strong>The Big 3</strong></h2><p>As a general rule, there are 3 things that software engineering should care about: Business Value, Speed (Throughput), and Quality (Stability). </p><h3><strong>Business Value</strong></h3><p>AKA value-add to the user. This should always be the forefront of software and product teams. Engineers are sometimes lose sight of this end-goal: delivering value to the end-users. There are many books on this topic and it is why other departments often exist (i.e. Product). Product typically acts as the bridge between software and the business, or the end-users. They collect feedback, identify what works and what doesn&#8217;t, and use that information to strategize <em>The Next Big Thing</em>. Because value-add is directly tied with revenue and growth, it&#8217;s often the easiest to justify. However, in unbalanced orgs, the pendulum can swing too far in the direction of growth at all costs, and engineering&#8217;s priorities can fall behind.</p><p>When growth is covered by product or commercial teams, what is left for engineering to put on the table? That&#8217;s where you get to the meat of what engineering should be thinking of and prioritizing.</p><h3><strong>Speed (Throughput)</strong></h3><p>Speed can be articulated as &#8220;how quickly can this be validated&#8221;. This validation happens in a lot of different stages:</p><ul><li><p>local development</p></li><li><p>test or staging environments</p></li><li><p>end-user testing</p></li><li><p>automated testing</p></li><li><p>production deployments and releases</p></li></ul><p>All of these culminate in the &#8220;developer experience&#8221;, but they&#8217;re actually saying: &#8220;how fast can I validate this change and deploy it&#8221;. It&#8217;s about getting the tooling and processes into a state where disruptions are minimized and out of the way of developing new functionality.</p><p>However, speed doesn&#8217;t tie directly into revenue initiatives and only has an indirect correlation: enabling quicker delivery. While important, this indirect relation makes it prone to being de-prioritized in the pursuit of high-growth.</p><p>The argument and measurements to getting tooling and process changes prioritized can usually be framed as: &#8220;Speed helps to deliver those revenue related items more quickly&#8221; and can be measured by however you measure velocity (pull request turn-around time, deployment speed, story points, etc).</p><h3><strong>Quality (Stability)</strong></h3><p>The third priority for engineering is quality: making sure the code is secure, resilient, maintainable and performant. The scope here includes (but is not limited to):</p><ul><li><p>Are appropriate security measures in place? i.e. holes found and addressed, outdated libraries updated, and code patched and hardened</p></li><li><p>Is there sufficient monitoring and alerting for easy debugging and quick detection of issues?</p></li><li><p>Is the service easy to deploy, scale and perform as needed? Does it have identifiable performance breakpoints?</p></li><li><p>Is there documentation on how to use the service for all the relevant stakeholders?</p></li><li><p>How often do pipelines or deployments fail (require remediation or result in service degradation)?</p></li><li><p>What is the contextual load required to add functionality (code structure; systems architecture)?</p></li></ul><p>These are all important things to consider, but it can be difficult to quantify their extent and impact. As far as I can tell, there is no universal way to measure quality; instead, there&#8217;s varied tooling for the different areas. When measuring quality, there are 2 important signals that arose from research in the area of engineering productivity: Production Change Failure Rates and Mean Time to Recovery (MTTR). They&#8217;re good signals for quality, but don&#8217;t tell you how to get there, so you&#8217;ll have to fill in the gaps along the way. Number of bugs can be useful as well - the average number produced <em>should</em> fall over a period of time if doing rudimentary software development and not making significant changes to the service, its infra or tooling.</p><p>I&#8217;ve seen internal self-assessments work to a small degree, but they&#8217;re largely qualitative, and lack effectiveness without appropriate business buy-in and consistent usage.</p><h2><strong>Industry Standards</strong></h2><p>Before going any further, I want to call out DORA metrics, as outlined by <a href="https://itrevolution.com/product/accelerate/">the Accelerate Book</a> (<a href="https://youtu.be/5_rrQND3lpQ">video</a>). DORA metrics represent the industry standard on how performant a software organization is. After extensive research, they boiled it down to these 4 primary metrics:</p><ul><li><p>Lead Time: The amount of time it takes a commit to get into production</p></li><li><p>Deployment frequency: How often a group successfully releases to production</p></li><li><p>Mean time to recovery (MTTR): How long it takes to recover from a failure in production</p></li><li><p>Production change failure rate: The percentage of deployments causing a failure in production</p></li></ul><p>What they&#8217;re really asking is, &#8220;How well are you doing continuous delivery&#8221;, the gold standard of software development.</p><p>As you can see, Quality and Speed are the main categories, as emphasized by DORA metrics. What&#8217;s needed is justifying those into roadmap planning. Notice that revenue and growth are missing? Those are in another domain altogether, which Product typically helps navigate and why engineerings should be advocating for Speed and Quality as the highest priorities.</p><h2><strong>Prioritizing these goals</strong></h2><p>How do you get these engineering priorities into the roadmap? It can be difficult since the number one priority is often revenue. Since it&#8217;s difficult to quantify revenue or growth with these goals, they need to be qualified in some other way. Here are some steps to help identify goals and break them down into attainable actions.</p><ol><li><p>Quantify the current state of the world:</p><ul><li><p><strong>Quality/Stability:</strong> identify failure rates, time to recover from incidents, Uptime and Performance Service Level Agreements (SLAs), number and severity of issues through security audits (automated scans or pen-tests). It might help to use an assessment tool to identify the health of your services and what matters will vary.</p></li><li><p><strong>Speed/Throughput:</strong> identify your lead time (or cycle time as a subset of lead time), deployment frequency, etc. From here you can break down what may slow down the team and any actions that may lead to improvements without compromising quality.</p></li></ul></li><li><p><strong>Size &amp; Prioritize:</strong> Map out actionable chunks that will potentially improve the score and assign each item a size and priority. Story Mapping and Prioritization sessions are your friends here.</p></li><li><p><strong>State your goal or hypothesis:</strong> declare that you want a % change in those areas. Chunk it into manageable tasks and goals so it feels more achievable. Create small steps of high priority items and outcome based goals.</p></li></ol><p>Now that the goals are in place, they need to be advocated for and capacity needs to be allocated. This means selling these goals and metrics and getting buy-in. And know that revenue driven opportunities will typically take the front seat, especially when there&#8217;s the emphasis on relentless growth.</p><p>These are some strategies I&#8217;ve seen to get engineering efforts prioritized:</p><ol><li><p><strong>Use the Roadmap (obviously)</strong>: With these established goals, don&#8217;t create them as long-running initiatives. Instead make them hypothesis driven with measurable outcomes. i.e. &#8220;If we do X, we can increase our lead time by Y,&#8221; or &#8220;If we patch this series of bugs, we&#8217;ll improve the health of the service by X%, thereby spending less time on support in this area.&#8221;</p></li><li><p><strong>Continuous sub-group</strong>: Dedicate a portion of the team for support and engineering related activities. The size of this group is dependent on the extent of the effort required to bring about the necessary outcomes. This group can be rotated as needed.</p></li><li><p><strong>DX Sprints</strong>: Dedicated quarterly Developer Experience focused (DX) Sprints - take the time to gather metrics and create a plan. As a group, consolidate items into a couple streams of work with achievable goals.</p></li><li><p><strong>Project buffer:</strong> Buffer at the end of an epic to clean up any &#8220;architectural compromises&#8221; that were made. Software is famous for getting out of hand, quickly. As you go through, a better pattern might have emerged that was neglected for the necessity of &#8220;getting it done&#8221;. If there&#8217;s a buffer at the end of an epic, maybe these changes won&#8217;t be lost to the recesses of time.  <em>(call it an <strong>Epic buffer</strong> for the agile enthusiasts)</em></p></li><li><p><strong>Campsite Rule:</strong> Work on these long-running engineering efforts alongside the roadmap stories as needed. (i.e. deliberately structure changes to conform to a new pattern and adhere to the campsite rule - leave it better than you found it). <em>This isn&#8217;t the most efficient, may lead to fractured priorities, may also violate tightly scoped work and can compromise Lead / Cycle time as a result. Use it as a last resort if the roadmap is particularly relentless.</em></p></li><li><p><strong>20% (or 10%) Time</strong>: Use other dedicated engineering time - Google had its 20% days, where these items could potentially be accommodated. This is a system where 20% (i.e. every Friday) is set aside for whatever the engineers want to work on, within the realm of the business. It&#8217;s a welcome break for engineers from the typical day-to-day and provides the time to flex their creativity, or scratch any lingering itches. However, I&#8217;ve seen that these are too disjointed to accomplish much and end up being perceived as a pit of unaccountable time. <br>I had a version of this called 10% days (1 day every 2 weeks). There was some hope that the team would prioritize the speed and quality based tasks, but they mostly prioritized their own learning and development, and work-related side-project. This time actually detracted from other engineering efforts that could have been used for the team&#8217;s DX and tech debt.</p></li></ol><p>Also, a word of advice on addressing quality and speed: avoid system rewrites at all costs - see Joel Spolsky&#8217;s <a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">Things You Should Never Do</a>. They rarely go well and put everybody in an awkward spot, for a long time. If something needs a massive overhaul, I&#8217;d recommend the Incremental Migration approach, <a href="https://youtu.be/9Q7GANXn02k?si=7-lkwjsTZRteAmm7&amp;t=1756">as illustrated here</a>.</p><p>While it isn&#8217;t the easiest getting your engineering goals prioritized, these are some strategies I&#8217;ve experienced, each with their own pros and cons. The trick is being persistent, yet adaptable. What works one year might not work the next.</p><h2><strong>In Summary</strong></h2><ul><li><p>Priorities will typically be given to projects directly related to revenue and growth. There are usually other teams that help navigate this terrain (i.e. Product)</p></li><li><p>Engineering should be advocating for Speed (Throughput) and Quality (Stability). These can be difficult to prioritize because they&#8217;re indirectly related to revenue. You can use arguments along these lines: &#8220;Speed helps to deliver those revenue related items more quickly&#8221; and &#8220;Increased quality mitigates potential revenue loss&#8221;</p></li><li><p>Figure out the metrics you care about, but lean on established best practices, like DORA metrics. Just know that DORA metrics are like the &#8220;draw the owl&#8221; meme in that they&#8217;ll tell you where you need to go, not how to get there.</p></li><li><p>From the metrics you care about revisit them periodically. Create narratives and give them weight and accountability. Establish incremental goals and manageable action items.</p></li><li><p>Negotiate them into the roadmap - what might work one year/quarter might not work the next. Be persistent, but adaptable in pursuit of these goals.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.jweatherby.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>