<?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[Dev Leader Weekly]]></title><description><![CDATA[My weekly newsletter that simplifies software engineering for you, along with C# code examples. Join thousands of software engineers from companies like Microsoft and Amazon who are already reading!]]></description><link>https://weekly.devleader.ca</link><image><url>https://substackcdn.com/image/fetch/$s_!zuqM!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee7b925-847a-411b-a8bb-86cec91a2098_1280x1280.png</url><title>Dev Leader Weekly</title><link>https://weekly.devleader.ca</link></image><generator>Substack</generator><lastBuildDate>Mon, 10 Aug 2026 03:46:15 GMT</lastBuildDate><atom:link href="https://weekly.devleader.ca/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Nick Cosentino]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[social@devleader.ca]]></webMaster><itunes:owner><itunes:email><![CDATA[social@devleader.ca]]></itunes:email><itunes:name><![CDATA[Dev Leader]]></itunes:name></itunes:owner><itunes:author><![CDATA[Dev Leader]]></itunes:author><googleplay:owner><![CDATA[social@devleader.ca]]></googleplay:owner><googleplay:email><![CDATA[social@devleader.ca]]></googleplay:email><googleplay:author><![CDATA[Dev Leader]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why I Still Build Side Projects (And What I'm Building Next)]]></title><description><![CDATA[Dev Leader Weekly 151]]></description><link>https://weekly.devleader.ca/p/why-i-still-build-side-projects-and</link><guid isPermaLink="false">https://weekly.devleader.ca/p/why-i-still-build-side-projects-and</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 03 Aug 2026 05:52:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QlNB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp" 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://www.devleader.ca/2026/08/01/why-i-still-build-side-projects-and-what-im-building-next-dev-leader-weekly-151" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QlNB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QlNB!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:153252,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/08/01/why-i-still-build-side-projects-and-what-im-building-next-dev-leader-weekly-151&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/209587699?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QlNB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!QlNB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4404c100-13d6-488b-81aa-7e038b80d3d8_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Build the thing for yourself first</p></li><li><p>A thin paid layer beats abandonment</p></li><li><p>Free tools are still worth shipping</p></li><li><p>No livestream this week. Sorry!</p></li></ul><div><hr></div><h2><strong>Why I Still Build Side Projects (And What I&#8217;m Building Next)</strong></h2><p>I&#8217;m twenty-plus years into programming and about fifteen years into my career, and I am still building side projects. That is not an accident, and it is not nostalgia. <strong>Building things is still the fastest way I learn</strong>, and it is still the advice I give to almost everyone who tells me their resume feels thin.</p><p>But something has shifted for me lately. I&#8217;ve gotten to the point where if I am going to sink my limited free time into building something, I should at least be open to the idea of charging a couple bucks for it. Not building a business. Not quitting my job. Just putting a very thin layer on the front of something I was going to build for myself anyway.</p><p>That small mental shift turns out to be a surprisingly good cure for the &#8220;ooh, shiny&#8221; problem that kills most side projects.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=K6TEjY_JR2I">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-K6TEjY_JR2I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;K6TEjY_JR2I&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/K6TEjY_JR2I?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Twenty Years In And I Am Still Building</strong></h2><p>Whenever someone tells me their resume feels weak -- they&#8217;re not employed yet, or they&#8217;re junior and applications keep going nowhere -- my answer is almost always the same. <strong>Go build something.</strong></p><p>It works for two reasons. The obvious one is that it gives you something concrete to talk about instead of a list of technologies you have &#8220;familiarity with.&#8221; The less obvious one, and honestly the more important one, is that building things is how you actually learn. Reading about a pattern and shipping something that depends on that pattern are completely different experiences.</p><p>I have written about this before in the context of <strong><a href="https://www.devleader.ca/2026/01/31/side-projects-and-soft-skills-in-interviews-dev-leader-weekly-125?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-151">why side projects and soft skills keep coming up in interviews</a></strong>, and I stand by all of it. But I want to be clear that this is not advice I give from a distance. I am still doing it.</p><p>Most of my side project time goes into <strong><a href="https://www.brandghost.ai/">BrandGhost</a></strong>, which is my main thing outside of work. It takes up enough of my attention that I have pushed other things aside for it -- including making <strong><a href="https://youtube.com/@devleader">videos on my main YouTube channel</a></strong> for a stretch. There are only so many hours, and something has to lose.</p><p>But there is always a pile of other stuff I want to poke at.</p><h2><strong>The Free Things I Have Already Shipped</strong></h2><p>Before I get into what I want to build, here is what is already out there for free, because some of you might actually find these useful.</p><p><strong>Needlr</strong> is a dependency injection and assembly-scanning library I put together. It is extremely opinionated. I am not planning to sell it, and I am not trying to convince anyone it&#8217;s the one true way. I build basically all of my C# stuff with plugin frameworks, and that pattern kept showing up over and over, so I extracted it. If you want to use it, great. If not, that&#8217;s completely fine. If you want to see the shape of it, I have walked through <strong><a href="https://www.devleader.ca/2026/02/15/plugin-architecture-with-needlr-in-net-building-modular-applications?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-151">building modular .NET applications with Needlr&#8217;s plugin architecture</a></strong>.</p><p><strong>Homebase</strong> came directly out of frustration. If you spend any time on social media, you have clicked a hundred &#8220;link in bio&#8221; links that drop you on a landing page full of other links. Linktree is one of the platforms that does this, and I was a paying customer for a while. Then I hit a problem where video previews were rendering as black thumbnails. There is no good reason a YouTube thumbnail should just fail to show up. I opened a support ticket, got the runaround for about a month, and eventually thought: I pay for this, and I could just build it myself.</p><p>So I did, in roughly a weekend. <strong><a href="https://www.devleader.ca/projects/homebase">Homebase is on GitHub</a></strong>, it is free, you can clone it or fork it, and it is optimized for SEO, AEO, and GEO. You can add product links and a bunch of other things. And if you&#8217;re wondering how to configure it -- you point Claude or Copilot at the repo, tell it where your stuff goes, and it handles the config files.</p><p><strong>A few MCP servers</strong> for Google Search Console, Google Keyword Planner, and Google Analytics. Google did not have official MCP servers for these, which still surprises me. Mine are vibe coded, and I believe I have versions in both C# and Go because I wanted to mess around. <strong><a href="https://www.devleader.ca/projects">They&#8217;re on my GitHub</a></strong>. I genuinely hope Google ships their own and makes mine obsolete. If you want to understand what is actually happening under the hood in one of these, I have a full walkthrough on <strong><a href="https://www.devleader.ca/2026/07/06/building-mcp-servers-and-clients-in-c-the-complete-guide?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-151">building MCP servers and clients in C#</a></strong>.</p><p>None of those are businesses. They&#8217;re scratch-your-own-itch projects that happened to be useful enough to publish.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Thin Paid Layer</strong></h2><p>Here is where my thinking has changed.</p><p>I have a problem that I suspect a lot of you share: I could go build this, or I could go build that, and then something shinier appears and I drift toward it. The half-finished graveyard is real. Most side projects don&#8217;t die because they were bad ideas -- they die because nothing forces them across the line from &#8220;sort of works on my machine&#8221; to &#8220;actually usable.&#8221;</p><p><strong>A thin paid layer is the forcing function.</strong></p><p>The idea is simple. Build the thing for yourself, because you actually want it. Get it to the point where you would use it. Then put a very thin layer on the front -- pay a couple bucks, here&#8217;s a license key, done. If people pay, awesome. If nobody pays, I still have the tool I wanted.</p><p>What I am explicitly <em>not</em> doing is turning every idea into a full-fledged business with a marketing site, a support org, and a roadmap. That is a completely different commitment and it is the thing that makes people avoid starting at all.</p><p><em><strong>Actionable Tip</strong></em>: pick the side project you have abandoned closest to &#8220;done.&#8221; Define the smallest version you would personally use every week. Ship that, and only that. Whether you put a paywall in front of it is secondary -- the point is having a definition of finished that isn&#8217;t &#8220;everything I imagined.&#8221;</p><h2><strong>What I Actually Want To Build Next</strong></h2><p>These are all deeply opinionated, and you might read them and think &#8220;why would anyone pay for that?&#8221; That&#8217;s kind of the point. I am building them for me.</p><p><strong>A modern MySQL Workbench with an LLM attached.</strong> Workbench is being retired, and from what I have read the plan is a lighter-weight experience inside VS Code. That&#8217;s neat, but personally I want the actual Workbench form factor -- just less dated. And the thing I really want is to give a read-only connection to an LLM and have it optimize queries with me. Connect with whatever access level you want (admin, write, read-only), poke at your data, and then have an agentic back-and-forth about query plans. I already do a version of this by giving Copilot read-only database access and letting it run <code>EXPLAIN</code> and look for optimizations. I just want it to be a real tool instead of a workflow I re-assemble every time.</p><p><strong>A personal finance planner built for two people.</strong> My wife and I keep separate accounts but operate with full transparency -- the only exception being gifts we&#8217;re trying to keep a surprise. If she asks what&#8217;s in my 401k, the answer is just the number. We treat that stuff as ours. So I want something that pulls in financial data read-only across accounts and gives us a shared view plus a shared agentic session. She has really taken to using ChatGPT, so the idea is being able to ask questions like &#8220;where is most of our spend going?&#8221; or &#8220;how do the investments look?&#8221; against a central brain that can actually see across everything. If I build it, it will be configurable -- bring your own provider, or run a local LLM if you would rather your financial data never leave the house. I have no idea what the right form factor is yet.</p><p><strong>A voice companion for GitHub.</strong> This is the one I&#8217;m poking at most actively. I feel like the GitHub app should do this and probably will eventually, but it doesn&#8217;t today. A big chunk of how I get work done now is creating issues and assigning them to agents. What I want is a push-to-talk companion -- the same interaction model you get in ChatGPT -- that lets me navigate all of that by voice. &#8220;What new issues came in today?&#8221; I have automation that scans BrandGhost error logs and files issues automatically, so there&#8217;s usually something. &#8220;Give me more detail on issue 123.&#8221; &#8220;Cool, assign that to an agent.&#8221; And then later: &#8220;Check in on that agent session -- did the PR land? Did it add proper tests?&#8221; The goal is being able to have that conversation without reading code. Maybe the answer isn&#8217;t even a dedicated app -- maybe it&#8217;s just wiring an existing assistant to my repositories through an MCP server. I need to play with it. If it does end up being a mobile app, it goes on the app stores.</p><p><strong>A photo recovery tool.</strong> I used to work in digital forensics, and I spent about a decade building tools for exactly this. Since leaving, people still occasionally come to me with &#8220;I think these files are deleted, can you help?&#8221; -- and the funny part is I no longer have access to any of the tooling I helped build. I know how to build it again. Is that market saturated? Absolutely. But I have example code, it solves a real problem people bring to me, and there is no reason it can&#8217;t live on a website for a couple bucks.</p><p><strong>Websites for non-technical friends.</strong> This one isn&#8217;t a product, it&#8217;s a favor I keep repeating. I have a close friend in the trades doing drywall and restoration work who is reasonably technical but would never spend the time to learn web development. He would get real value out of a proper site. I did the same thing for my video editor when he started a business on the side -- he has been fantastic about turning videos around when I hand them over late, so building him a site was an easy yes. The key detail is that I structure them so the owner can maintain them: copy a config file into ChatGPT, ask for the change, paste it back, done. I might start advertising that.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Why I Trust Agents With Some Of This And Not All Of It</strong></h2><p>The voice companion idea probably sounds sketchy to some people. &#8220;You&#8217;re just going to let AI do your work?&#8221;</p><p>Sort of. Here&#8217;s the honest breakdown.</p><p>There is a category of work where I trust an agent to go end-to-end, and it&#8217;s not blind trust -- it&#8217;s because I have built a lot of guardrails. File-based instructions that encode how the codebase works. <strong><a href="https://www.devleader.ca/2026/07/24/realworld-roslyn-analyzer-examples-in-c-naming-null-checks-and-log-validators?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-151">Roslyn analyzers that enforce naming, null checks, and log validation</a></strong> so bad patterns fail at compile time rather than in review. Scoped <strong><a href="https://www.devleader.ca/2026/07/23/github-copilot-cli-custom-agents-and-skills?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-151">custom agents and skills in Copilot CLI</a></strong> so each task runs with a narrow, well-defined job. The gates are what make the trust reasonable.</p><p>Then there is the other end of the spectrum. Big feature work, architectural changes, large refactors -- I&#8217;m not handing those over and walking away. I will still assign them to an agent and let it crank, but <strong>my expectation is not that it gets it right</strong>. My expectation is that I learn something from watching how it approaches the problem.</p><p>Sometimes there are genuine gold nuggets in there. Other times I look at the approach and immediately think &#8220;oh, that&#8217;s definitely not what I want&#8221; -- and that&#8217;s still valuable, because I often didn&#8217;t have a strong opinion until I saw a concrete option. Getting to &#8220;no, not that&#8221; without spending my own hours on it is a legitimately good trade.</p><p>Yes, it costs tokens. Yes, it costs someone&#8217;s compute. But it didn&#8217;t cost my evening.</p><h2><strong>My Best Ideas Show Up When I Can&#8217;t Act On Them</strong></h2><p>I don&#8217;t know if this is universal, but it is extremely consistent for me: <strong>my best ideas arrive precisely when I am nowhere near a computer.</strong></p><p>Not at my desk. Not in a planning session. Walking, driving, at the gym -- suddenly I know exactly how to solve the thing I was stuck on last week, or a feature idea shows up fully formed. And then by the time I&#8217;m back at a keyboard, it has faded into something much blurrier.</p><p>That is honestly a big part of why the voice companion idea appeals to me so much. Not just &#8220;assign this issue to an agent,&#8221; but being able to talk through a half-formed idea out loud, argue with it a bit, and then say &#8220;open a GitHub issue on this repo with what we just worked out.&#8221; I have done exactly that with ChatGPT before, and the friction of translating it into the real repo is the only annoying part left.</p><p><em><strong>Actionable Tip</strong></em>: whatever your capture mechanism is, make it require zero setup. Voice memo, a note that&#8217;s one tap away, a text to yourself -- it doesn&#8217;t matter which. The ideas you lose aren&#8217;t the ones you rejected, they&#8217;re the ones you never wrote down.</p><h2><strong>Might As Well Turn The Fun Into Something</strong></h2><p>The through-line for me is that I am going to keep building this stuff regardless. That was true before there was any chance of making a dollar from it, and it will be true after.</p><p>But I&#8217;m at a point in my career and my life where if I&#8217;m already spending the time, and the thing I built is genuinely useful, it seems a little silly not to put it somewhere people can find it. Worst case, nobody buys it and I still have the tool. Best case, a few extra dollars show up and I get a nudge to actually finish the next one.</p><p>That&#8217;s the trade I&#8217;m making. Build for yourself first. Ship the smallest usable version. Let the thin paid layer be the reason you cross the finish line instead of drifting to the next shiny thing.</p><p>So -- what are you building? I&#8217;d genuinely like to hear, especially if you&#8217;re leaning on AI to crank out something interesting. Let me know.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/why-i-still-build-side-projects-and?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/why-i-still-build-side-projects-and?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/why-i-still-build-side-projects-and/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/why-i-still-build-side-projects-and/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5XlQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5XlQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!5XlQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!5XlQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51a35e64-d36d-4dd6-8158-cdb82c2e7dcf_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://www.devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Tech Lead in a Broken Team? What You Need to Do First]]></title><description><![CDATA[Dev Leader Weekly 150]]></description><link>https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you</link><guid isPermaLink="false">https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 27 Jul 2026 16:46:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kzFW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp" 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://www.devleader.ca/2026/07/25/tech-lead-in-a-broken-team-what-you-need-to-do-first-dev-leader-weekly-150" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kzFW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 424w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 848w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 1272w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kzFW!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:31136,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/07/25/tech-lead-in-a-broken-team-what-you-need-to-do-first-dev-leader-weekly-150&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/208711505?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kzFW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 424w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 848w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 1272w, https://substackcdn.com/image/fetch/$s_!kzFW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F728e7cdb-ea4c-438c-ab5c-5554f4801664_1200x630.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Learn before changing the system</p></li><li><p>Clarify your authority and expectations</p></li><li><p>Automate recurring release pain incrementally</p></li></ul><div><hr></div><h2><strong>Tech Lead in a Broken Team? What You Need to Do First</strong></h2><p>Imagine stepping into your first tech lead role and discovering that every release needs four to six hours of manual testing. Old bugs keep coming back. Delivery dates seem disconnected from the engineering effort. The team is overloaded, and overtime is starting to feel like part of the plan.</p><p>Where do you even start?</p><p>My answer is not, &#8220;Walk in and fix everything.&#8221; You do not have enough context yet, and trying to change the whole system immediately is a great way to burn trust before you understand why the system behaves this way.</p><p>You need to <strong>learn, align, build relationships, and then create momentum with one measurable improvement at a time</strong>.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=Mpq1QTGq1O0">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-Mpq1QTGq1O0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Mpq1QTGq1O0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Mpq1QTGq1O0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Do Not Start By Rewriting The Team</strong></h2><p>When you inherit a struggling project, the problems are usually obvious before the causes are.</p><p>You can see the long manual test cycle. You can see the regressions. You can see the exhausted engineers and the aggressive delivery dates. What you cannot see yet is how the team arrived there, which constraints are real, and which previous attempts have already failed.</p><p>So the first move is observation.</p><p>Map out:</p><ul><li><p>How work enters the team.</p></li><li><p>Who decides what gets prioritized.</p></li><li><p>What &#8220;done&#8221; currently means.</p></li><li><p>Where releases slow down.</p></li><li><p>Which defects keep returning.</p></li><li><p>What engineers believe is causing the pain.</p></li><li><p>What product and management believe is causing the pain.</p></li></ul><p>That does not mean you sit quietly for six months while everything burns. It means you avoid prescribing a solution before you can explain the system.</p><p>Your other immediate job is clarifying the role itself. &#8220;Tech lead&#8221; means wildly different things at different companies. Are you expected to make technical decisions? Can you push back on scope? Are you accountable for delivery? Are you coaching engineers? When should your manager step in?</p><p>Ask your manager directly. Keep asking as new situations come up. This is not a one-time onboarding question.</p><p>I also think <strong><a href="https://www.devleader.ca/2026/07/18/when-should-you-tell-your-manager-a-developer-is-struggling-dev-leader-weekly-149?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">your manager should not be surprised by the problems you are seeing</a></strong>. Share the observations, explain what you are trying, and be clear about where you need support.</p><p><em><strong>Actionable Tip</strong></em>: bring your manager a short list of current risks, the evidence behind each one, and the first experiment you want to run. Ask which decisions you own and where they want to be involved.</p><h2><strong>Build A Working Relationship With Product</strong></h2><p>It is easy to walk into this situation and decide the product manager is the problem.</p><p>They keep pushing dates. Engineering keeps taking shortcuts. Quality drops. Therefore, product must not care about quality.</p><p>Maybe. But that conclusion is not especially useful, and you probably do not have enough information to make it anyway.</p><p>The product manager may be responding to customer commitments, revenue pressure, executive expectations, or information the engineering team does not have. At the same time, engineering may be carrying risks that product cannot see clearly.</p><p>That is exactly why you need the relationship.</p><p>There should be healthy tension between product and engineering. Product pushes for customer value and delivery. Engineering pushes for feasibility, sustainability, and quality. I have written about what happens when <strong><a href="https://www.devleader.ca/2026/06/28/when-your-product-manager-becomes-your-boss-dev-leader-weekly-146?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">that healthy tension between product and engineering disappears</a></strong>.</p><p>Your goal is not to defeat the product manager. Your goal is to help both sides make better tradeoffs.</p><p>I have had working relationships change when schedules and responsibilities shifted. Even when I already knew the product manager, I still needed to make time to understand what they needed from me and how I could support them better. It is mutual. I want them helping engineering, and I need to help them succeed too.</p><p><em><strong>Actionable Tip</strong></em>: set up a recurring conversation with your product partner. Ask what outcomes matter most, which dates are truly fixed, what risks they are carrying, and what engineering information would help them make better decisions.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Make Release Pain Visible</strong></h2><p>Four to six hours of manual testing before every release is a giant warning sign to me.</p><p>But you cannot simply delete that testing. The team is doing it because it catches defects. If you remove it without replacing the protection, you have not improved the process. You have just hidden the risk.</p><p>This is where the team needs to slow down enough to speed up.</p><p>Start by documenting every manual release check:</p><ol><li><p>What behavior is being verified?</p></li><li><p>How long does the check take?</p></li><li><p>What defects has it caught?</p></li><li><p>Can that behavior be covered at a lower test level?</p></li><li><p>What is the smallest useful slice you can automate?</p></li></ol><p>Do not wait for the perfect test architecture. If the code is tightly coupled and the only practical first step is a clunky behavioral test, write the clunky behavioral test. You can improve it later. The immediate goal is to stop the same regression from surprising you again.</p><p>Unit, integration, functional, and end-to-end tests all protect different boundaries. Understanding <strong><a href="https://www.devleader.ca/2023/12/02/unit-testing-vs-functional-testing-dev-leader-weekly-20?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">how unit testing and functional testing complement each other</a></strong> helps you avoid trying to solve every problem with one giant UI test suite.</p><p>I have lived this at a startup. We had enough technical debt that we needed UI-level behavioral tests before we could safely refactor parts of the application. A big chunk of that debt was mine, so I am not blaming anyone else. Those tests were not the final destination, but they gave us enough confidence to start changing the code underneath.</p><p>The manual release checklist should only get smaller. New regressions should produce new automated coverage, not another permanent item for a human to click through at release time.</p><p>Exploratory testing can still be valuable. Just do not make the hour before release the only time anyone explores the product. If you only look for surprises at the release gate, you will keep finding surprises at the release gate.</p><h2><strong>Dates And Engineering Effort Need An Honest Tradeoff</strong></h2><p>There is nothing inherently wrong with a fixed release date.</p><p>There is also nothing wrong with estimating a body of work and letting the date move.</p><p>The problem starts when scope and date are both treated as fixed while quality is expected to remain unchanged. Something has to move.</p><p>If a feature needs a month of engineering effort and somebody wants it in a week, you have a few honest choices:</p><ol><li><p>Reduce the scope.</p></li><li><p>Move the date.</p></li><li><p>Take a deliberate shortcut and document the debt.</p></li><li><p>Do not build it.</p></li></ol><p>What you cannot do is pretend that a month of work somehow became one week because everyone agreed the date was important.</p><p>This is where I strongly prefer smaller vertical slices. Ship one thin, working path through the feature. Let customers use it. Learn from the feedback. Then decide what deserves the next investment. <strong><a href="https://www.devleader.ca/2023/10/10/vertical-slice-development-a-comprehensive-how-to-for-modern-teams?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">Vertical slice development can help teams deliver useful value sooner</a></strong> without pretending the entire feature fits inside an impossible deadline.</p><p>Sometimes you will still choose debt. That can be a valid business decision, but only if everybody understands the cost. If you rush a feature into a shape that cannot support the next iteration, say that clearly. The next change must include paying down the shortcut.</p><p>Otherwise, &#8220;we will clean it up later&#8221; becomes the permanent operating model. That is why <strong><a href="https://www.devleader.ca/2023/10/20/how-to-balance-technical-debt-tackle-it-before-it-tackles-you?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">technical debt has to be balanced deliberately</a></strong>, not treated like invisible work engineering will somehow absorb.</p><p><em><strong>Actionable Tip</strong></em>: when somebody asks for a fixed date, respond with the smallest scope the team can confidently deliver by that date. Make the excluded scope and any accepted debt explicit.</p><h2><strong>Overtime Cannot Be The Capacity Plan</strong></h2><p>If the plan only works when engineers repeatedly work extra hours, the plan does not work.</p><p>That does not mean overtime can never happen. Production incidents happen. Unexpected customer problems happen. Teams sometimes make short-term pushes.</p><p>But sustained overtime is not additional capacity. It is borrowing energy from future delivery, quality, and retention.</p><p>As the tech lead, do not quietly absorb the gap. Make capacity visible:</p><ul><li><p>Here is what the team can complete safely.</p></li><li><p>Here is the work that does not fit.</p></li><li><p>Here is the quality risk if we force it in.</p></li><li><p>Here is the decision we need from product and management.</p></li></ul><p>If the pressure is already affecting people, <strong><a href="https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-150">talking to your manager about burnout</a></strong> should happen before somebody reaches the point where they cannot keep going.</p><p>Pushing back is not refusing to deliver. Good pushback gives decision-makers a realistic set of tradeoffs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Ownership Means Following Through</strong></h2><p>One of the most important parts of this role transition is realizing that agreement is not action.</p><p>You can explain the testing problem to the product manager. They can nod and say it sounds reasonable. Then everyone returns to the same priorities, and nothing changes.</p><p>That does not automatically mean they do not care. It probably means this improvement matters more to you than it does to them, so <strong>you need to drive it</strong>.</p><p>Pick one change. Give it an owner. Put time against it. Define what better looks like. Report the result.</p><p>For example:</p><ol><li><p>Choose the ten most expensive manual release checks.</p></li><li><p>Automate one of them this iteration.</p></li><li><p>Require a regression test for every recurring defect.</p></li><li><p>Measure the release time and escaped defects.</p></li><li><p>Share the result with engineering, product, and your manager.</p></li><li><p>Repeat.</p></li></ol><p>That first win matters. People support changes more easily when they can see that the change saved time, reduced risk, or made delivery more predictable.</p><p>You do not need to repair the entire organization in your first month. You need to understand the system, clarify your authority, build the relationships, and prove that one better way of working is possible.</p><p>Then do it again.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/tech-lead-in-a-broken-team-what-you/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CW9l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CW9l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CW9l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!CW9l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!CW9l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c010dc3-9ec1-48b9-9976-5c32f248ae53_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://www.devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[When Should You Tell Your Manager A Developer Is Struggling?]]></title><description><![CDATA[Dev Leader Weekly 149]]></description><link>https://weekly.devleader.ca/p/when-should-you-tell-your-manager</link><guid isPermaLink="false">https://weekly.devleader.ca/p/when-should-you-tell-your-manager</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 20 Jul 2026 02:58:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DLJx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp" 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://www.devleader.ca/2026/07/18/when-should-you-tell-your-manager-a-developer-is-struggling-dev-leader-weekly-149" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DLJx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 424w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 848w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 1272w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DLJx!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:47986,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/07/18/when-should-you-tell-your-manager-a-developer-is-struggling-dev-leader-weekly-149&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/207728786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DLJx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 424w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 848w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 1272w, https://substackcdn.com/image/fetch/$s_!DLJx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd78fa857-3d21-431f-82bb-194222af9fa9_1200x630.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Raise concerns early, without jumping to termination</p></li><li><p>Coaching needs observations, support, and follow-through</p></li><li><p>Managers remain accountable for the whole team</p></li><li><p><strong><a href="https://youtube.com/live/8JRQFdwZ_bU?feature=share">Join me for the live stream (or watch the recording) on Monday, July 20 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-8JRQFdwZ_bU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8JRQFdwZ_bU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8JRQFdwZ_bU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>When Should You Tell Your Manager A Developer Is Struggling?</strong></h2><p>I came across a question from a team lead who had been coaching a junior developer for roughly 20 months. Progress had been difficult, and from the team lead&#8217;s perspective, the developer had actually started moving backward. They were less proactive, still needed a lot of direction, and did not seem to be responding to the coaching.</p><p>The question was basically: <strong>When should I tell my manager this is not working?</strong></p><p>My immediate reaction was that this conversation should have started much earlier. But I want to be extremely clear about what I mean by that.</p><p>Raising awareness early does <strong>not</strong> mean asking your manager to terminate someone early. It means sharing what you are observing while there is still time to understand the problem, adjust the support, and give the person a fair opportunity to improve.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=BHU0Nnca-Sg">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-BHU0Nnca-Sg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BHU0Nnca-Sg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BHU0Nnca-Sg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Raising Awareness Is Not A Verdict</strong></h2><p>Some people hear &#8220;I need to tell the manager&#8221; and immediately translate that into &#8220;I am trying to get this person fired.&#8221;</p><p>Those are not the same thing.</p><p>A useful conversation with your manager is not:</p><ul><li><p>&#8220;This developer sucks.&#8221;</p></li><li><p>&#8220;They are never going to make it.&#8221;</p></li><li><p>&#8220;We need to get rid of them.&#8221;</p></li></ul><p>Those are conclusions. They skip over all the information your manager actually needs.</p><p>A better conversation sounds more like this:</p><ul><li><p>Here is the work the developer has been trying to complete.</p></li><li><p>Here is where they are consistently getting stuck.</p></li><li><p>Here is the coaching or support I have already tried.</p></li><li><p>Here is the progress I expected to see.</p></li><li><p>Here is the trajectory I am seeing instead.</p></li><li><p>Here is where I need help.</p></li></ul><p>That distinction matters because <strong><a href="https://www.devleader.ca/2024/05/25/feedback-is-deeper-than-you-think-dev-leader-weekly-45?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-149">feedback is deeper than a single verdict</a></strong>. If all you provide is a label, your manager cannot tell whether the issue is skill, unclear expectations, poor coaching, team fit, missing context, or something else entirely.</p><p><em><strong>Actionable Tip</strong></em>: bring observations, not character judgments. Describe what happened, what support was attempted, what changed, and what you need from your manager next.</p><h2><strong>There Is No Magic Ramp-Up Number</strong></h2><p>The Reddit discussion had people at both extremes.</p><p>Some people claimed they could tell within a week whether a developer was going to work out. Other people pushed back and said new hires need months before anyone should be concerned.</p><p>Honestly? I do not believe there is one magic number.</p><p>A junior developer learning their first professional codebase is in a different situation from a senior developer joining a familiar domain. A new graduate may need help learning how work moves through the team. A transfer may know the company but not the product. Someone may be technically capable but completely lost in the domain.</p><p>The important signal is not whether they reached full productivity by an arbitrary date. It is whether you can see a reasonable <strong>trajectory</strong>.</p><p>Are they asking better questions? Are they retaining what they learned? Are they taking on slightly more responsibility? Are the same blockers repeating without any change? Does the support they need seem to be increasing instead of decreasing?</p><p>You may not know the answer after one week. But if you have worked closely with someone for a few weeks or a couple of months and the trajectory concerns you, that is enough reason to share what you are seeing.</p><p>You do not need certainty before you communicate.</p><h2><strong>Your Manager Should Not Be Surprised</strong></h2><p>If I pair a new developer with a team lead, technical lead, intern buddy, or another engineer, I still expect to check in.</p><p>How is the new person doing? Where are they getting stuck? What is going well? Does the person helping them need anything from me?</p><p>I do not need a formal performance report every few days. I do want enough communication that the next conversation makes sense.</p><p>If a team lead tells me after several months, &#8220;This person is not working out,&#8221; and that is the first concern I have heard, my response is going to be: <strong>Wait, what happened?</strong></p><p>The concern may be completely valid. But now we have lost months where we could have changed the coaching, clarified expectations, or added support.</p><p>Regular check-ins are one reason I care so much about helping people <strong><a href="https://www.devleader.ca/2025/04/05/make-the-most-of-your-one-on-ones-dev-leader-weekly-90?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-149">make the most of their one-on-ones</a></strong>. These conversations should surface small signals before they become enormous surprises.</p><p><em><strong>Actionable Tip</strong></em>: give your manager lightweight progress updates. &#8220;Going well,&#8221; &#8220;still learning this area,&#8221; &#8220;we are trying a different approach,&#8221; and &#8220;I need help&#8221; are all useful signals.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Clarify What Your Lead Role Actually Owns</strong></h2><p>&#8220;Team lead&#8221; and &#8220;technical lead&#8221; can mean completely different things from one company to another.</p><p>In one organization, a lead may be expected to actively coach developers, adjust how work is delegated, and drive onboarding. Somewhere else, the lead may own technical direction while the manager handles nearly every people-related concern.</p><p>This ambiguity is one of the <strong><a href="https://www.devleader.ca/2025/08/23/top-mistakes-of-new-managers-and-leads-dev-leader-weekly-106?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-149">mistakes new managers and leads can make</a></strong>. Everyone assumes they understand the role, nobody states the boundaries, and important work falls into the gap.</p><p>If you are the lead, ask your manager:</p><ol><li><p>What coaching do you expect me to handle directly?</p></li><li><p>What kinds of concerns should I raise immediately?</p></li><li><p>How often do you want onboarding updates?</p></li><li><p>What decisions can I make without checking first?</p></li><li><p>What support can I ask you to provide?</p></li></ol><p>You should feel empowered to help. You should not quietly inherit full responsibility for another employee&#8217;s performance without the authority, context, or support to handle it.</p><h2><strong>Do Not Just Drop The Problem And Walk Away</strong></h2><p>There is another failure mode here.</p><p>You tell your manager, &#8220;Bob is not ramping up very well.&#8221;</p><p>Then... nothing happens.</p><p>Did you expect the manager to take over? Did the manager expect you to keep coaching? Is someone changing the plan? Does the developer even know what they need to improve?</p><p>Raising awareness without agreeing on a next action is not enough.</p><p>Depending on the situation, the next step might be:</p><ul><li><p>Pairing the developer with someone else for a different perspective.</p></li><li><p>Giving them a smaller, better-defined area to own.</p></li><li><p>Spending more time on domain context instead of only code.</p></li><li><p>Setting clearer expectations for initiative and communication.</p></li><li><p>Having the manager join a coaching conversation.</p></li><li><p>Identifying training, documentation, or tools that are missing.</p></li><li><p>Checking whether the team or role is simply a poor fit.</p></li></ul><p>The point is not that every struggling employee can be turned around. Sometimes the role will not work out. But if the only action is repeatedly saying &#8220;they are struggling,&#8221; nobody is actually helping.</p><h2><strong>Make Sure The Coaching Is Not Part Of The Problem</strong></h2><p>Managers often hear different versions of the same situation.</p><p>The junior developer says, &#8220;Things are going well. I hit a few blockers, but I am working through them with the senior developer.&#8221;</p><p>The senior developer says, &#8220;This person takes no initiative. I have shown them this five times and they still cannot do it.&#8221;</p><p>So what is actually happening?</p><p>Maybe the junior developer is disengaged. Maybe they are not retaining information. Maybe they are afraid to ask questions. Those are all possible.</p><p>But maybe the senior developer&#8217;s idea of coaching is screen sharing, clicking every button, writing all the code, and saying, &#8220;Watch what I do.&#8221; Then they are frustrated when the other person cannot reproduce the process alone.</p><p>I have written about how <strong><a href="https://www.devleader.ca/2026/02/04/these-junior-developers-suck-they-just-dont-understand-my-code?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-149">senior developers can accidentally make learning harder</a></strong>, especially when expertise makes the difficult parts feel obvious. Watching an expert move quickly is not the same as practicing the skill.</p><p><em><strong>Actionable Tip</strong></em>: let the learner drive. Have them share their screen, choose the next step, explain what they think is happening, and ask for guidance when they get stuck. It may feel slower, but you can finally see how they reason.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Technical Aptitude Might Not Be The Whole Story</strong></h2><p>When someone seems unmotivated or passive, it is easy to jump straight to a personality judgment.</p><p>Sometimes that judgment is wrong.</p><p>Maybe they do not understand the domain well enough to know why the work matters. Maybe every task feels like an isolated technical request with no connection to a user or business outcome. Maybe they are overwhelmed by the codebase and trying not to expose how lost they feel.</p><p>Managers and leads often say, &#8220;There are no stupid questions. Ask anything.&#8221;</p><p>I genuinely mean that when I say it. But I also understand that new employees may still worry about looking unqualified in front of their manager. Pairing them with another engineer can create a safer place to ask those questions and build confidence.</p><p>That is part of why a manager needs multiple perspectives. Talk to the developer. Talk to the person coaching them. Look at the work. Ask what each person has tried. Do not assume one story gives you the complete picture.</p><h2><strong>Accountability Still Belongs To The Manager</strong></h2><p>As a manager, I can delegate pieces of onboarding. I can ask a senior engineer to be an intern buddy. I can give a team lead room to coach someone and adjust the day-to-day approach.</p><p>I cannot delegate away my accountability for the team as the manager for the team.</p><p>At the end of the day, the manager is responsible for making sure employees have clear expectations, appropriate support, useful feedback, and a fair process when performance concerns exist.</p><p>That does not mean the manager personally performs every coaching session. It means the manager remains engaged enough to understand what is happening and act when the team needs help.</p><p>This is where <strong><a href="https://www.devleader.ca/2024/10/12/radical-accountability-vs-blame-culture-dev-leader-weekly-65?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-149">accountability without sliding into blame</a></strong> matters. The goal is not to decide which person deserves to be attacked. The goal is to understand the system, clarify ownership, support improvement, and make a responsible decision.</p><h2><strong>A Practical Way To Escalate The Concern</strong></h2><p>If you are a lead and you are worried about someone&#8217;s progress, you do not need a dramatic speech.</p><p>You can use a simple structure:</p><ol><li><p><strong>State the observation.</strong> What specific behavior or outcome concerns you?</p></li><li><p><strong>Describe the trajectory.</strong> Is it improving, flat, inconsistent, or getting worse?</p></li><li><p><strong>Explain the support.</strong> What coaching, pairing, documentation, or context have you tried?</p></li><li><p><strong>Share the impact.</strong> How is this affecting the developer, the work, or the rest of the team?</p></li><li><p><strong>Ask for help.</strong> What do you need the manager to clarify, provide, or decide?</p></li><li><p><strong>Set a checkpoint.</strong> When will you compare notes again?</p></li></ol><p>That might sound like:</p><blockquote><p>I have been pairing with this developer on the deployment workflow. They can complete the steps with direct guidance, but they are still unable to complete the same workflow independently, and the same questions are repeating. I have tried written steps and two driver sessions. I would like your help understanding whether we should change the coaching plan or clarify the role expectations. Can we check in again after the next two tasks?</p></blockquote><p>That is specific. It leaves room for investigation. It creates an action. And it does not pretend you know the final outcome before the manager has even joined the conversation.</p><h2><strong>Earlier Communication Can Be Kinder</strong></h2><p>Waiting can feel compassionate because you do not want to get someone in trouble.</p><p>But silence is not always kind.</p><p>If the developer needs different coaching, earlier communication helps them get it. If expectations are unclear, earlier communication gives the manager time to clarify them. If the team is a poor fit, earlier communication creates more options. If a formal performance process eventually becomes necessary, the concern should not appear out of nowhere after nearly two years.</p><p>The time horizon for <strong>raising awareness</strong> is much shorter than the time horizon for <strong>giving someone a fair opportunity to improve</strong>.</p><p>Those ideas are not in conflict.</p><p>You can communicate early, coach patiently, gather better information, and avoid rushing to a conclusion. In fact, early communication is what makes that patience more responsible.</p><h2><strong>The Question Is Not &#8220;When Do I Give Up?&#8221;</strong></h2><p>The better question is: <strong>When do I create enough visibility for the right support to happen?</strong></p><p>My answer is early and regularly.</p><p>Do not wait until you are completely frustrated. Do not turn one difficult week into a permanent label. Do not hide the concern for 20 months and then hand your manager a final verdict.</p><p>Share the signal. Ask for help. Agree on the next step. Keep checking the trajectory.</p><p>Maybe the developer turns things around with better coaching. Maybe they thrive on a different team. Maybe the role ultimately does not work out. You cannot know that from the first concern.</p><p>What you can do is make sure the concern is handled with clarity, accountability, and enough time for people to respond.</p><p>If you have a software engineering or career question, leave it in the video comments or submit it anonymously at <strong><a href="https://codecommute.com/">codecommute.com</a></strong>. I would love to hear how your organization divides coaching responsibilities between leads and managers.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-should-you-tell-your-manager?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-should-you-tell-your-manager?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-should-you-tell-your-manager/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-should-you-tell-your-manager/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TKtL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TKtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!TKtL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!TKtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b790861-4483-4fd4-9d51-5b2bcc99fc55_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://www.devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[What It Actually Takes To Become A Principal Engineer]]></title><description><![CDATA[Dev Leader Weekly 148]]></description><link>https://weekly.devleader.ca/p/what-it-actually-takes-to-become</link><guid isPermaLink="false">https://weekly.devleader.ca/p/what-it-actually-takes-to-become</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 13 Jul 2026 00:13:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YfpB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp" 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://www.devleader.ca/2026/07/11/what-it-actually-takes-to-become-a-principal-engineer-dev-leader-weekly-148" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YfpB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YfpB!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:87256,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/07/11/what-it-actually-takes-to-become-a-principal-engineer-dev-leader-weekly-148&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/206770731?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YfpB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YfpB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc596de43-40e8-453a-848f-20b05caead6d_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Principal impact crosses team boundaries</p></li><li><p>Sustained ownership beats one heroic project</p></li><li><p>Visibility should follow meaningful impact</p></li><li><p><strong><a href="https://youtube.com/live/RRXi4lraNmc?feature=share">Join me for the live stream (or watch the recording) on Monday, July 13 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-RRXi4lraNmc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RRXi4lraNmc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RRXi4lraNmc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>What It Actually Takes To Become A Principal Engineer</strong></h2><p>I came across a question from someone trying to understand what getting promoted to principal engineer actually looks like. Not the generic career-ladder language. Not &#8220;increase your impact&#8221; and &#8220;show more visibility.&#8221; They wanted specifics, because the advice they had heard felt inconsistent and the target kept moving.</p><p>Honestly? I think that criticism is fair.</p><p>Before I get into my take, there is an important caveat: <strong>my perspective comes from working at Microsoft</strong>, and I am an engineering manager. Titles, levels, and expectations vary dramatically between companies. Some organizations go from senior directly to principal. Others have staff between them. Some swap the staff and principal labels entirely. So I am not claiming this is the universal definition.</p><p>What I <em>can</em> do is explain the pattern I have seen, the path I took, and what seems to separate someone doing excellent senior-level work from someone operating at principal scope.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=6rCAj2wnxg4">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-6rCAj2wnxg4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;6rCAj2wnxg4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/6rCAj2wnxg4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Principal Is A Scope Change, Not A Coding Upgrade</strong></h2><p>The simplest framing I have is this: becoming principal is usually not about being a senior engineer who types code even faster.</p><p>By the time you are being considered for principal, the expectation is already that you are technically strong. If you interview at a big tech company, coding questions may still be part of the process. System design will probably matter even more. But being excellent at those things is the baseline, not the entire case.</p><p>The bigger change is <strong>the surface area of your responsibility</strong>.</p><p>A senior engineer can have a huge impact within a team. A principal engineer is usually expected to influence work across teams, products, or an organization. That does not mean you personally write every line of code or dictate every design. In fact, I have written before about why <strong><a href="https://www.devleader.ca/2025/03/01/senior-developer-means-coding-less-dev-leader-weekly-85?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-148">senior developers often end up coding less</a></strong>, and principal scope pushes that shift even further.</p><p>You are increasingly responsible for questions like:</p><ul><li><p>Can several teams align around a technical direction?</p></li><li><p>Can this platform support an entirely new class of customers or partner teams?</p></li><li><p>Can a risky initiative move from an idea to a durable, supported capability?</p></li><li><p>Can stakeholders trust that you will drive the work without chasing you for updates?</p></li><li><p>Can other engineers lead meaningful pieces of the mission and succeed because of the structure you created?</p></li></ul><p>That is a very different job from being the person who solves the hardest ticket in the sprint.</p><h2><strong>You Can Be Promoted In Or Hired In</strong></h2><p>The person asking the question wanted to know what it took to get promoted into principal. My path was different: <strong>I was hired into Microsoft at the principal level</strong>.</p><p>That distinction matters because changing companies can be one route into the next level. Maybe you are already operating near that level, but your current team has limited opportunities. Maybe there are already several principal engineers and the organization cannot create enough principal-scope work for everyone. Maybe you have been close to promotion multiple times and now have a strong collection of examples to take into interviews elsewhere.</p><p>None of that means the interview is easy or that you get to skip demonstrating the scope. You still need the evidence.</p><p>When I joined Microsoft, I did not have another big tech company on my resume to provide a neat level-to-level comparison. I came from a much smaller digital forensics company, and I had never worked on globally distributed deployment systems at anything close to Microsoft&#8217;s scale. I go deeper into that transition in <strong><a href="https://www.devleader.ca/2024/04/29/break-into-big-tech-my-journey-from-startup-to-microsoft?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-148">my journey from a startup into Microsoft</a></strong>.</p><p>What I <em>did</em> have were concrete stories about operating across an organization.</p><p>One example was taking a product idea that had been outsourced, bringing the work in-house, building the team around it, and leading that area successfully for years. I could explain the business outcome, the technical ownership, the team growth, and the sustained responsibility. The domain was different, but the leadership and engineering skills transferred.</p><p>That is the key. You do not need to have solved the exact same problem at the exact same scale. You need to show that you have repeatedly handled <strong>comparable complexity, ambiguity, and organizational reach</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Make &#8220;Organizational Impact&#8221; Concrete</strong></h2><p>&#8220;You need more impact&#8221; is frustrating feedback because it sounds important while telling you almost nothing.</p><p>So what does organizational impact actually look like?</p><p>Imagine you work on a platform that supports three kinds of internal services. You lead an initiative that lets the platform support <em><strong>entirely new classes</strong></em> of services. Now you are not just improving one feature for your immediate team. You are expanding the value of everything your team already built and making it available to whole new groups across the company.</p><p>But even that outcome is not enough if your involvement was just proposing the idea or making a couple of code changes.</p><p>At principal scope, you might:</p><ol><li><p>Help shape the original idea and clarify the business value.</p></li><li><p>Lead the design and architecture across several teams.</p></li><li><p>Get partner teams bought into a shared direction.</p></li><li><p>Break the work into areas other engineers can own.</p></li><li><p>Navigate risks, dependencies, and changing requirements.</p></li><li><p>Keep stakeholders informed without turning communication into theater.</p></li><li><p>Carry the initiative through delivery and into sustained operation.</p></li></ol><p>That combination is what turns &#8220;I worked on a large project&#8221; into &#8220;I led an organizationally important outcome.&#8221;</p><p>And yes, influence is part of it. The technically best proposal does not automatically win. If you are struggling to build support across teams, the same dynamics I discussed in <strong><a href="https://www.devleader.ca/2026/05/25/why-your-ideas-keep-getting-shut-down-dev-leader-weekly-141?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-148">why good ideas keep getting shut down</a></strong> absolutely show up here too.</p><h2><strong>Visibility Should Be A Consequence Of Impact</strong></h2><p>I have mixed feelings about the word <strong>visibility</strong>.</p><p>I have personally been put forward for promotion and received feedback that I did not have enough visibility. That was incredibly frustrating. My reaction was basically: <em>what do you mean? I am doing the work my leadership asked me to do. Am I supposed to replace useful engineering work with a bunch of artificial self-promotion?</em></p><p>Communication matters. Project updates, stakeholder notes, demos, and reaching out to groups that might benefit from the work can all help. You should not hide important work and then be shocked when nobody knows it happened.</p><p>But I heard a framing from a VP that changed how I think about this: <strong>the impact should be large enough that the relevant parts of the organization naturally have some visibility into it</strong>.</p><p>Not every person needs every implementation detail. The point is that the work touches a broad enough surface area that leaders and partner teams can say, &#8220;Yes, I know that initiative. I understand why it matters, and I know this person is driving it.&#8221;</p><p>That is different from doing small-scope work and trying to amplify it until it <em>sounds</em> organizational.</p><p><em><strong>Actionable Tip</strong></em>: treat communication as a multiplier for real impact, not a substitute for it. Learn to explain the mission, risks, tradeoffs, and outcomes in language each audience understands. That skill is a big part of why I think <strong><a href="https://www.devleader.ca/2026/03/08/the-gap-between-good-developers-and-great-ones-dev-leader-weekly-130?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-148">communication separates good developers from great ones</a></strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Ownership Is The Signal Behind The Title</strong></h2><p>When I think about the strongest principal promotion cases I have seen, two words keep coming up: <strong>ownership</strong> and <strong>accountability</strong>.</p><p>People trust this person with an important initiative. They are not waiting for someone else to define every next step. They are not being chased down to see whether anything is moving. They create clarity, pull the right people together, surface risks, and keep driving toward the outcome.</p><p>Usually this is not someone who suddenly appeared, completed one enormous project, and immediately became principal. The pattern is more often:</p><ul><li><p>They have already been contributing at a high level on important work.</p></li><li><p>They consistently make the teams around them more effective.</p></li><li><p>They take on ambiguous problems without waiting for a perfect plan.</p></li><li><p>They build trust across technical and non-technical groups.</p></li><li><p>Then they lead one or two especially visible, high-impact initiatives that make the existing pattern undeniable.</p></li></ul><p>That last project may become the cleanest promotion story, but it is not the entire story. It is evidence that confirms sustained behavior.</p><p>This is also why principal scope cannot be reduced to a checklist of code contributions. If your project requires coordination across teams, the difficult parts may be alignment, decision-making, sequencing, communication, and creating ownership for other engineers. Those are not distractions from the technical work. At that scale, they <em>are part of the engineering work</em>.</p><h2><strong>The Goalposts Can Move</strong></h2><p>Here is the part nobody loves hearing: sometimes the target really does move.</p><p>Organizations change. They grow, contract, reorganize, and end up with different distributions of engineers at each level. A company may decide it has too many people at a certain level and quietly raise the bar. The work that earned a promotion several years ago may not be enough under the current expectations.</p><p>That does not make the process feel any less unfair when you are on the receiving end.</p><p>You can do strong work, get told you were close, receive vague feedback, and then wait another six months while wondering whether anything you are doing matters. I have experienced the disappointment of being put forward and not getting the result. I have also experienced this on behalf of my employees when I am working for putting them forward for promotion. It is demotivating, especially when you thought you were following the guidance you had been given.</p><p>If that happens, try to get specific:</p><ul><li><p>What evidence was missing from the promotion discussion?</p></li><li><p>Who needed to see a broader scope of impact?</p></li><li><p>Was the concern about the work itself or how it was represented?</p></li><li><p>What would make the next review materially different?</p></li><li><p>Are principal-level opportunities actually available on your current team?</p></li></ul><p>If your manager cannot turn the feedback into something concrete, that is useful information too.</p><p>And protect your energy. There is a real difference between stretching into bigger responsibility and running yourself into the ground chasing a title. I have shared more thoughts on <strong><a href="https://www.devleader.ca/2025/10/11/promotions-without-burnout-dev-leader-weekly-112?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-148">pursuing promotions without burning yourself out</a></strong>, because no level is worth destroying yourself over.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Principal Impact Is Shared, Not Hoarded</strong></h2><p>One of the projects that helped demonstrate my own impact within the principal band was a multi-month resiliency initiative across an entire platform. It had visibility well beyond my immediate team, and I was responsible for coordinating work across a much larger group.</p><p>But I did not personally do all of that work. Not even close.</p><p>The engineers leading individual parts of the initiative did the work. My role was to help create the direction, coordination, accountability, and conditions for those pieces to succeed together.</p><p>This is important because large impact is not a fixed pie where the principal engineer takes the biggest slice and everyone else gets less credit. Done well, it is closer to one plus one equaling three. The overall initiative becomes a strong impact story, <em>and</em> the engineers leading its different areas get meaningful stories of their own.</p><p>If your version of principal leadership requires absorbing all the credit, you are doing it wrong.</p><p>The best evidence of principal-level leadership is not that everything depended on you personally. It is that the organization could take on a larger mission because you helped many people move effectively in the same direction.</p><h2><strong>A Practical Plan If You Are Targeting Principal</strong></h2><p>So what can you actually do with all of this?</p><p><em><strong>Actionable Tip</strong></em>: stop asking only, &#8220;What task gets me promoted?&#8221; Start asking, &#8220;What important outcome is too large for one team, and how can I help the organization deliver it?&#8221;</p><p>Then work through this:</p><ol><li><p><strong>Learn your company&#8217;s definition.</strong> Get examples of people who were recently promoted and the evidence that mattered.</p></li><li><p><strong>Inventory your real scope.</strong> Write down the teams, systems, stakeholders, and business outcomes your work already touches.</p></li><li><p><strong>Find the missing dimension.</strong> Maybe you need broader technical ownership. Maybe you need cross-team influence. Maybe you need sustained delivery instead of another short project.</p></li><li><p><strong>Choose work that serves the mission.</strong> Do not manufacture a vanity project for promotion. Find an actual organizational problem worth solving.</p></li><li><p><strong>Practice telling difficult stories.</strong> Be ready to explain projects that went off track, how you built buy-in, where you changed direction, and what you learned.</p></li><li><p><strong>Create opportunities for other engineers.</strong> Principal impact should multiply the people around you, not turn you into a bottleneck.</p></li><li><p><strong>Consider the external path honestly.</strong> If your organization cannot offer the scope, another company may evaluate the experience you already have differently.</p></li></ol><p>None of this guarantees a promotion. That uncertainty is part of why the process feels so nebulous.</p><p>But it does move the conversation away from &#8220;do more stuff and be more visible&#8221; toward evidence you can actually reason about: scope, ownership, trust, organizational outcomes, and sustained impact.</p><h2><strong>Do Not Let The Level Become The Mission</strong></h2><p>I understand why people focus on titles and levels. They are the clearest quantitative signal we have for career progression. Compensation follows them. Responsibility follows them. It is natural to care.</p><p>The part I do not love is when the entire incentive becomes: <em>what do I need to do so I personally get promoted?</em></p><p>That framing can make a group of talented people optimize as individuals while the company hopes useful business outcomes appear as a side effect. It feels backwards.</p><p>The healthier question is: <strong>how do we work together more effectively on the mission, and how do I grow my ability to contribute at a larger scale?</strong></p><p>If you keep expanding the complexity you can navigate, the people you can align, the outcomes you can own, and the success you can create for others, you are building principal-level evidence. The title may still depend on timing, organizational shape, and a process you do not fully control.</p><p>But the capability is yours.</p><p>If you have questions about software engineering or career development, drop them in the comments or submit them anonymously at <strong><a href="https://codecommute.com/">codecommute.com</a></strong>. I would love to hear how principal expectations differ where you work too, because there absolutely is not one universal path.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/what-it-actually-takes-to-become?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/what-it-actually-takes-to-become?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/what-it-actually-takes-to-become/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/what-it-actually-takes-to-become/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RUvb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RUvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!RUvb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!RUvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F362c78e3-3ddc-4046-91d0-4fd36c9e6cc0_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://www.devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Feeding My AI Workers Templates]]></title><description><![CDATA[Dev Leader Weekly 147]]></description><link>https://weekly.devleader.ca/p/feeding-my-ai-workers-templates</link><guid isPermaLink="false">https://weekly.devleader.ca/p/feeding-my-ai-workers-templates</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 06 Jul 2026 07:15:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ui42!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp" 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_!ui42!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ui42!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!ui42!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!ui42!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!ui42!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ui42!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:304418,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/205464811?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ui42!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!ui42!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!ui42!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!ui42!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101961cf-44cf-4066-b9cf-2cf328a4b234_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Ralph loops make failed AI attempts cheap</p></li><li><p>My template library is the real unlock</p></li><li><p>First real end-to-end AI build succeeded</p></li><li><p><strong><a href="https://youtube.com/live/iU61NrBHmMI?feature=share">Join me for the live stream (or watch the recording) on Monday, July 6 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-iU61NrBHmMI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;iU61NrBHmMI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/iU61NrBHmMI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>Feeding My AI Workers Templates</strong></h2><p>I like doing these AI recaps after I&#8217;ve had a real stretch of time to sit down and actually build, and this one&#8217;s a good one. I recently had a week off work -- my wife was back in Canada visiting friends for her birthday, so I had the house (and the animals) to myself. I still ended up doing some work every day in some capacity, but I also had the flexibility to focus on what I actually wanted to build. Fair warning up front: this is an extension of the stuff I&#8217;ve been talking about recently with building things using AI.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=QXIcGSYTyqA">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-QXIcGSYTyqA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QXIcGSYTyqA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QXIcGSYTyqA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Too Many Copilot Tabs, Not Enough Brain</strong></h2><p>For context: I lean on Copilot CLI for basically everything these days. I keep telling myself I should try other tools more -- I&#8217;ve poked at a few this year -- but the flow is working so well that pulling myself away feels actively disruptive. Add in the fact that I&#8217;ve got my token limits lifted, and there&#8217;s a lot of incentive to just stay put.</p><p>My day-to-day looks like juggling a handful of different repositories at once. There&#8217;s <strong><a href="https://brandghost.ai/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">BrandGhost</a></strong>, the side business I run for automating social media posting and SEO work for other businesses. There&#8217;s Needlr, my <strong><a href="https://www.devleader.ca/2026/02/05/getting-started-with-needlr-fluent-di-for-net-applications?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">dependency injection framework for .NET</a></strong>. There&#8217;s a consumer app I&#8217;m helping a friend build. And then a handful of smaller supporting projects on top of that. In practice, that means I&#8217;ve got a PowerShell window open with something like twelve tabs, and I&#8217;m just bouncing between them -- prompting Copilot in one, checking on another, prompting a third.</p><p>I saw someone online recently put a name to the mental toll of doing this -- and that&#8217;s really pointing to the significance of this way of working. Constantly juggling too many AI sessions is a real cognitive cost, and it&#8217;s messing with people&#8217;s heads a little. I&#8217;ve <strong><a href="https://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">written about the context-switching problem before</a></strong>, but this is a new flavor of it -- it&#8217;s not just switching between tasks, it&#8217;s switching between <em>agents</em>, each with its own context, its own state, its own thing it&#8217;s in the middle of.</p><h2><strong>Ralph Loops, Orchestration, Spec Kit, and Templates</strong></h2><p>The system I&#8217;ve been building has multiple layers, and the important part is that every layer is optional on its own.</p><p>At the bottom is what&#8217;s known as a <strong>Ralph loop</strong> -- a pattern named after Geoffrey Huntley&#8217;s tongue-in-cheek nod to Ralph Wiggum, and it&#8217;s dead simple: a worker picks up a task, iterates on it inside some constraints, and if it doesn&#8217;t meet those constraints in the time it&#8217;s given, the work gets thrown away. No wasted human time arguing with an agent that&#8217;s gone sideways -- you just scrap the attempt.</p><p>On top of that sits an orchestration layer, which follows an open-source specification from OpenAI called <strong>Symphony</strong>. I&#8217;ve got my own C# implementation of it. This is the piece that schedules work across however many Ralph-loop workers are running.</p><p>And the third layer is an integration with <strong>Spec Kit</strong> -- GitHub&#8217;s open-source toolkit for spec-driven development. This is what lets you start the whole thing off just by handing it a spec. And I don&#8217;t know if I would call this a layer above or below the spec kit integration, but I have a template library that I am building for scaffolding. So it&#8217;s not exactly the same as spec kit, but it&#8217;s a a solo (or complementary) part of what the spec could include -- all up to my own standards and expectations for how I want something started.</p><p>Here&#8217;s the part I actually like: none of these layers are required. You can use the inner Ralph loop by itself. You can use the orchestration layer without ever touching a spec. Or -- and this is the version I&#8217;ve been testing -- you can hand the whole system a single one-shot prompt and let it use Spec Kit to build out the spec, then use the orchestration layer to schedule the work, then let the agents go execute it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The One-Shot Calculator Test</strong></h2><p>To actually test this, I&#8217;ve been feeding it about as simple a prompt as I could come up with: <em>&#8220;I want a desktop-based calculator app in C#.&#8221;</em> That&#8217;s it. That&#8217;s the entire prompt, on purpose -- I wanted to see whether, given almost nothing, the system would actually finish.</p><p>Given how trivial that ask is, my bar was low: I expected spec documents to get created, and I expected a simple app with some buttons that does calculations -- the same basic calculator UI you&#8217;ve got on your phone. Tech stack didn&#8217;t matter to me -- WinForms, WPF, whatever, I wasn&#8217;t specifying it in the prompt. And since it&#8217;s such a simple app, I gave it a budget of an hour to get it done.</p><p>The early attempts weren&#8217;t failures exactly, but I wasn&#8217;t happy with them either. The problem was mostly glue -- the connective tissue between all the pieces. I&#8217;d come back and find it had burned 30 minutes retrying a single step because a worker session had literally frozen, or gotten stuck in a loop trying to build something it was missing a dependency for. That&#8217;s half an hour of a 60-minute budget gone to something completely silly, not to the actual work.</p><p>Eventually, though, I got a real end-to-end success. First one. And that felt like a genuine milestone, even for a calculator app -- because it meant the scaffolding, the orchestration, and the loop logic were all finally working together instead of fighting each other.</p><h2><strong>Why Templates Are the Real Unlock</strong></h2><p>If you take away one thing from this issue, I&#8217;d want it to be this: the real unlock isn&#8217;t the fancy orchestration layer. It&#8217;s the <strong>template library</strong>.</p><p>I&#8217;ve been building up a set of templates -- somewhere north of 10, under 20 -- that represent the foundation I&#8217;d expect for any codebase, depending on what I&#8217;m building. Want a desktop app in C#? I&#8217;ve got an Avalonia template that&#8217;s great for getting a cross-platform desktop app off the ground fast, which is exactly what kicked off the calculator build. Every one of these templates already reflects how I like to <strong><a href="https://www.devleader.ca/2026/04/07/plugin-architecture-in-c-the-complete-guide-to-extensible-net-applications?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">build things with a plugin architecture</a></strong>, and how I like to wire up dependency injection.</p><p>But a template isn&#8217;t just a starting solution file and a couple of projects. That&#8217;s part of it, sure. The bigger part is that every template ships with my coding standards already turned on -- analyzers and linters configured the way I want them by default. It also ships with my agent instructions: a library of shared instructions that match against file paths. So if an agent is working in a file that ends in <code>test.cs</code>, it automatically gets my standards for what a good test file looks like in C#. And because those instruction files are themselves templated, I can swap in different pieces depending on the stack -- xUnit instructions versus TUnit instructions, for example.</p><p><em><strong>Actionable Tip</strong></em>: if you&#8217;re experimenting with anything like this yourself, don&#8217;t start with the orchestration layer. Start with a small library of your own project templates and coding standards. That&#8217;s the piece I use every single day, regardless of whether the fancier orchestration experiment ever fully pans out.</p><p>Put it together and the goal is simple: when I kick off a brand-new project, it&#8217;s scaffolded well <em>from the very first commit</em>, fully on autopilot -- instead of me getting an agent to reinvent my standards from scratch every single time.</p><h2><strong>This Isn&#8217;t Just For New Projects</strong></h2><p>The other half of this system isn&#8217;t about kicking off brand-new projects -- it&#8217;s about ongoing work. There&#8217;s a small web server sitting there listening, and I can just queue work items up to it. It schedules agents against that queue, and if a backlog builds up, an orchestrator looks at priority and dependencies and figures out how to work through it.</p><p>Some pieces of this I use constantly, some are still very much an experiment. The templating library and the reusable instruction files -- I&#8217;m in those every single day. Because I&#8217;m running across so many different Copilot sessions and repos, I keep spotting the same small pattern show up more than once: &#8220;oh, this is clearly a recurring problem, let&#8217;s get it into the instructions&#8221; -- and that feeds straight back into the template library. The same thing happens when I&#8217;m building a new feature: sometimes I realize I need a template for this shape of work, sometimes I realize I just need better instruction coverage.</p><p>That&#8217;s honestly why I&#8217;m not worried if the fancier orchestration experiment doesn&#8217;t pan out. The templating system is something I get value from regardless -- and it also syncs just the instruction files (not the whole template) across my different projects, so if I improve a standard in one repo, it can propagate to the others.</p><p>... Besides, people smarter than me I am sure are already lightyears ahead on the orchestration part!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Teaching the Agent to Ask About UX</strong></h2><p>After that first successful run, I went and looked at the actual calculator -- and it looked <em>terrible</em>. So I asked Copilot directly: based on the spec, was there anything in there about UX? Nope. Nothing.</p><p>So for the next attempt, I changed the one-shot prompt -- and I mean changed it barely at all, because I wanted to keep it close to a true &#8220;give it nothing&#8221; test. I just added one line: <em>I want a consistently styled user interface that looks modern.</em> That goes in right at the start, and then the same pipeline runs: Spec Kit turns it into a spec, orchestration schedules the work, agents execute.</p><p>The part that still catches me off guard, even though I built it: there&#8217;s an <em>agent</em> driving the entire Spec Kit conversation on my behalf. I didn&#8217;t invent that pattern -- it&#8217;s not novel -- but actually watching an agent have that back-and-forth about what I want built, fully hands-off, still feels a little nuts. When we&#8217;re this hands-off, we either need to expect things to be done in odd ways or provide significant enough guard rails to keep things on track.</p><p>Worth saying too: none of this requires Spec Kit at all. If I want to bring my own spec, or my own prompt, or skip that step entirely, I can just start a new repo and start sending work items straight to the queue. Those work items can just as easily be GitHub issues -- the system integrates with GitHub directly.</p><h2><strong>Turning This Into Real Eval Scenarios</strong></h2><p>Once I&#8217;ve got this working end-to-end reliably, the next step is turning scenarios like the calculator app into actual <strong>eval scenarios</strong>. The idea: define requirements that apply across every scenario -- has to finish within a given time window, has to stay under a token budget, has to actually deliver on the spec. That last one needs an LLM judge that reviews the spec against the output and decides whether it actually delivered. I&#8217;ve written before about <strong><a href="https://www.devleader.ca/2026/03/21/evaluating-ai-agents-with-microsoftextensionsaievaluation-in-c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">building LLM-as-judge evaluation harnesses in C#</a></strong>, and this is exactly the kind of system that needs one -- I don&#8217;t have a ton of eval experience yet, so I&#8217;m actively building that muscle.</p><p>Why bother? Because it gives me a way to tune the system honestly. If I change how conflict resolution works, or how retries behave, or how work gets scheduled across multiple parallel workers, I want to be able to run it against a handful of eval scenarios and say &#8220;yep, this still meets my bar&#8221; -- instead of just eyeballing one run and hoping.</p><p>One optimization idea that came out of watching this calculator run: it only used a single worker because there wasn&#8217;t enough parallel work to justify more. But for anything more complex -- multiple workers, potential conflicts, retry logic -- there&#8217;s a real efficiency question buried in here. Instead of spinning up a brand-new working session for every single work item, what if a worker just kept reusing the working directory it&#8217;s already sitting in? If a build takes a minute, and you&#8217;re chewing through 10 work items, that&#8217;s a minimum of 10 minutes out of your budget spent purely on rebuilding from scratch every time. On a 60-minute budget, that&#8217;s not a rounding error -- that&#8217;s a huge chunk of it.</p><h2><strong>Why I&#8217;m Actually Doing This</strong></h2><p>Zooming out, I think about all of this in two ways.</p><p>The first is that I&#8217;m trying to build things, and using AI well, so I need to get <em>better</em> at building the scaffolding that makes AI effective -- that&#8217;s my templating library, that&#8217;s my instruction file library, and I&#8217;m actively working on both.</p><p>The second is that I&#8217;m experimenting because that&#8217;s genuinely how I learn best. Long before AI was part of the picture, this looked like me <strong><a href="https://www.devleader.ca/2025/08/09/building-complex-side-projects-with-purpose-dev-leader-weekly-105?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-147">building a role-playing game as a side project</a></strong> -- not because I ever expected to ship a finished game, but because building it forced me to learn different corners of software engineering I wouldn&#8217;t have touched otherwise. Playing around with agent orchestration right now is the same instinct. I&#8217;m not sitting here thinking I&#8217;ve invented agent orchestration -- I haven&#8217;t, and there are people and companies way further ahead of me on this, which is completely fine. I&#8217;m happy to go use their stuff when it makes sense. This is just me playing around so I can learn, because that&#8217;s how learning has always worked for me.</p><p>If you&#8217;ve got questions about software engineering, AI, or your career, drop them in the comments, or head to <strong><a href="https://codecommute.com/">codecommute.com</a></strong> and submit them anonymously -- I&#8217;ll make a video response for you and everyone else watching.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/feeding-my-ai-workers-templates?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/feeding-my-ai-workers-templates?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/feeding-my-ai-workers-templates/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/feeding-my-ai-workers-templates/comments"><span>Leave a comment</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EUh4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EUh4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!EUh4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!EUh4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373b4fdb-a530-4362-a849-ffa85026084a_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://www.devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[When Your Product Manager Becomes Your Boss]]></title><description><![CDATA[Dev Leader Weekly 146]]></description><link>https://weekly.devleader.ca/p/when-your-product-manager-becomes</link><guid isPermaLink="false">https://weekly.devleader.ca/p/when-your-product-manager-becomes</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 28 Jun 2026 05:13:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YCc6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp" 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://www.devleader.ca/2026/06/28/when-your-product-manager-becomes-your-boss-dev-leader-weekly-146" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YCc6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YCc6!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:114158,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/06/28/when-your-product-manager-becomes-your-boss-dev-leader-weekly-146&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/203921955?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YCc6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YCc6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a82aabc-bd87-491f-82d6-f02b9b878af4_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Healthy conflict between product and engineering matters</p></li><li><p>A non-technical boss isn&#8217;t an automatic dealbreaker</p></li><li><p>Surface tech debt before it gets ignored</p></li><li><p><strong><a href="https://youtube.com/live/ncolE0sW-Do?feature=share">Join me for the live stream (or watch the recording) on Monday, June 29 at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-ncolE0sW-Do" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ncolE0sW-Do&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ncolE0sW-Do?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li></ul><div><hr></div><h2><strong>When Your Product Manager Becomes Your Boss</strong></h2><p>This week&#8217;s topic comes from a post over on the ExperiencedDevs subreddit, and it&#8217;s a good one: <em>is it normal for the product owner or product manager to be your boss?</em> The person who posted it had their engineering manager leave -- and instead of backfilling that role, leadership made the product manager who already worked with the team the new manager of the engineers. So now the engineers report into a product manager, and as far as I can tell there&#8217;s no engineering manager replacement coming. That&#8217;s just the path forward. They were asking the obvious question: is this normal, and what should I make of it?</p><p>You can <strong><a href="https://www.youtube.com/watch?v=GTjkcvOMZ-8">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-GTjkcvOMZ-8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GTjkcvOMZ-8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GTjkcvOMZ-8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>One Detail Changes the Whole Picture</strong></h2><p>Right at the end of the post, they dropped in a piece of context that I think matters a lot: this is a company that&#8217;s <em>primarily a marketing company</em>. Software is an aspect of what they do, not the whole business. And they wondered if maybe that was a factor.</p><p>I think it&#8217;s a huge factor, and I want to call out <em>why</em> I love that they included it. We talk about a ton of different software engineering topics, and the right answer almost always depends on the situation. A tiny startup is not a giant enterprise. A company that&#8217;s effectively 100% a software business is not the same as a company where software supports some other product or service. When I read something like this and feel a strong gut reaction -- <em>wait, what the heck is that?</em> -- the most useful thing I can do is check whether the context is just very different from what I&#8217;m used to. It usually is. So keep that in mind as I share my take: your situation might not map cleanly onto mine, and that&#8217;s exactly the point.</p><h2><strong>Why You Actually Want Conflict Between Product and Engineering</strong></h2><p>Here&#8217;s the meta point I really want to land, because everything else hangs off of it. I think it&#8217;s genuinely important for a team or an organization to have <em>healthy conflict</em> between engineering and product. &#8220;Conflict&#8221; is almost too strong a word -- think of it as healthy tension between two groups motivated by different priorities.</p><p>If you only have product representation, you get pulled toward what I&#8217;d only half-jokingly call feature factory hell -- crank out features, crank out more features, and never make space for the work that keeps the foundation from getting brittle. Flip it around: if you only have engineering representation, you exaggerate the other way into tech-debt-and-architecture hell, endlessly refactoring and re-architecting while shipping very little customer value. Both extremes are caricatures, obviously. But that&#8217;s the whole reason you want both voices in the room. They pull against each other, and that tension is what keeps you focused on what actually matters: shipping real value without quietly rotting the codebase.</p><p>So when a team loses its engineering manager and folds entirely under product, my first concern isn&#8217;t &#8220;a PM can&#8217;t manage people.&#8221; It&#8217;s &#8220;who&#8217;s representing the engineering side of that tension now?&#8221;</p><h2><strong>The Traditional Setup, and What&#8217;s Really Shifting</strong></h2><p>In a more traditional org, engineers report up to an engineering manager, and the product manager works <em>with</em> the team. Those are two different things, and it&#8217;s worth separating them. The product manager absolutely helps understand and set priorities -- they&#8217;re translating what customers and the broader industry are asking for, figuring out which direction the product should go, and often bridging into sales and marketing. But the engineers aren&#8217;t reporting to that person for career development. They report to an engineering manager, and the engineering manager partners with the product manager on what to actually go focus on. If you want my full breakdown of that role, I wrote about <strong><a href="https://www.devleader.ca/2021/05/05/engineering-manager-whats-expected-in-the-role?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-146">what&#8217;s actually expected of an engineering manager</a></strong>.</p><p>What&#8217;s changing in this Redditor&#8217;s case is that the reporting line <em>and</em> the engineering representation are both collapsing into the product manager. The partnership tension I just described doesn&#8217;t have an obvious counterweight anymore.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Ownership Moves Around -- a Lot</strong></h2><p>I want to paint a picture from my own career, because the balance between product and engineering is not fixed. It moves.</p><p>Back when I worked at a <strong><a href="https://www.devleader.ca/2024/04/29/break-into-big-tech-my-journey-from-startup-to-microsoft?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-146">digital forensics company before I landed at Microsoft</a></strong>, most of the time product management set the direction of the product and made it very clear what we needed to deliver -- they sat between engineering, sales, marketing, and customers. We shipped monthly, and we&#8217;d prep hard for some big conferences, so product would shape a lot of the roadmap around those. From the engineering side, as an engineering manager and a software engineer, our job was to make it real -- and to push back in a healthy way. &#8220;You want these things, but you may not see all the detail that goes into doing them well, so let us represent that side.&#8221; Then we&#8217;d meet in the middle. Funny thing is, even though a lot was set by product, I never felt like I lacked input or control. We just had a genuinely good working relationship.</p><p>Then I came to Microsoft, onto a deployment platform team in Microsoft 365. Early on, it felt almost the opposite -- engineering managers were quite literally defining the roadmap, and the product managers were there to facilitate that vision, jumping into cross-team dependencies and smoothing things out. Then there was a reorg, and it flipped dramatically. Product went from facilitating to owning every priority, work stream, and deliverable -- to the point where it sometimes felt like I barely had a say. A complete 180, on the same org, in the span of a few years.</p><p>On the team I&#8217;m on now, it&#8217;s more of a hybrid. I feel like I have a lot of say in what we work on, and the product managers do a great job bridging the business needs down -- &#8220;here&#8217;s the initiative, here&#8217;s the spend or performance goal we need to hit&#8221; -- and then leaving the <em>how</em> to engineering. Three very different balances, all in one career. So when someone asks &#8220;is it normal for product to run things?&#8221; -- honestly, the ratio swings all over the place depending on where you are.</p><h2><strong>The Two Things That Get Weird</strong></h2><p>So what actually gets harder when a product manager is directly managing engineers? I see two big ones.</p><p><strong>Career development.</strong> In this case the poster said their PM isn&#8217;t technical at all. That can make career growth genuinely tricky. Not impossible -- I want to be careful here, because I&#8217;ve had non-technical managers I thought were fantastic, and plenty of people will disagree with me on that. There are real strengths a non-technical manager can bring. The hard version is when someone is non-technical <em>and</em> struggles to communicate effectively with technical people. That&#8217;s when it gets rough -- it&#8217;s hard to feel relatable to a manager when you don&#8217;t think they can follow what you&#8217;re working on or understand what career progression looks like for an engineer. Even if they actually do get it, that gap erodes the trust and respect that make the relationship work. I went deeper on how you even evaluate this in <strong><a href="https://www.devleader.ca/2026/05/04/measuring-manager-effectiveness-can-you-even-quantify-it-dev-leader-weekly-138?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-146">measuring manager effectiveness</a></strong>.</p><p><strong>Delivery and representation.</strong> This is the thread running through everything above. When you drop the engineering voice out of priority-setting, you lose the person who&#8217;s supposed to argue for the foundation. You&#8217;re left with a product focus -- and like a bunch of the Reddit commenters warned, <em>get ready for the feature factory</em>: more and more features, less and less room for the work that keeps your base from getting brittle. It&#8217;s not that it can&#8217;t work. It&#8217;s that the structure quietly removes the counterweight. Getting non-feature work onto the roadmap is already hard enough with an engineering manager in the room -- I broke down that whole battle in <strong><a href="https://www.devleader.ca/2026/06/15/how-to-get-tech-debt-prioritized-dev-leader-weekly-144?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-146">how to get tech debt prioritized</a></strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How You Actually Make It Work</strong></h2><p>Here&#8217;s the part I care about most, because it&#8217;s the part you can control. If you&#8217;re in this spot and you&#8217;re not immediately heading for the door, do two things.</p><p>First, invest early in communication. Figure out <em>how</em> to talk to this manager so they actually get it. If you start going on about classes and code structure, a non-technical PM may have no idea what you mean and no interest in it. So learn -- quickly -- the level you need to communicate at, and ideally help them learn how to communicate effectively back to you. You don&#8217;t control their half of that, but you fully control yours, and getting this right is what lets you set clear expectations when you&#8217;re not seeing eye to eye. This, by the way, is the exact skill I&#8217;d argue <strong><a href="https://www.devleader.ca/2026/03/08/the-gap-between-good-developers-and-great-ones-dev-leader-weekly-130?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-146">separates good developers from great ones</a></strong> -- being able to translate technical reality for a non-technical audience.</p><p>Second, be proactive about surfacing the engineering side. A non-technical product manager probably isn&#8217;t going to ask, &#8220;hey, where&#8217;s our tech debt, do we need to re-architect anything?&#8221; -- not out of malice, but because it&#8217;s genuinely not on their radar. So you&#8217;ve got two options. You can sit and sulk -- &#8220;well, I guess we&#8217;re a feature factory forever, no tech debt work, no improving our test infrastructure, no re-architecting.&#8221; Or you can say: they&#8217;re not going to ask because they don&#8217;t know to ask, so <em>we&#8217;ll</em> bring it up. Lay out the pros, cons, and risks for the areas they don&#8217;t have exposure to. Whether they act on it is a separate story -- but the part you control is making sure it gets raised. And if they consistently won&#8217;t factor it in when prioritizing? That itself is a useful signal about whether this is a good long-term fit.</p><h2><strong>My Best Boss Was a Product Leader Running Engineering</strong></h2><p>I&#8217;ll leave you with a story that complicates the whole &#8220;product running engineering is bad&#8221; narrative. At that same digital forensics company, there was a stretch where our VP of engineering left, and the interim VP of engineering was our <em>product management leader</em>. So product was, quite literally, in charge of all of engineering -- a different level in the hierarchy than this Reddit situation, but the same basic shape.</p><p>And honestly? In my eight years there, that person was the best engineering leader I worked with at that level. Which sounds wild given the framing of &#8220;oh no, product is in charge, there&#8217;s no engineering voice.&#8221; So what made it work? He wasn&#8217;t writing code and wasn&#8217;t a software engineer, but he was technical <em>enough</em> in how he communicated. He listened to the engineering side. He clearly understood that you need that healthy conflict between product and engineering to prioritize well. And when he didn&#8217;t follow a technical detail, he&#8217;d just say so -- &#8220;I don&#8217;t get it, can you explain it a different way?&#8221; -- no bluffing, never frustrating to work with. A lot of it came down to his willingness to genuinely take in engineering concerns instead of just handing down &#8220;product decided, go ship it by next week, figure it out.&#8221; Even reporting into him, I always felt well supported in my own growth.</p><h2><strong>So, Is It Normal -- and Should You Worry?</strong></h2><p>My honest read: it&#8217;s not an absolute dealbreaker, but I&#8217;d also be lying if I said I&#8217;d love being in this exact situation. I think statistically I got pretty lucky with that interim VP, and more often than not, I suspect this setup doesn&#8217;t pan out quite as well. But the outcome isn&#8217;t fully out of your hands. If you&#8217;re aware of the parts you can influence -- communicating in a way your manager actually understands, and proactively making sure engineering concerns reach the prioritization table -- you can tilt the odds. And if you give that a real shot and it still doesn&#8217;t work? Then yeah, it&#8217;s probably time to go find a place where engineering gets a seat at the table.</p><p>If you&#8217;ve got a situation like this you&#8217;re wrestling with, you can submit it anonymously over at <strong><a href="https://codecommute.com/">codecommute.com</a></strong> and I&#8217;ll do my best to make a video response. Hope this one helps.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-your-product-manager-becomes?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-your-product-manager-becomes?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-your-product-manager-becomes/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-your-product-manager-becomes/comments"><span>Leave a comment</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GJR-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GJR-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa630713-cb4c-4255-932d-9b2405817318_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!GJR-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!GJR-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa630713-cb4c-4255-932d-9b2405817318_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Debugging When You Have No Idea What's Going On]]></title><description><![CDATA[Dev Leader Weekly 145]]></description><link>https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats</link><guid isPermaLink="false">https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 22 Jun 2026 02:40:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WXcv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp" 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://www.devleader.ca/2026/06/21/debugging-when-you-have-no-idea-whats-going-on-dev-leader-weekly-145" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WXcv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WXcv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:144450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/06/21/debugging-when-you-have-no-idea-whats-going-on-dev-leader-weekly-145&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/203032479?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WXcv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!WXcv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c5c15d6-28d4-4aae-b5df-8f8cddbac9ae_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Not knowing everything is completely normal</p></li><li><p>Prove or disprove every hypothesis, then write it down</p></li><li><p>Disproving is just as valuable as proving</p></li><li><p><strong><a href="https://youtube.com/live/7EbZvuNTXIc?feature=share">Join me for the live stream (or watch the recording) on Monday, June 22 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-7EbZvuNTXIc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;7EbZvuNTXIc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/7EbZvuNTXIc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>Debugging When You Have No Idea What&#8217;s Going On</strong></h2><p>Something is on fire. A live service is doing something it absolutely should not be doing, the metrics look wrong, and you&#8217;re sitting there staring at it thinking: <em>I genuinely have no idea what&#8217;s going on.</em> If you&#8217;ve ever felt that creeping sense of shame in that moment -- like a &#8220;real&#8221; engineer would already know the answer -- I want to talk to you. Because that feeling is incredibly common, and it&#8217;s almost entirely self-inflicted.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=ofureG6lIOw">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-ofureG6lIOw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ofureG6lIOw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ofureG6lIOw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>The Shame of Not Knowing Is Almost Entirely Self-Inflicted</strong></h2><p>This whole topic came out of a post on the ExperiencedDevs subreddit. Someone framed it really honestly: it feels <strong>shameful</strong> as a software engineer when something is happening that you don&#8217;t understand, and you genuinely don&#8217;t know what&#8217;s going on or how to make progress on it. And I get it. I really do. But I want to say this as clearly as I can: that is completely okay, and it&#8217;s completely normal.</p><p>No one in the world expects you to know everything. They shouldn&#8217;t expect it, and honestly, they <em>can&#8217;t</em> expect it -- it&#8217;s not possible. Part of being an engineer isn&#8217;t having every answer in your back pocket. It&#8217;s being curious and working toward a better understanding when you don&#8217;t have the answer yet. A lot of this pressure is self-inflicted, and a lot of it is just software engineering culture. We tend to be a group of strong problem-solvers, so hitting a wall where we just <em>don&#8217;t know</em> is wildly uncomfortable. That discomfort is normal. It does not make you a bad engineer.</p><p>This is also one of the big reasons we build software in teams. If everyone on your team thought exactly the way you do, then the moment <em>you</em> got stuck, the entire team would be stuck right alongside you. Diversity of skill, experience, and perspective is a feature, not a nicety. A lot of <strong><a href="https://www.devleader.ca/2024/04/15/8-things-i-wish-i-understood-earlier-in-my-career?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-145">the things I wish I understood earlier in my career</a></strong> come right back to exactly this.</p><h2><strong>Even Multiple Levels Up, We Don&#8217;t Always Have the Answer</strong></h2><p>I was recently talking with one of my engineers who was deep in a live site investigation. For context, the service area my team is responsible for in Microsoft 365 is... a bit outrageous. The sheer amount of traffic flowing through our systems makes it genuinely impossible for any single person to know every detail about everything. Should people on the team get better and better at investigating and understanding it over time? Absolutely -- that&#8217;s the whole game. But no single person knows everything all the time. The surface area is just too big.</p><p>So there we were, talking it through. A very sharp engineer, and me, several levels up -- and between the two of us, there was no obvious answer. In that moment, as a manager, part of me felt that same pull: <em>man, I wish I just had the answer in my head.</em> But my boss doesn&#8217;t expect me to know everything. My skip level doesn&#8217;t expect me to know everything. We have to make space for that. If your goal is to never be in a situation where you don&#8217;t know the next step, you&#8217;re going to fail at that goal. You <strong>will</strong> end up there. And that&#8217;s fine, because what actually matters is that you try to make progress.</p><p>If you&#8217;ve ever been on the receiving end of someone expecting you to instantly understand everything, <strong><a href="https://www.devleader.ca/2026/02/04/these-junior-developers-suck-they-just-dont-understand-my-code?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-145">this rant about &#8220;junior developers who just don&#8217;t get it&#8221;</a></strong> digs into that expectations mismatch between experience levels.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>My Framework: If You Can Prove It or Disprove It, Write It Down</strong></h2><p>Okay, so with all of that out of the way -- how do I actually approach a problem when I have no idea what&#8217;s going on?</p><p>Here&#8217;s the core of it: most people treat problem-solving as proving a hypothesis <em>right</em>. I treat it as building a matrix of what&#8217;s <strong>known fact</strong> versus what&#8217;s still <strong>assumption</strong>.</p><p>When most people debug, they form a hypothesis, go chase it, and if it turns out to be right, great -- they keep progressing. But if it turns out to be <em>wrong</em>, it gets quietly dismissed as wasted effort. &#8220;We thought it might be this, we looked into it, it wasn&#8217;t, so we got nowhere.&#8221; I want to push back on that hard. <strong>Disproving something is just as valuable as proving it.</strong></p><p>So whenever I can prove a statement true <em>or</em> false -- by reproducing something, by reading through the code, by finding a log that contradicts the theory -- I write it down. On a whiteboard, in a shared doc, wherever the team can see it. Back when we worked more in person, I used to fill entire whiteboards with assumptions, each one marked as proven or disproven. The magic of this is that <strong>none of the investigation is wasted</strong>. Every hypothesis you resolve, in either direction, shrinks the unknown. While something stays an assumption, it&#8217;s a live question hanging over the whole investigation. The goal is to keep converting assumptions into facts.</p><p>For the C# side of actually getting useful signal out of failures, I&#8217;ve got a guide on <strong><a href="https://www.devleader.ca/2023/10/22/how-to-handle-exceptions-in-csharp-tips-and-tricks-for-streamlined-debugging?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-145">handling exceptions in a way that streamlines debugging</a></strong>. For everything else: Build out your matrix of assumptions. Validate them.</p><h2><strong>There Are No Stupid Hypotheses</strong></h2><p>One of my favorite side effects of this approach: there are no dumb ideas. When nobody knows what&#8217;s going on, someone will eventually say, &#8220;This is going to sound kind of crazy, but... could it be something with the operating system?&#8221; And the room groans -- &#8220;come on, the OS is the <em>last</em> thing that&#8217;s going to have a problem.&#8221;</p><p>But... maybe it is? If you can&#8217;t state as a matter of <em>fact</em> that it isn&#8217;t, then it&#8217;s an assumption, and it&#8217;s completely valid to go prove or disprove. Across thousands of machines, could there be something off with a specific OS version in a specific scenario? One hundred percent. Is it common? Nope. Is it possible? Absolutely. So write it down and go check. Often the &#8220;crazy&#8221; hypothesis is exactly the one worth checking, <em><strong>because it&#8217;s the last thing anyone would have looked at</strong></em> -- and you already admitted you don&#8217;t know what&#8217;s going on.</p><h2><strong>Watch the Correlations Emerge</strong></h2><p>Here&#8217;s where it gets genuinely satisfying. Once you start turning assumptions into proven facts, patterns start to surface that you couldn&#8217;t see before.</p><p>You check the OS angle: &#8220;Nope, we see it across versions X and Y, so it&#8217;s not <em>the</em> operating system.&#8221; Fine, that&#8217;s a fact now. What about hardware? &#8220;We see it on configurations A and B, but not C... so C is still open, but A and B definitely reproduce it.&#8221; Now you&#8217;re not holding a pile of vague guesses in your head -- you&#8217;re drawing a map. And when you lay those proven facts side by side, you might suddenly notice: <em>wait, we only ever see this on these specific combinations.</em> Only this software version. Only this region. Only this traffic pattern.</p><p>That&#8217;s the moment the investigation stops being vibes and starts being <strong>data-driven</strong>. You go from &#8220;I don&#8217;t know, so let&#8217;s just guess&#8221; into actual experimentation, and then into higher-level correlations between signals you&#8217;ve <em>proven</em> are real. For live systems, this is also where good <strong><a href="https://www.devleader.ca/2026/04/02/opentelemetry-and-observability-in-microsoft-agent-framework?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-145">observability and telemetry</a></strong> earns its keep -- the more real signal you&#8217;ve instrumented, the faster those correlations show up.</p><p>And a bonus point here: get comfortable with AI and MCP servers. Being able to rely on an LLM to pull data and help you correlate it is SIGNIFICANTLY more effective than you being in the weeds just trying to pull the actual data. Let it do the boring work so you can use your brain for what&#8217;s more valuable.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Where This Came From: Debugging With Almost No Information</strong></h2><p>This framework actually goes back to my digital forensics days. The software we built essentially scanned devices -- mostly hard drives at the time -- and turned the data into a structured report so an investigator looking for digital evidence had something readable to work through. Think of it as a giant search engine plus an interactive dashboard.</p><p>Here&#8217;s the brutal part for debugging: because this was forensics, the data on those devices was highly sensitive material tied to active criminal cases, and a lot of it legally could not be copied or reproduced. So the usual &#8220;just send me a repro&#8221; was frequently off the table. On top of that, many of these workstations were often air-gapped by design. So when something broke, you might get a terse &#8220;it doesn&#8217;t work&#8221; and <em>maybe</em> a log file -- and you&#8217;d better hope there was something obvious in the stack trace, because a lot of the time there wasn&#8217;t.</p><p>When you&#8217;re debugging with limited information and no ability to reproduce the problem, you cannot afford to waste effort chasing hypotheses you&#8217;ve already implicitly ruled out. That constraint is exactly what forged this prove-or-disprove habit. It&#8217;s the same energy as untangling a gnarly dependency injection <strong><a href="https://www.devleader.ca/2024/03/19/autofac-in-asp-net-core-how-to-avoid-this-debugging-nightmare?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-145">debugging nightmare</a></strong> -- you methodically eliminate possibilities until the real cause has nowhere left to hide.</p><p>And yes -- afterward, always reflect: <em>if this happened again, could we add better logging, telemetry, or monitoring to catch it faster next time?</em> That follow-up is worth doing every single time. It just usually doesn&#8217;t help you in the heat of the moment, so treat it as a separate step.</p><h2><strong>The Keys Are in Your Hand</strong></h2><p>One last thing. Sometimes the reason you&#8217;re stuck is an assumption you never bothered to prove because it seemed <em>too</em> obvious to check. &#8220;Why would I look at that? It&#8217;s obviously not the problem.&#8221; But did you actually prove it?</p><p>It&#8217;s like tearing the house apart looking for your keys while they&#8217;re in your hand the whole time. I did this constantly as a kid building LEGO -- convinced they forgot to include the one piece I needed, when it was the next piece in the instructions, sitting right in my hand. Investigations have the exact same trap. The thing you &#8220;know&#8221; is fine is sometimes the very thing that&#8217;s broken.</p><h2><strong>You&#8217;re Not a Bad Engineer for Not Knowing</strong></h2><p>So if you take one thing from this issue, let it be this: you are not a bad engineer because you don&#8217;t know the next step. Don&#8217;t let the shame paralyze you. Accept that not knowing everything is completely normal -- it <em>has</em> to be, because no one can possibly know everything. The point isn&#8217;t to have the answer instantly. The point is to get curious, start writing down hypotheses, and start proving or disproving them one at a time. If you stay curious and keep exploring the problem space, you&#8217;ll keep making progress. And that&#8217;s all any of us can really ask for.</p><p>If you&#8217;ve got questions about software engineering or career development, drop them in the comments or head over to <strong><a href="https://www.codecommute.com/">CodeCommute.com</a></strong> and write in anonymously. I&#8217;m always happy to make a response and share a perspective if it helps.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/debugging-when-you-have-no-idea-whats?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SNKU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SNKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!SNKU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!SNKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd701b0cd-4ab7-4c50-a80a-fdd2f037dc5e_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[How to Get Tech Debt Prioritized]]></title><description><![CDATA[Dev Leader Weekly 144]]></description><link>https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized</link><guid isPermaLink="false">https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 15 Jun 2026 05:55:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YOJC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp" 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://www.devleader.ca/2026/06/15/how-to-get-tech-debt-prioritized-dev-leader-weekly-144" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YOJC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YOJC!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:126270,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/06/15/how-to-get-tech-debt-prioritized-dev-leader-weekly-144&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/202080638?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YOJC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YOJC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eda30e3-23b1-4b73-aff7-edd57988a418_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Decision-makers are detached from your code</p></li><li><p>&#8220;The code is a mess&#8221; never wins</p></li><li><p>Reframe tech debt as future velocity</p></li><li><p><strong><a href="https://youtube.com/live/sbNAWEMSgyI?feature=share">Join me for the live stream (or watch the recording) on Monday, June 15 at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-sbNAWEMSgyI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sbNAWEMSgyI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sbNAWEMSgyI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li></ul><div><hr></div><h2><strong>How to Get Tech Debt Prioritized</strong></h2><p>This week&#8217;s topic comes from a post on the ExperiencedDevs subreddit. A developer was asking for perspective on getting their manager to prioritize tech debt. It used to get prioritized, they said, but lately their manager keeps pushing back because the team needs to deliver features. If you&#8217;ve been writing software for any length of time, you know this one -- the age-old battle between shipping more things and making the code better. And if you haven&#8217;t hit it yet, it&#8217;s probably just about to happen.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=uSA_ot1FdX0">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-uSA_ot1FdX0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;uSA_ot1FdX0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/uSA_ot1FdX0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>This Is a Prioritization Problem, Not a Code Problem</strong></h2><p>The first thing I want to get out of the way is that this is genuinely tricky, and it&#8217;s tricky because it isn&#8217;t really one problem. It&#8217;s a prioritization problem, a communication problem, and a perspective problem all bundled together. If you&#8217;re more junior and this is happening to you for the first time, it&#8217;s easy to feel confused and frustrated by it -- like you&#8217;re clearly right and nobody will listen. So it&#8217;s worth slowing down and understanding what&#8217;s actually going on underneath.</p><p>Tech debt almost always accumulates the same way: a few things stack up, and whoever owns prioritization -- a product owner, an engineering manager, some combination of those roles -- has to make a call. And the more removed those people are from the code, the less direct understanding they have of how specific areas of the codebase affect your ability to ship. I don&#8217;t mean that conceptually. I mean very specifically: they are not going to know that <em>this</em> class or <em>that</em> module is the thing slowing you down, because they&#8217;re not spending time in there.</p><p>I&#8217;ll be honest about my own seat here, because it&#8217;s relevant. I&#8217;m an engineering manager at Microsoft -- I&#8217;ve been there just under six years, and I&#8217;ve been programming for over 20 years. But in my role, I don&#8217;t write code. It&#8217;s not that I&#8217;m not allowed to; it&#8217;s that there are enough other things I&#8217;m responsible for that it doesn&#8217;t make sense for me to spend my time there. So there are absolutely situations where I am simply not aware of where the tech debt is. I have to rely on and trust my team to bring it up. And when they do, I expect them to be able to articulate <em>why</em> it matters. That last part is the whole ballgame, and we&#8217;ll come back to it.</p><h2><strong>The Two Forces Working Against You</strong></h2><p>When you zoom out, there are two big forces shaping these conversations from the prioritizer&#8217;s side.</p><p><strong>The first is constant pressure to deliver more, often with less.</strong> Before Microsoft, I was at a startup, and there it was a never-ending stream of &#8220;how do we get more things done?&#8221; There&#8217;s truly an infinite amount of work, and a lot of it feels like strategic bets -- things you&#8217;re not certain about but believe you have to try. At a big company, it&#8217;s a different flavor of the same thing: less uncertainty per bet, but a massive surface area of teams all pushing their own initiatives. Either way, the pressure is &#8220;more, faster.&#8221; I went deep on how that infinite pile grows as you get more senior in <strong><a href="https://www.devleader.ca/2025/11/01/more-experience-more-overwhelmed-dev-leader-weekly-114?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">More Experience, More Overwhelmed</a></strong>.</p><p>Layer on the current climate -- hiring slowing down, teams shrinking, and the &#8220;we made a strategic pivot to AI, so where&#8217;s the 10x productivity?&#8221; expectation -- and the &#8220;do more with fewer people&#8221; drumbeat gets even louder. I hear this constantly: leadership bet on AI, and they&#8217;re relying on the people building things to show the return.</p><p><strong>The second force is detachment from specific areas of the code</strong>, which we already talked about. Put those two together -- relentless delivery pressure plus distance from the codebase -- and you have the exact conditions where tech debt loses. Not because anyone is stupid or malicious, but because the people deciding are focused on shipping value to customers, and you&#8217;re handing them an argument about classes and methods.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How the Debt Actually Piles Up</strong></h2><p>Let me walk through the mechanism, because it&#8217;s so common it&#8217;s almost mechanical.</p><p>Say you want to build feature A in a one or two week window. The north star design is &#8220;do X, then Y, then Z.&#8221; If you did all of it properly, it might take a month or two. But you look at the window and go: we can definitely get X done, we&#8217;ll get partway into Y, maybe finish it with a tweak, and we will <em>not</em> get to Z. But that&#8217;s fine -- we&#8217;ll ship A on time and come back for Z next sprint.</p><p>So you ship. You got X, part of Y, and no Z. The feature works. You&#8217;re now in an intermediate state with a bit of debt baked in -- and then the question comes: what&#8217;s more important, the next batch of customer value, or going back to finish Z? If the feature already shipped and already works, finishing Z is almost never the higher-value option. If Z had been truly necessary, it would have blocked the release in the first place.</p><p>Now multiply that by every feature your team ships -- two, three, five, six of these at once -- and you can see how you just keep bleeding debt. I genuinely believe nearly every line of code we write is debt to some degree, but here I mean the specific, visible gaps you <em>know</em> you left because you took a shortcut to hit a date. And I don&#8217;t mean &#8220;shortcut&#8221; as an insult -- it&#8217;s often not &#8220;oh my god I can&#8217;t believe I wrote that.&#8221; It&#8217;s just &#8220;we didn&#8217;t get the full thing done, the feature works, and what&#8217;s left isn&#8217;t visible to the customer.&#8221; The frustration is that it keeps happening, sprint after sprint, and that constant churn is its own kind of tax -- closely related to the productivity drain I covered in <strong><a href="https://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">The Context Switching Problem Every Dev Faces</a></strong>.</p><h2><strong>Why &#8220;The Code Is a Mess&#8221; Never Wins</strong></h2><p>Here&#8217;s where most engineers shoot themselves in the foot. The argument they bring sounds like: &#8220;As a software engineer, I think we should focus on this. Here&#8217;s why.&#8221; And every reason is about the code -- this class is convoluted, we hate touching this module, we want to refactor for cleanliness.</p><p>Now put yourself in the prioritizer&#8217;s chair. They&#8217;re weighing &#8220;spend a week rewriting some classes&#8221; against &#8220;fix these three critical customer-reported bugs and ship these two features the sales team can use to chase five new customers.&#8221; Why would they pick the cleanup? The framing was lost before the conversation even started, because it was built entirely around things they don&#8217;t focus on and can&#8217;t easily evaluate.</p><p>It&#8217;s almost like you&#8217;re set up to automatically lose. And that&#8217;s a genuinely lousy spot -- being forced to pit your tech debt against visible customer value, using the one language the other side doesn&#8217;t speak.</p><p><em><strong>Actionable Tip</strong></em> -- Before you pitch tech debt, run it through this filter: strip out every reason that&#8217;s about the code itself, and see what&#8217;s left. If there&#8217;s nothing left, you don&#8217;t have a business case yet -- you have a preference. Keep digging until you can express the cost in terms of delivery, bugs, or time.</p><h2><strong>Reframe It in the Language of the Business</strong></h2><p>The move is to translate. Instead of &#8220;this code is a mess,&#8221; make it about speed, risk, and waste on the work <em>they</em> already care about.</p><p>Concretely, it sounds more like this: &#8220;This isn&#8217;t some legacy file we haven&#8217;t touched in four years and never will. We are actively in here right now. Two of the bugs this sprint are in this exact code, and we keep breaking it because it&#8217;s convoluted and we can&#8217;t test it effectively. If we slow down for a week and clean it up, the two features you want next -- which we already know live in this same area -- get easier. They&#8217;ll take half the time going forward, and we&#8217;ll stop bleeding these recurring bugs.&#8221;</p><p>See the difference? You&#8217;ve connected the cleanup to <strong>future velocity</strong>, <strong>reduced bugs</strong>, and <strong>less wasted time</strong> -- and you&#8217;ve anchored it to specific upcoming work the prioritizer has already hinted at. You&#8217;re not asking them to value clean code. You&#8217;re showing them how the debt is actively taxing the roadmap they care about. That&#8217;s the same spirit as deciding to <strong><a href="https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">talk to your manager about burnout</a></strong> -- don&#8217;t lead with the vent, lead with the pattern, the impact, and what would actually help.</p><p>The more you can express tech debt as &#8220;this will speed us up on related work&#8221; or &#8220;this will stop these bugs that are clearly hurting our velocity,&#8221; the better your odds. &#8220;The code is a mess&#8221; is a feeling. &#8220;This is costing us two bugs a sprint and doubling the time on the next three features in this area&#8221; is a business case.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Manager&#8217;s Side of the Table</strong></h2><p>I want to address the manager dynamic too, because the original poster felt their manager was the obstacle. From where I sit, an engineering manager carries real responsibility <em>not</em> to turn the business&#8217;s delivery pressure into a crippling weight on the team. A good manager absorbs a lot of that and provides some shelter -- not by hiding it entirely (the team should understand the context), but by refusing to amplify it. Amplifying pressure isn&#8217;t productive and it isn&#8217;t helpful.</p><p>That shielding role is exactly what I dug into in <strong><a href="https://www.devleader.ca/2026/06/08/the-management-trap-in-software-engineering-dev-leader-weekly-143?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">The Management Trap in Software Engineering</a></strong> -- a lot of management is absorbing chaos so your team can stay focused. But there&#8217;s a real risk in being the person who soaks up everything, which I broke down in <strong><a href="https://www.devleader.ca/2025/05/31/the-hidden-cost-of-being-the-team-hero-dev-leader-weekly-96?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">The Hidden Cost of Being the Team Hero</a></strong>. The point for <em>you</em> as the engineer: your manager is very likely getting this pressure from above, and your job in that conversation is to make it easy for them to advocate for the cleanup to <em>their</em> stakeholders. Hand them the business case, not the complaint.</p><h2><strong>The Hard Truth: Some of It Will Never Get Done</strong></h2><p>I&#8217;ll close with the uncomfortable part, because pretending otherwise doesn&#8217;t help anyone. My entire job is prioritizing things, and at the end of the day you have to accept that some things simply will not get done. There is an infinite amount of work -- I have business-critical features to ship for my teams before you even get to tech debt or bug fixes -- and it is quite literally impossible to do all of it.</p><p>That means some of the stuff you talked about, planned, and said &#8220;oh, we&#8217;ll get to it&#8221; about may genuinely never happen. And honestly? That can be completely fine in the end. The skill isn&#8217;t getting everything done; it&#8217;s relentlessly ordering things by value and working through them, accepting that the bottom of the list might never come up. If that constant triage is wearing you down, you&#8217;re not alone -- I wrote about that exact feeling in <strong><a href="https://www.devleader.ca/2026/06/01/adhd-burnout-and-building-a-career-that-fits-your-wiring-dev-leader-weekly-142?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">ADHD, Burnout, and Building a Career That Fits Your Wiring</a></strong>.</p><p>So find the opportunities to bring tech debt up, and organize them from the perspective of the person doing the prioritization. What will make it clear to <em>them</em> why it&#8217;s valuable? That means framing it around value to them -- not value to you. It&#8217;s a frustrating thing to navigate, but reframing your perspective makes it a whole lot easier.</p><p>If you&#8217;ve got a specific situation you&#8217;re wrestling with, you can submit it anonymously over at <strong><a href="https://codecommute.com/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-144">codecommute.com</a></strong> and I&#8217;ll try to make a video response.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/how-to-get-tech-debt-prioritized?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jSSZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jSSZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!jSSZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!jSSZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58052154-392f-4a30-8fd1-ca14142b2a35_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[The Management Trap in Software Engineering]]></title><description><![CDATA[Dev Leader Weekly 143]]></description><link>https://weekly.devleader.ca/p/the-management-trap-in-software-engineering</link><guid isPermaLink="false">https://weekly.devleader.ca/p/the-management-trap-in-software-engineering</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 08 Jun 2026 04:26:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Nl6T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp" 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://www.devleader.ca/2026/06/08/the-management-trap-in-software-engineering-dev-leader-weekly-143" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nl6T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nl6T!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:92742,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/06/08/the-management-trap-in-software-engineering-dev-leader-weekly-143&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/201094027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nl6T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!Nl6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96aa931f-edc4-4efc-ada4-277aadbf8874_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Management is a different job, not a promotion</p></li><li><p>Not all context switching drains you equally</p></li><li><p>Absorb your team&#8217;s chaos -- but keep it temporary</p></li><li><p><strong><a href="https://youtube.com/live/5KxvV0MsdYY?feature=share">Join me for the live stream (or watch the recording) on Monday, June 8 at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-5KxvV0MsdYY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5KxvV0MsdYY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5KxvV0MsdYY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li></ul><div><hr></div><h2><strong>The Management Trap in Software Engineering</strong></h2><p>This week&#8217;s topic comes from a post on the ExperiencedDevs subreddit titled &#8220;the management trap.&#8221; An engineering manager was reflecting on their career progression and how they&#8217;d arrived at a particular realization: they&#8217;re missing a lot of the joy -- that deep, hyperfocused, heads-down work they used to get as an individual contributor. As someone who has been a frontline engineering manager for over thirteen years, this one hit close to home, and I want to walk through my honest take on it.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=rPx83FVUerI">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-rPx83FVUerI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rPx83FVUerI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rPx83FVUerI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Where This One Is Coming From</strong></h2><p>I want to set the stage a bit, because context matters here. This isn&#8217;t a tiny startup with ten people on a single team -- it sounds like this person is in a larger organization. A lot of what they describe about how their time gets spent is the side effect of scale: cross-team coordination, headcount planning, all of that. <strong>That stuff exists in small companies too, but the amount of time, effort, and focus it demands varies dramatically based on the size and the stage of the company.</strong></p><p>The other detail that stood out to me is that this person is a frontline manager. They mentioned that a senior manager promotion has been talked about but never quite materializes. That resonates with me, because I&#8217;ve been a frontline manager for about thirteen and a half years now. Before Microsoft, I was at a smaller company where a director role was on the table -- but that was five and a half years ago. So when someone says they&#8217;ve been sitting in the frontline manager seat for a long stretch, watching the &#8220;next step&#8221; stay perpetually one conversation away, I get it.</p><p>And here&#8217;s the honest tension in their post: it&#8217;s not that they hate management. They explicitly said they get genuine enjoyment out of helping people with career progression, promotions, and growth. That part lights them up. But when they zoom out and look at their day-to-day, it feels chaotic -- scattered, sporadic, a lot of context switching -- and they miss the ability to just sink into one hard problem and feel like they&#8217;re making real progress on it.</p><h2><strong>Management Is a Different Job -- Not a Better or Worse One</strong></h2><p>If there&#8217;s one thing I want you to take from this issue, it&#8217;s this: <strong>a management role is not the same as an IC role, and that difference does not make it better or worse. It&#8217;s just different.</strong></p><p>That sounds obvious written down, but I don&#8217;t think it actually lands for most people until they&#8217;ve lived both sides. Engineering management is its own discipline within software engineering -- the same way a product manager or a project manager is something distinct within software engineering. It&#8217;s not &#8220;senior engineer, but with more authority.&#8221; The work itself changes shape.</p><p>A lot of people hit a point in their career where the promotion that&#8217;s offered to them is a management position. And that can be fantastic -- you might love it, it might fit you perfectly. But I&#8217;d urge you to understand what managers should actually be spending their time and focus on before you assume it&#8217;s just the natural next rung on the ladder. I went deep on this in <strong><a href="https://www.devleader.ca/2024/11/09/i-wish-i-knew-these-before-becoming-a-manager-dev-leader-weekly-69?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">I Wish I Knew THESE Before Becoming A Manager</a></strong>, and a lot of it comes down to expectations nobody sets for you up front.</p><h2><strong>Not All Context Switching Costs the Same</strong></h2><p>Here&#8217;s a nuance I don&#8217;t think gets talked about enough. The Reddit thread frames the chaos as the problem -- too much context switching, not enough hyperfocus. And I get that. But when I reflect on my own experience, <strong>it&#8217;s not the context switching itself that wrecks me. It&#8217;s context switching into work that doesn&#8217;t engage me.</strong></p><p>Let me give you a concrete contrast. When I&#8217;m working on security-related problems, there&#8217;s often a ton of context switching, and it can get genuinely chaotic. But I don&#8217;t walk away from it feeling burnt out, because that work excites me. Jumping in to help one of my engineers work through a gnarly technical challenge? That can be energizing, even though it&#8217;s an interruption. On the flip side, sitting down with focused, prepared time to work through interpersonal challenges or career progression with someone -- that feels good. But being rapidly context-switched into that <em>same</em> kind of work, with no runway, is incredibly taxing for me.</p><p>So it&#8217;s often not even the nature of the task that determines the cost. It&#8217;s how much context and preparation I have going into it. I talked about a closely related version of this in last week&#8217;s issue on <strong><a href="https://www.devleader.ca/2026/06/01/adhd-burnout-and-building-a-career-that-fits-your-wiring-dev-leader-weekly-142?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">ADHD, burnout, and building a career that fits your wiring</a></strong>, and the mechanics of why switching is so expensive in the first place in <strong><a href="https://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">The Context Switching Problem Every Dev Faces</a></strong>.</p><p><em><strong>Actionable Tip</strong></em> -- If you feel perpetually drained by your week, don&#8217;t just count your context switches. Audit <em>what</em> you&#8217;re switching into:</p><ul><li><p>Which interruptions leave you energized, and which leave you hollow?</p></li><li><p>How much of the draining stuff is draining because of the task itself vs because you had zero preparation for it?</p></li><li><p>Can you batch the low-context, high-cost work into a window where you&#8217;re actually braced for it, instead of letting it ambush your focus blocks?</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Part of Management I Actually Believe In</strong></h2><p>This is the piece of the conversation I have the most conviction about. <strong>I genuinely believe that to be effective as an engineering manager, my job is to enable my team to do their best possible work.</strong></p><p>In the short-to-medium term, that often means I have to be the one who gets randomized so that they don&#8217;t. When chaos comes in -- an urgent org-wide ask, an incident, a security fire -- I&#8217;d rather absorb the initial hit myself than yank three engineers out of their flow. I sometimes describe this as shielding or sheltering the team, and I want to be clear about what I mean: not hiding things from them, but removing distractions so they can stay locked on the work that actually moves us forward.</p><p>But absorbing chaos is only a good strategy if it&#8217;s <em>accruing</em> to something. Here&#8217;s my litmus test: from a pure operations standpoint, I feel successful in my role if I could walk away and my team could keep running entirely on their own. That sounds almost paradoxical -- like I&#8217;m saying my goal is to not be needed. From a career-growth standpoint that&#8217;s obviously not the whole picture, because I&#8217;m here to help every one of them grow. But operationally, the target is a team that doesn&#8217;t depend on me to function. I dug into this idea of self-sufficient, autonomous teams in <strong><a href="https://www.devleader.ca/2024/12/28/effective-software-teams-islands-and-autonomy-dev-leader-weekly-76?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">Effective Software Teams: Islands and Autonomy</a></strong>.</p><p>The real trap -- and in my opinion this is the actual trap, more than the &#8220;I miss being an IC&#8221; framing -- is when the chaos I&#8217;m absorbing <em>isn&#8217;t</em> moving us toward that self-sufficiency. If I&#8217;m just perpetually soaking up randomization with no end state where the team gets more autonomous, that&#8217;s not sustainable. It&#8217;s supposed to be temporary. Take the chaos, let the team build the processes, services, and tools that make us stronger, and then we don&#8217;t need me in that spot anymore -- and we move on to the next frontier together. The flip side of this is a real risk worth naming: if you become the <em>only</em> person who ever absorbs the chaos, you&#8217;ve built a fragile system around your own bandwidth, which is exactly the failure mode I broke down in <strong><a href="https://www.devleader.ca/2025/05/31/the-hidden-cost-of-being-the-team-hero-dev-leader-weekly-96?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">The Hidden Cost of Being the Team Hero</a></strong>.</p><h2><strong>Fan-Out Work Is the Most Unscalable Thing I&#8217;ve Seen</strong></h2><p>Let me give you the specific pattern that&#8217;s been on my mind, because it&#8217;s the clearest example of chaos that <em>doesn&#8217;t</em> accrue to anything good. I&#8217;ve been trying to make more noise about it lately: <strong>fan-out work.</strong></p><p>We&#8217;re a platform team in a large organization. Because the surface area is enormous, what happens constantly is that some team owns a thing, a change lands, and the message goes out: &#8220;everyone needs to go make this change.&#8221; The work fans out to dozens of teams. And it&#8217;s not one team doing this -- it&#8217;s <em>multiple</em> teams all fanning work out to each other simultaneously.</p><p>In my opinion, this is one of the most inefficient, productivity-destroying patterns you can possibly have. And I want to be careful here -- I&#8217;m not saying the work isn&#8217;t important. I&#8217;m not saying we shouldn&#8217;t help. I&#8217;m saying it is, by a wide margin, the most disruptive kind of work I&#8217;ve encountered in my software engineering career. The randomization it injects across an entire org is brutal.</p><p>This is where being a manager means more than just personally absorbing hits. If I notice that fan-out work is a recurring theme, I owe it to my team to push back to the broader organization and say, &#8220;something has to change here.&#8221; That doesn&#8217;t mean I&#8217;ll have the solution in hand. But if I&#8217;m going to make noise about a problem, I need to volunteer to be part of building the fix -- not just complain about it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Systematize the Interruptions Instead of Just Absorbing Them</strong></h2><p>There&#8217;s an older example I come back to a lot. Back in my startup days, the CTO and founder would come by and say, &#8220;this is urgent, we have to do it now.&#8221; Especially in the early days, we&#8217;d drop everything and get completely randomized. I&#8217;d try to step in and shelter the team from it, but over time we landed on something better -- a kind of unwritten contract.</p><p>When we got approached that way, the new default became: <strong>we don&#8217;t just drop everything. We talk about it.</strong> We&#8217;d explain what we were currently working on, give visibility into the tradeoff, and then if the answer was still &#8220;yes, I genuinely think you should drop that other thing,&#8221; at least it was a <em>conscious</em> decision made with full context -- not a reflex.</p><p>That shift, from reflexive interruption to a deliberate, systematized filter, was hugely important. The team was almost always working on things that made us more effective in the long run, so being able to push back and force the interruption to justify itself protected the work that mattered.</p><p><em><strong>Actionable Tip</strong></em> -- If your team is constantly randomized by &#8220;urgent&#8221; asks, build a lightweight filter instead of absorbing each one in the moment:</p><ul><li><p>Make the current priorities visible, so any new ask has to be weighed against something concrete.</p></li><li><p>Push the interruption to be an explicit decision: &#8220;we can do that, but it displaces X -- is that the call you want to make?&#8221;</p></li><li><p>Capture recurring interruption <em>types</em> (like fan-out work) and treat the pattern itself as a problem to solve, not just each instance.</p></li></ul><h2><strong>Firefighting vs Getting Ahead of the Fire</strong></h2><p>The other balance I&#8217;m constantly trying to strike: how much energy goes into firefighting for the team, versus getting ahead of the fires so they don&#8217;t start? When I&#8217;m spending all my time absorbing the chaos of the moment, I have nothing left to invest in preventing the <em>next</em> wave of it. And the fires my team isn&#8217;t directly working to put out -- those are exactly the ones I need to find capacity to address myself.</p><p>I&#8217;ll be honest about a compounding factor here, too. When I&#8217;m running multiple teams and I don&#8217;t feel like I have enough capacity on each one, that&#8217;s a huge contributor to exactly the scattered, randomized feeling the Reddit poster described. Fewer people to rely on means I have to context-switch even more. I have genuinely amazing people on my teams -- just fewer of them than I&#8217;d want to sustain everything without me jumping into the gaps. That&#8217;s nobody&#8217;s fault. It&#8217;s mostly the side effect of organizational growth, and it&#8217;s something I covered from the IC angle in <strong><a href="https://www.devleader.ca/2025/11/01/more-experience-more-overwhelmed-dev-leader-weekly-114?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">More Experience, More Overwhelmed</a></strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>If Management Is the Promotion In Front of You</strong></h2><p>So let me bring this back to where the Reddit poster started. They framed it as a trap for managers -- losing the ability to hyperfocus the way they could as an IC. And honestly? I do miss some of that. But I&#8217;ve also found that I get a lot of that deep-focus satisfaction <em>outside</em> of work, and I genuinely enjoy it there.</p><p>The answer is going to be different for everyone, and that&#8217;s exactly the point. As you move up, the hands-on, heads-down portion of the job tends to shrink -- I talked about that reality in <strong><a href="https://www.devleader.ca/2025/12/06/senior-engineers-spend-less-time-coding-dev-leader-weekly-118?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">Senior Engineers Spend Less Time Coding</a></strong>. Management accelerates that shift even further. So if a management promotion is the thing being offered to you, don&#8217;t take it just because it&#8217;s labeled &#8220;the next level.&#8221; Understand that you&#8217;re signing up for a fundamentally different job -- one with friction coming at you from multiple directions, where success looks less like &#8220;I shipped this&#8221; and more like &#8220;my team shipped this without needing me.&#8221;</p><p>If that trade excites you, management can be incredibly rewarding. If the thing you love most is the deep technical flow, go in with your eyes open that you&#8217;re trading away a lot of it -- and know that there may be other ways to grow that keep you closer to it.</p><h2><strong>Final Thought</strong></h2><p>I&#8217;ll admit this one is a bit all over the place, because the topic genuinely is. The &#8220;management trap&#8221; isn&#8217;t really a trap in the sense of a mistake you fall into. It&#8217;s just the reality that management is a different role, with different rewards and different costs, and a lot of people step into it without anyone being honest with them about that tradeoff.</p><p>If you&#8217;re weighing this in your own career -- or you&#8217;re already in the seat and feeling the scatter -- I hope this gave you a more useful frame than &#8220;management good&#8221; or &#8220;management bad.&#8221;</p><p>And if you&#8217;ve got a specific situation you&#8217;re navigating, you can submit it anonymously over at <strong><a href="https://codecommute.com/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-143">codecommute.com</a>,</strong> and I&#8217;ll try to make a video response.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/the-management-trap-in-software-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/the-management-trap-in-software-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/the-management-trap-in-software-engineering/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/the-management-trap-in-software-engineering/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6xse!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!6xse!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!6xse!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!6xse!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6xse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!6xse!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!6xse!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!6xse!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!6xse!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc04a715b-c87b-4323-b2da-b7e524e11f63_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Building a Career That Fits Your Wiring]]></title><description><![CDATA[Dev Leader Weekly 142]]></description><link>https://weekly.devleader.ca/p/building-a-career-that-fits-your</link><guid isPermaLink="false">https://weekly.devleader.ca/p/building-a-career-that-fits-your</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 01 Jun 2026 15:51:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bSmk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg" 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://www.devleader.ca/2026/06/01/adhd-burnout-and-building-a-career-that-fits-your-wiring-dev-leader-weekly-142" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bSmk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bSmk!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:204483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/06/01/adhd-burnout-and-building-a-career-that-fits-your-wiring-dev-leader-weekly-142&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/200140649?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bSmk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bSmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde648b27-6968-4c28-b4d7-8bd425734de8_1536x1024.jpeg 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>The list is infinite -- accept it and prioritize accordingly</p></li><li><p>Lean into the work that actually energizes how you&#8217;re wired</p></li><li><p>Pick the easiest task to break paralysis when overwhelmed</p></li><li><p><strong><a href="https://youtube.com/live/CebjuAipA78?feature=share">Join me for the live stream (or watch the recording) on Monday, June 1 at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-CebjuAipA78" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;CebjuAipA78&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/CebjuAipA78?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li></ul><div><hr></div><h2><strong>ADHD, Burnout, and Building a Career That Fits Your Wiring</strong></h2><p>This week&#8217;s Reddit thread is from the ExperiencedDevs subreddit, and it asks a question that I think a lot of people quietly wonder about: <strong>if you have ADHD, anxiety, depression, or some combination of those things, do you feel &#8220;nerfed&#8221; compared to your colleagues?</strong></p><p>I want to be careful with this one. I&#8217;m not lumping these together because I think they&#8217;re correlated. They&#8217;re not. They&#8217;re distinct things that show up very differently in different people. But the question is real, and I have my own answer for parts of it, so I want to walk through what I&#8217;ve actually learned -- specifically as it applies to engineering work -- rather than offer abstract reflections.</p><p>I&#8217;m also going to be upfront: I&#8217;ve been diagnosed with ADHD. I&#8217;ve gone through periods of depression at earlier points in my career. I don&#8217;t have an anxiety diagnosis. I&#8217;m not a doctor, I&#8217;m not telling you what to do, and the words I use here come from my lived experience as an engineer and engineering manager. Take what&#8217;s useful and leave the rest.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=Hx2B3FpGUl8">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-Hx2B3FpGUl8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Hx2B3FpGUl8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Hx2B3FpGUl8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Where This Is Coming From</strong></h2><p>When I made my video response to this Reddit thread, I just wrapped a two-week on-call rotation. On paper, my on-call shift is only six hours a day, Sundays off. In practice, between the team I manage and some adjacent security work that doesn&#8217;t really respect rotation boundaries, I ended up putting in 12-hour days for stretches of it. I&#8217;d wake up at 5:30 AM, dismiss the notifications on my phone, realize a few of them were actual things I needed to deal with, and effectively start work right there in bed. By the time my actual on-call shift kicked in at noon, I&#8217;d already been at it for hours.</p><p>By the time it ended, I was cooked. Sunday night I&#8217;m sitting at my desk -- the time I&#8217;m supposed to be working on the things I genuinely enjoy -- and I&#8217;m just holding my head in my hands. Nothing left. My wife walks in and asks what&#8217;s going on, because she can see it.</p><p>That conversation is what kicked off the reflection that this article is built on. So fair warning: a lot of this is from the freshly-burnt-out version of me. But honestly, that version of me probably has more useful things to say about this than the rested version.</p><h2><strong>The Infinite List Problem</strong></h2><p>Here&#8217;s the thing I keep crashing into: <strong>my life is lists.</strong> Whether it&#8217;s a whiteboard, a notes app, a backlog, or just in my head, that&#8217;s how I keep track of what needs to happen. And the lists never stop growing.</p><p>For most engineers, this is just reality. There&#8217;s no shortage of work. AI hasn&#8217;t shrunk the list -- it has expanded what&#8217;s possible to ship, which means more things go on the list, not fewer. The total work to do is effectively indefinite. I&#8217;ve made this point in the broader context before, in the <strong><a href="https://www.devleader.ca/2025/11/01/more-experience-more-overwhelmed-dev-leader-weekly-114?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">More Experience, More Overwhelmed</a></strong> issue. The more senior you get, the more the list grows and the less of it you can personally close out.</p><p>This becomes a specific kind of problem if you&#8217;re wired the way I am. <strong>My natural posture is &#8220;get through the list.&#8221;</strong> And when the list is mathematically impossible to ever finish, you&#8217;re essentially walking around in a perpetual low-grade state of failure. My wife actually surfaced this one and it landed hard: she said the reason I struggle with this is that I take a lot of pride in my work. So an infinite, never-empty list becomes a constant admission that something is incomplete. It&#8217;s a treadmill that doesn&#8217;t stop.</p><p>I don&#8217;t know if there&#8217;s a clean fix for that. I haven&#8217;t found one. But what I have found are tactics that take the edge off.</p><p><em><strong>Actionable Tip</strong></em> -- A few things that have actually helped me operate inside the infinite-list reality:</p><ul><li><p><strong>Stop measuring success as &#8220;list empty.&#8221;</strong> Measure it as &#8220;right things done this week.&#8221; The shift is from completion to prioritization.</p></li><li><p><strong>Have a visible &#8220;top 3 today&#8221; outside the master list.</strong> When the master list is overwhelming, working only off the top-3 view for the next few hours is sometimes the only way to start.</p></li><li><p><strong>Pick the smallest task on the list when paralyzed.</strong> Yes, it&#8217;s the wrong task by priority. But the worst outcome when you&#8217;re frozen is doing nothing, and three small wins in 30 minutes often build the momentum to take on the big one.</p></li><li><p><strong>Audit the list itself periodically.</strong> Things on the list for 90+ days that you&#8217;ve never started are probably never going to get started. They&#8217;re noise. Move them to a &#8220;maybe-later&#8221; file and stop letting them haunt the active backlog.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Paralysis Trap</strong></h2><p>The thing nobody warned me about with an overflowing list is that the most intuitive response -- &#8220;I have so much to do, I better get moving&#8221; -- is actually the opposite of what often happens. <strong>The brain can flip in the other direction and just freeze.</strong> You sit there, totally aware of how much there is, completely unable to start any one specific thing.</p><p>This is the part that feels backwards. If you have ten things you need to do today, doing zero of them should be the absolute worst outcome. And yet, when the overwhelm hits, zero is exactly where you can end up.</p><p>My only reliable counter to this is going small. Not &#8220;the most important thing.&#8221; Not &#8220;the highest-leverage thing.&#8221; <strong>The easiest, fastest, get-it-off-the-list thing.</strong> Even if it&#8217;s tiny. Even if it doesn&#8217;t matter much. Once one item is checked off, the next one feels possible. Once a few are done, sometimes the big one suddenly stops feeling like a wall.</p><p>This is related to the broader context-switching pain I talked about in <strong><a href="https://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">The Context Switching Problem Every Dev Faces</a></strong>. The same thing that makes context switching expensive for everyone is what makes the &#8220;start small to build momentum&#8221; trick work for me -- once my brain is engaged on <em>something</em>, the cost of starting the next thing drops.</p><h2><strong>The Chaos-Is-A-Superpower Thing</strong></h2><p>Reading through the Reddit thread, the comment pattern I found most interesting was people with ADHD saying, basically, <strong>&#8220;put me in the firefighting role. Don&#8217;t put me in the planning meetings. I want the chaos because chaos engages me.&#8221;</strong> And then a wave of replies going &#8220;this is me, this is exactly me.&#8221;</p><p>I read that and went, really? But the more I thought about it, the more it tracks for me too. Security incidents and on-call escalations are exhausting, but they&#8217;re not boring. There&#8217;s urgency, something concrete to chase, a problem with a real shape. I find that engaging in a way that long quiet planning blocks aren&#8217;t. That&#8217;s not a moral statement. It&#8217;s just how my brain reacts.</p><p>The actionable version of this is: <strong>pay attention to which kinds of engineering work actually energize you vs drain you, and don&#8217;t assume the conventional wisdom about &#8220;good work&#8221; matches your wiring.</strong> Some examples of pairs I&#8217;ve noticed for myself and people I&#8217;ve managed:</p><ul><li><p>Deep architectural design vs. incident response -- both legitimate engineering. Some people light up at one, some at the other.</p></li><li><p>Greenfield builds vs. complex production debugging -- some engineers go after these very differently.</p></li><li><p>Long planning meetings vs. short focused syncs -- same content, different cognitive cost.</p></li><li><p>Solo deep work vs. mob/pair programming -- some people get energized by one and depleted by the other.</p></li></ul><p>None of those are wrong. None of them mean you&#8217;re a worse engineer if one drains you. But if you ignore the pattern and structure your week around the work that depletes you, you&#8217;re going to burn out faster -- and you&#8217;re going to do it while assuming the burnout is your fault, when really it&#8217;s just a workload mismatched to your wiring.</p><h2><strong>Don&#8217;t Confuse Burnout With &#8220;Just Tired&#8221;</strong></h2><p>One of the things I had to learn the hard way is that <strong>burnout doesn&#8217;t always feel like sadness.</strong> Earlier in my career, before I really had vocabulary for any of this, I thought depression looked like obvious sadness. It doesn&#8217;t always. Sometimes it&#8217;s just emptiness, or paralysis, or the feeling of having nothing left to give to the things you normally love.</p><p>Right now I&#8217;m not depressed, but I&#8217;d be lying if I said I&#8217;m not carrying some of the same flavor of that from the on-call burnout. The signal I look for: <strong>am I sitting down to do the work I genuinely enjoy and still feeling like I can&#8217;t engage with it?</strong> When the answer is yes for more than a couple of days, that&#8217;s not &#8220;I&#8217;m tired.&#8221; That&#8217;s something I have to actually address with rest, not push through.</p><p>This is where the <strong><a href="https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">Should You Talk To Your Manager About Burnout?</a></strong> issue becomes relevant. The short version of my answer there is: yes, but with framing. Don&#8217;t go in with vague &#8220;I&#8217;m tired.&#8221; Go in with &#8220;here&#8217;s the pattern I&#8217;m seeing, here&#8217;s the impact, here&#8217;s what I think might help.&#8221; That conversation goes very differently from the vent.</p><p>The same point applies for promotion timing, by the way. I covered that in <strong><a href="https://www.devleader.ca/2025/10/11/promotions-without-burnout-dev-leader-weekly-112?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">Promotions Without Burnout</a></strong> -- the pattern of grinding yourself into the ground to <em>earn</em> a promotion and then arriving at the new level with no fuel left is one of the most common career failure modes I see. If your wiring is already prone to overwhelm, that path is even more dangerous.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Randomization-Absorption Move (Manager Perspective)</strong></h2><p>This one is specific to engineering managers, and I think it&#8217;s the part of this conversation I have the most conviction about.</p><p>I want my team focused. I want them not getting randomized constantly. I want them clear on priorities so they can make their own decisions without me being in the middle of every call. That&#8217;s just good engineering management, and I talk to my team about minimizing context switching for them all the time.</p><p>But here&#8217;s the part that took me a while to admit: <strong>for me to protect them from randomization, somebody has to absorb it. And often, that somebody is me.</strong> When a security incident hits during their focus time, I&#8217;d rather take the initial triage hit myself than yank three engineers off what they were doing. When a request comes in from another team that&#8217;s going to derail an afternoon, I&#8217;d rather have the meeting myself than route it to someone who&#8217;s mid-flow.</p><p>This isn&#8217;t scalable forever, and it&#8217;s not the only tactic. But when push comes to shove, <strong>if my job is to protect their focus, then absorbing some of the chaos is part of that job.</strong> Which means I have to be honest with myself about my own energy budget -- the same things I tell my engineers about not running themselves into the ground apply to me too.</p><p>The related caution here, and this one is for both ICs and managers, is the <strong><a href="https://www.devleader.ca/2025/05/31/the-hidden-cost-of-being-the-team-hero-dev-leader-weekly-96?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">Hidden Cost of Being the Team Hero</a></strong>. Volunteering to absorb chaos is a service to the team -- but if you become the only one who absorbs it, you&#8217;re building a fragile system around your own bandwidth. That&#8217;s a separate problem worth being honest about. By absorbing the chaos, you&#8217;re ideally creating more opportunity for the rest of the team to move past situations where you need to be absorbing that kind of chaos -- that&#8217;s how you scale out of it.</p><h2><strong>So Are You Nerfed?</strong></h2><p>Back to the original Reddit question.</p><p>My honest answer: <strong>not nerfed, but mismatched in certain contexts.</strong> Engineering work is wildly varied. Some of it lines up with how my brain operates and some of it actively fights against it. The job is not to fix my brain to match the work. The job is to understand the wiring, lean into the work that energizes it, build coping mechanisms for the work that doesn&#8217;t, and -- as a manager -- design roles where the people I work with get to do more of the former and less of the latter.</p><p><em><strong>Actionable Tip</strong></em> -- A short reflection exercise. Spend 10 minutes thinking through this:</p><ul><li><p>Which two or three types of engineering work in the last 30 days made me lose track of time?</p></li><li><p>Which two or three left me drained even though they were short?</p></li><li><p>Is my current week structured more like the first list or the second?</p></li><li><p>If it&#8217;s the second, what&#8217;s one thing I could shift this week to get closer to the first?</p></li></ul><p>You won&#8217;t be able to fully optimize this -- the job has what it has. But even a 20% shift toward work that fits your wiring tends to compound over months.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Final Thought</strong></h2><p>I don&#8217;t have a clean wrap-up for this one. I&#8217;m sharing because the Reddit thread was honest and I think it deserves honest engagement back. If you&#8217;re someone in this space -- whether that&#8217;s ADHD, anxiety, depression, or just chronic burnout that you haven&#8217;t named yet -- I&#8217;d rather you know that the patterns I&#8217;ve described are real, you&#8217;re not making them up, and there are tactics that help. They&#8217;re not magic. They take attention. But they might help you out in your situation.</p><p>And if you want to send me a more specific scenario you&#8217;re navigating, you can submit anonymously over at <strong><a href="https://codecommute.com/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-142">codecommute.com</a></strong> and I&#8217;ll try to make a video response. I find these conversations a lot more useful than the abstract &#8220;advice for software engineers&#8221; stuff -- so the more specific, the better.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/building-a-career-that-fits-your?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/building-a-career-that-fits-your?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/building-a-career-that-fits-your/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/building-a-career-that-fits-your/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3kND!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!3kND!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!3kND!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!3kND!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3kND!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!3kND!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!3kND!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!3kND!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!3kND!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa94feada-f85a-40c7-9e66-be8d335bacaa_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Why Your Ideas Keep Getting Shut Down]]></title><description><![CDATA[Dev Leader Weekly 141]]></description><link>https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut</link><guid isPermaLink="false">https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 25 May 2026 16:27:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8-6R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp" 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://www.devleader.ca/2026/05/25/why-your-ideas-keep-getting-shut-down-dev-leader-weekly-141" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8-6R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8-6R!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:108270,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/05/25/why-your-ideas-keep-getting-shut-down-dev-leader-weekly-141&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/199207997?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8-6R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!8-6R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8eac00f-f5d7-4768-bed2-cc1d7946c449_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>When your ideas always get shut down, it&#8217;s rarely the ideas</p></li><li><p>How you pitch them is the lever you actually control</p></li><li><p>Genuine curiosity beats trying to win the argument</p></li><li><p><strong><a href="https://youtube.com/live/3CJJ-7CyTts?feature=share">Join me for the live stream (or watch the recording) on Monday, May 25 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-3CJJ-7CyTts" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;3CJJ-7CyTts&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/3CJJ-7CyTts?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>Why Your Ideas Keep Getting Shut Down</strong></h2><p>Another week, another ExperiencedDevs Reddit post that hit me a little harder than most. This time it was from someone who&#8217;s just exhausted from speaking up. They keep proposing ideas, the team keeps ignoring them, and they&#8217;ve reached the &#8220;why am I even bothering&#8221; stage. You can feel the defeat coming through the screen. That&#8217;s a pretty rough place to be in your job -- and it&#8217;s the kind of thing I think about a lot from the manager side too, because I genuinely need the people on my teams to feel like they can speak up.</p><p>But after digging through their post and the comments, I think most of the advice flying around misses the real lever. So let me walk through how I&#8217;d actually approach this if it were happening to me.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=PZt_shhTuUo">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-PZt_shhTuUo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PZt_shhTuUo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PZt_shhTuUo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>The Reddit Post That Got Me Thinking</strong></h2><p>The post itself doesn&#8217;t give a ton of context. The poster says they&#8217;re experienced on the team but not the tech lead, and they keep getting shut down when they propose ideas -- particularly around scoping and design. They feel like people are over-engineering or building things that don&#8217;t need to exist. The main concrete example they gave: their team wants to support multiple file formats when, in their view, the system only needs CSV.</p><p>That&#8217;s basically all we get. So I&#8217;m going to do what I usually have to do with these threads -- <strong>make some assumptions, walk through the most likely scenarios, and try to be useful even with incomplete information</strong>. If you&#8217;ve been here before, this is similar to how I worked through <strong><a href="https://www.devleader.ca/2026/05/17/when-reddit-says-quit-your-manager-dev-leader-weekly-140?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-141">the post from someone telling their manager they were burnt out -- there&#8217;s only ever one side of the story</a></strong>, and you have to read between the lines a bit.</p><h2><strong>It&#8217;s Probably Not Your Ideas</strong></h2><p>Here&#8217;s the assumption I&#8217;m going to start with: <strong>statistically, this person doesn&#8217;t always have bad ideas</strong>. Nobody has only bad ideas. Some are going to be good, some are going to be okay, some are going to be off-base. That&#8217;s true for me, that&#8217;s true for you, and that&#8217;s true for the Reddit poster.</p><p>So if their ideas are being <strong>consistently</strong> rejected -- not occasionally, not in specific scenarios, but constantly -- the most likely explanation isn&#8217;t that the ideas themselves are uniformly bad. It&#8217;s much more likely that <strong>the way the ideas are being pitched is the problem</strong>.</p><p>I&#8217;ll use the file format example to walk through this. Imagine you&#8217;re in a design discussion and someone proposes supporting five file formats. You think it&#8217;s wasteful and unnecessary. You speak up:</p><blockquote><p>&#8220;We don&#8217;t need that. That&#8217;s a waste of time.&#8221;</p></blockquote><p>Now, you might be completely right. Maybe the team really doesn&#8217;t need it. But how does that land on the person who proposed it? They&#8217;ve now had their idea bluntly shut down with no engagement and no follow-up. They&#8217;re going to defend their position. The room is going to side with whoever feels more reasonable and can make a better case for their perspective. And <strong>you just lost a conversation you were trying to win</strong>.</p><p>I see this pattern a lot, and it shows up the worst in technical design debates where the answer genuinely isn&#8217;t clear-cut. I wrote about a perfect example of that recently in the <strong><a href="https://www.devleader.ca/2026/04/23/feature-slicing-vs-clean-architecture-in-c-which-one-should-you-use?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-141">Feature Slicing vs Clean Architecture comparison</a></strong> -- both are defensible, both have tradeoffs, and the &#8220;right&#8221; answer is contextual. If you come into that kind of debate with your mind already made up, you&#8217;re going to get rolled by whoever is willing to actually engage with the tradeoffs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Try Genuine Curiosity Instead</strong></h2><p>The single biggest change I&#8217;d suggest if you keep getting shut down: <strong>lead with genuine curiosity, not your conclusion</strong>.</p><p>Same file format scenario. Someone proposes five formats. Instead of &#8220;we don&#8217;t need that,&#8221; try:</p><blockquote><p>&#8220;Interesting -- what&#8217;s driving the need for the extra formats? Is this coming from customer requests, or is it more anticipatory?&#8221;</p></blockquote><p>What does that buy you? <strong>Information you didn&#8217;t have before.</strong> Maybe they had a conversation with the product owner that you weren&#8217;t in. Maybe they&#8217;ve seen customer support tickets you haven&#8217;t seen. Maybe they&#8217;re just optimizing for &#8220;we&#8217;ll need flexibility later&#8221; with no real data behind it. You don&#8217;t know until you ask.</p><p><em><strong>Actionable Tip</strong></em> -- A genuinely curious question has a few properties:</p><ul><li><p><strong>It assumes the other person has a reason</strong> that makes sense from their seat</p></li><li><p><strong>It is asked before you&#8217;ve reached a verdict</strong>, not after</p></li><li><p><strong>It is phrased as a question, not a leading statement</strong> (&#8221;Why do we need this?&#8221; is leading. &#8220;What&#8217;s driving the need?&#8221; is curious.)</p></li><li><p><strong>You actually listen to the answer</strong> and let it change your position if the new information warrants it</p></li></ul><p>And this last point is the one most people skip. If you ask a curious question, get new information, and <strong>still</strong> don&#8217;t even reconsider your position -- you weren&#8217;t being curious. You were performing curiosity to look open-minded before reasserting your original take. People can feel the difference.</p><h2><strong>The Goal Isn&#8217;t To Be Right</strong></h2><p>This sounds funny to say but, it&#8217;s the part that flips everything: <strong>the goal isn&#8217;t to win the argument</strong>. The goal is to deliver more value to your customers. Those are very different goals, and they pull you in very different directions.</p><p>If you&#8217;re optimizing to win the argument, you go in hard, shut things down, and protect your position. If you&#8217;re optimizing to deliver value, you go in curious, learn what the other side is actually optimizing for, and look for compromises.</p><p>In the file format example, that might look like:</p><blockquote><p>&#8220;Personally, I don&#8217;t think shipping five formats is worth the time right now -- but I hear that flexibility matters to you. What if we shipped with the main format, but we put a thin abstraction over the file I/O so adding a second format later is a small change instead of a rewrite?&#8221;</p></blockquote><p>Now you&#8217;re proposing <strong>a middle path</strong> that addresses both concerns. You&#8217;re optimizing for time. They&#8217;re optimizing for flexibility. The abstraction layer gives you both -- maybe. Now, my contrived solution might absolutely be the wrong move in some real scenarios. Sometimes the abstraction is more cost than the optionality is worth. The point isn&#8217;t that I cracked the technical answer in two paragraphs. The point is that <strong>the conversation is now productive instead of adversarial</strong>.</p><p>And from a team-dynamics perspective, this is the kind of behavior that builds trust over time. I wrote about this dynamic in the <strong><a href="https://www.devleader.ca/2024/12/28/effective-software-teams-islands-and-autonomy-dev-leader-weekly-76?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-141">Effective Software Teams: Islands and Autonomy</a></strong> issue -- teams that work well aren&#8217;t the ones where one person is always right. They&#8217;re the ones where people actually engage with each other&#8217;s ideas.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>When You Always Feel Unheard</strong></h2><p>If you keep walking out of meetings feeling like nobody listens to you, there are two scenarios I generally see:</p><ol><li><p><strong>Most of the time, you&#8217;re communicating in a way that&#8217;s getting in your own way.</strong> Your ideas might be great, but they&#8217;re landing as attacks, as shutdowns, or as &#8220;I&#8217;ve already decided and I&#8217;m now just informing you.&#8221; Fix the delivery and a lot of this changes.</p></li><li><p><strong>Sometimes, the team really isn&#8217;t a fit.</strong> You can have the cleanest communication style in the world and still be on a team where people genuinely don&#8217;t want to listen. I covered the version of this where it&#8217;s specifically your manager who won&#8217;t engage in <strong><a href="https://www.devleader.ca/2025/03/08/my-manager-refuses-to-give-feedback-dev-leader-weekly-86?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-141">the issue on managers who refuse to give feedback</a></strong> -- that one has a different solution path.</p></li></ol><p>The honest answer is that it&#8217;s almost always some mix of both. Some of it is on you, some of it is on the environment. <strong>The part you control is your delivery.</strong> Start there.</p><p><em><strong>Actionable Tip</strong></em> -- Before you bring something up next time, ask yourself:</p><ul><li><p><strong>Am I going in trying to be heard, or trying to be right?</strong> Those produce very different conversations.</p></li><li><p><strong>Have I actually asked the other side why they want what they want?</strong> Or am I just waiting for my turn to argue?</p></li><li><p><strong>If I&#8217;m wrong, am I prepared to actually update my view?</strong> If not, the curiosity isn&#8217;t real.</p></li><li><p><strong>Is there a middle path I haven&#8217;t proposed yet?</strong> Most &#8220;either/or&#8221; debates have a &#8220;both&#8221; answer hiding in them.</p></li></ul><h2><strong>Don&#8217;t Give Up On Speaking Up</strong></h2><p>The thing I really don&#8217;t want anyone to take away from a Reddit thread like this is &#8220;well, I guess I&#8217;ll just stop speaking up.&#8221; That&#8217;s the worst possible outcome. As a manager, the people who quietly disengage are the hardest to help -- I can&#8217;t address what I can&#8217;t see. And as a teammate, that voice going silent makes the whole team worse.</p><p>There&#8217;s also a flavor of this where the person who keeps speaking up ends up shouldering everything because nobody else volunteers. That has its own downstream cost, and I dug into it in <strong><a href="https://www.devleader.ca/2025/05/31/the-hidden-cost-of-being-the-team-hero-dev-leader-weekly-96?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-141">The Hidden Cost of Being the Team Hero</a></strong>. The fix isn&#8217;t &#8220;speak up less.&#8221; The fix is &#8220;speak up smarter, and don&#8217;t carry the team on your back while you do it.&#8221;</p><p>If you&#8217;re in this spot right now, please don&#8217;t give up on it. Try the curiosity angle for a few weeks. Try the middle-path framing. Pay attention to whether the conversations start landing differently. If they do, that&#8217;s your answer about what was actually going on. And if they don&#8217;t -- after you&#8217;ve genuinely changed your approach -- then yeah, you might be on a team that&#8217;s never going to hear you, and that&#8217;s a different conversation entirely.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/why-your-ideas-keep-getting-shut/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w8lp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w8lp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!w8lp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!w8lp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8514a194-9612-4a62-8465-82d557dd42f9_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[When Reddit Says Quit Your Manager]]></title><description><![CDATA[Dev Leader Weekly 140]]></description><link>https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager</link><guid isPermaLink="false">https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 17 May 2026 21:37:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PzHz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp" 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://www.devleader.ca/2026/05/17/when-reddit-says-quit-your-manager-dev-leader-weekly-140" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PzHz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PzHz!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:143996,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/05/17/when-reddit-says-quit-your-manager-dev-leader-weekly-140&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/198178406?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PzHz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!PzHz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0543fd3a-d7ba-4592-aad0-4b90f0c104a7_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Reddit&#8217;s &#8220;just quit your manager&#8221; advice misses the nuance</p></li><li><p>The real question is how much you actually care</p></li><li><p>Level-set expectations in your 1:1s or stay frustrated</p></li><li><p><strong><a href="https://youtube.com/live/dYb2stp-Nbg?feature=share">Join me for the live stream (or watch the recording) on Monday, May 18 at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-dYb2stp-Nbg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dYb2stp-Nbg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dYb2stp-Nbg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li></ul><div><hr></div><h2><strong>When Reddit Says Quit Your Manager</strong></h2><p>I came across a post over on the ExperiencedDevs subreddit where someone was venting about their manager. The usual stuff: incompetent, doesn&#8217;t really understand basic software things (the poster mentioned the manager doesn&#8217;t seem to know what Git is or what it&#8217;s used for), pulls people into endless pointless meetings where nothing gets decided, and ignores everything that comes up in 1:1s. The poster also mentioned this isn&#8217;t a one-off -- there are apparently three managers like this on their team. They wrapped it up by saying they&#8217;ve started interviewing and asked what else they could do.</p><p>The overwhelming response in the comments was exactly what you&#8217;d expect: <strong>&#8220;You don&#8217;t quit companies, you quit managers. Get out. Stop wasting your time.&#8221;</strong> And honestly, I don&#8217;t disagree with that as a general principle. But I also don&#8217;t love how black-and-white it ends up being when that&#8217;s the only advice anyone offers. So I want to walk through where I agree, where I push back, and the questions I think actually matter when you&#8217;re in this situation.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=aHRNKVgjIE0">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-aHRNKVgjIE0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aHRNKVgjIE0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aHRNKVgjIE0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Where Reddit Is Probably Right</strong></h2><p>Let me get this out of the way first: <strong>a manager&#8217;s influence on your career is significant</strong>. I&#8217;ve been doing this long enough to see the inverse play out plenty of times. There are places I&#8217;ve worked where the company was great, the product was great, the people were great -- and a single manager change either elevated the experience or absolutely tanked it. I&#8217;ve never personally worked somewhere I thought, &#8220;Man, this company is garbage, but thank god I have a great manager.&#8221; That just doesn&#8217;t happen for me. But I&#8217;ve absolutely worked somewhere good and had a manager pull the whole thing down.</p><p>So the Reddit answer -- &#8220;your manager matters more than the company brand on your business card&#8221; -- I actually believe that. And for most people, in most situations, the &#8220;start interviewing&#8221; advice is probably the right move. Especially if you&#8217;re already burnt out and resentful, the amount of energy needed to drive change is energy you probably don&#8217;t have. That&#8217;s not a moral failing. That&#8217;s just reality.</p><h2><strong>Where I Start To Push Back</strong></h2><p>What bugs me is the binary on/off framing. <strong>Always jump ship.</strong> Never try to fix it. If everyone in a thread is piling on with the same advice, my instinct is to share the other angle -- because someone reading that thread might actually be in a different scenario where the right answer isn&#8217;t &#8220;leave.&#8221;</p><p>Let me exaggerate to make the point. Imagine you genuinely love the company. You believe in the product, you love your peers, you&#8217;ve been there long enough to have helped build the thing, and the opportunity in front of you is real. Then a new manager gets dropped above you and they&#8217;re just... not good. You can have bad hires at every level -- engineers, product managers, EMs, VPs, C-suite. People who interviewed great and turn out to be a disaster in practice. The decision-makers above don&#8217;t always see it, because the chaos doesn&#8217;t bubble up the way the interview signal did.</p><p>In that scenario, &#8220;just leave&#8221; is leaving a lot of value on the table. I&#8217;ve had moments in my career where a bad manager situation would have been the easiest excuse to jump, and I&#8217;m glad I didn&#8217;t. I worked through it, found ways around it, escalated where it made sense, and the long-term outcome was better than running. That&#8217;s not me saying I made the perfect choice every time -- I&#8217;m just saying that if &#8220;leave at the first sign of friction&#8221; had been my default, I wouldn&#8217;t be where I am today.</p><p>For more on the manager-perspective side of this, I dug into <strong><a href="https://www.devleader.ca/2025/08/23/top-mistakes-of-new-managers-and-leads-dev-leader-weekly-106?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-140">what new managers and leads typically get wrong</a></strong> in a previous issue -- worth a read if you want to understand what might actually be going on above you before you decide.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Real Question: How Much Do You Care?</strong></h2><p>Here&#8217;s the question I&#8217;d ask instead of &#8220;should I quit?&#8221; -- <strong>how much do you actually care about this specific job, at this specific company?</strong></p><p>Because the honest answer to that question changes everything that follows. If you genuinely care, then you probably do have the energy and motivation to try things first. If you don&#8217;t really care or don&#8217;t care <strong>enough</strong> for the amount of effort that goes into driving change, then sure -- the &#8220;start interviewing&#8221; advice is probably the right call.</p><p>And there&#8217;s no judgment in that. You&#8217;re allowed to not care or not care <strong>enough</strong> to pour more time and energy into something. People conflate &#8220;I should fight for this&#8221; with &#8220;I&#8217;m a good engineer,&#8221; and that&#8217;s not how it works.</p><p>The corollary: <strong>if you&#8217;re already burnt out and resentful, the amount of energy you have left to drive change is probably zero</strong>. I get into this in more depth in the issue on <strong><a href="https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-140">whether you should even talk to your manager about burnout</a></strong>, but the short version is: trying to fix a bad situation when you&#8217;re already cooked is a recipe for being even more frustrated. Be honest with yourself about which side of that line you&#8217;re on.</p><h2><strong>Build A Case Before You Burn It Down</strong></h2><p>If the answer to &#8220;do I care enough?&#8221; is yes, then the next move isn&#8217;t a heroic confrontation. It&#8217;s two things in parallel: <strong>support systems</strong> and <strong>evidence</strong>.</p><p><em><strong>Actionable Tip</strong></em> -- Check your support systems in both directions:</p><ul><li><p><strong>Up the chain.</strong> Who&#8217;s your skip-level manager? Do you have any working relationship with them? Are they someone who would back you up if you brought this to them with substance? Or are they the type to immediately tell your manager you complained?</p></li><li><p><strong>Across your peers.</strong> Are other people seeing the same things? You don&#8217;t want to get into &#8220;Bob sucks, let&#8217;s hate Bob&#8221; territory, but you can ask carefully -- &#8220;Hey, I ran into this situation, how have you been navigating it?&#8221; -- and see what comes back. If everyone else thinks things are fine and you&#8217;re the only one frustrated, that&#8217;s actual signal too. That&#8217;s not a fun signal, but it&#8217;s worth knowing.</p></li></ul><p>The other half is evidence. When you go talk to your skip-level or HR or whoever, you want to be able to move past &#8220;I just don&#8217;t like working with this person&#8221; to <strong>&#8220;here are specific instances, here are the impacts, and here&#8217;s what I&#8217;ve already tried.&#8221;</strong> That&#8217;s the difference between a venting session and a conversation that can lead to action.</p><p>And just to set expectations: even with great evidence, your skip-level probably isn&#8217;t going to fire your manager on the spot. There&#8217;s usually a longer, slower process for things like this -- something closer to a performance plan than a phone call -- and often there&#8217;s still more observation, investigation, and understanding that goes into things. That&#8217;s not a reason to skip the conversation. It just means: don&#8217;t expect overnight magic.</p><h2><strong>There Are Always Two Sides To This</strong></h2><p>The Reddit post is one side of the story. The manager has the other side. And we have no way of getting that side, ever.</p><p>I&#8217;m not saying the original poster is wrong or making it up. I&#8217;d actually bet they&#8217;re doing a fine job and have a manager they genuinely don&#8217;t align with. But here&#8217;s the uncomfortable thing -- if we could call up that manager right now and ask &#8220;tell me about so-and-so and how the 1:1s are going,&#8221; we&#8217;d almost certainly hear a different story. Maybe a wildly different story. Maybe one where they think they <strong>are</strong> following up on things and the communication just isn&#8217;t landing the way the report thinks it is.</p><p>This is exactly why I wrote a whole issue on whether you can even <strong><a href="https://www.devleader.ca/2026/05/04/measuring-manager-effectiveness-can-you-even-quantify-it-dev-leader-weekly-138?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-140">measure manager effectiveness in any meaningful way</a></strong> -- because &#8220;this manager is bad&#8221; is a much harder claim to substantiate than people assume. And the things you&#8217;d use as evidence often look different depending on which seat you&#8217;re sitting in.</p><p>I&#8217;ve also been the person on the other side of &#8220;my manager won&#8217;t give me feedback&#8221; complaints. I unpacked the manager-side of that one in <strong><a href="https://www.devleader.ca/2025/03/08/my-manager-refuses-to-give-feedback-dev-leader-weekly-86?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-140">the issue on managers who supposedly refuse to give feedback</a></strong> -- there&#8217;s a lot of nuance that gets flattened when only one side gets to narrate the story.</p><p>None of this means your frustration is invalid. It just means: be careful about building a complete narrative when you only have half the inputs.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The 1:1 Problem Nobody Talks About</strong></h2><p>This is the part I think gets overlooked most often. The Reddit post says, &#8220;I bring stuff up in 1:1s and nothing happens.&#8221; Fair complaint on the surface. But let me walk through what might actually be happening.</p><p>You bring up a problem in a 1:1. Your manager listens, acknowledges how you feel, and you move on. Two weeks later, you bring up a similar problem. They acknowledge it again. Move on. You leave the second 1:1 thinking, &#8220;Okay, this is the second time and they&#8217;ve done nothing.&#8221; Meanwhile, your manager might be leaving the exact same 1:1 thinking, <strong>&#8220;Cool, they raised an issue and we talked about it. Glad they got it off their chest.&#8221;</strong></p><p>You&#8217;re operating on totally different expectations. You think &#8220;raising it&#8221; means &#8220;they will go fix it.&#8221; They think &#8220;raising it&#8221; means &#8220;the person needed to vent and now we&#8217;ve vented.&#8221; Neither of you is technically wrong. You just never agreed on what was supposed to happen next.</p><p><em><strong>Actionable Tip</strong></em> -- Stop ending 1:1s without explicit agreements. Try things like:</p><ul><li><p><strong>&#8220;Can we talk about a plan for how we&#8217;re going to address this?&#8221;</strong></p></li><li><p><strong>&#8220;What does the next step look like, and who owns it?&#8221;</strong></p></li><li><p><strong>&#8220;By when should we expect to see movement on this?&#8221;</strong></p></li><li><p><strong>&#8220;If nothing has changed in two weeks, what&#8217;s our follow-up?&#8221;</strong></p></li></ul><p>I went deep on this in a previous issue on <strong><a href="https://www.devleader.ca/2025/04/05/make-the-most-of-your-one-on-ones-dev-leader-weekly-90?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-140">getting the most out of your 1:1s</a></strong>, because honestly -- this is one of those things I see talented engineers under-leverage their whole careers. The 1:1 is your most direct, structured channel to your manager. If you&#8217;re walking out of every one of them with a vague sense of &#8220;well that didn&#8217;t go anywhere,&#8221; that&#8217;s a problem worth fixing before you start interviewing.</p><h2><strong>Wrap-Up</strong></h2><p>If your manager is genuinely bad, has no interest in changing, and your skip-level won&#8217;t back you up -- yeah, go interview. That&#8217;s a valid call and probably the right one for most people in that scenario.</p><p>But before you get there, ask the harder questions: <strong>How much do you care about this job?</strong> <strong>What does your support system actually look like?</strong> <strong>Have you built a real case with evidence?</strong> And most importantly -- <strong>are you and your manager actually operating on the same expectations in your 1:1s, or are you just both leaving with different stories about what happened?</strong></p><p>Level-setting expectations and clean communication is, honestly, one of the biggest factors I&#8217;ve seen play out in software engineering careers. Everyone wants to argue about which language is best or whether AI is taking over. Meanwhile, the people who keep getting stuck are usually stuck on this. Get that right and a lot of the rest sorts itself out.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/when-reddit-says-quit-your-manager?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iBpq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iBpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!iBpq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!iBpq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118ec89-d825-4d2a-83fa-64f12aece973_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[What Your Working Hours Signal To Your Team]]></title><description><![CDATA[Dev Leader Weekly 139]]></description><link>https://weekly.devleader.ca/p/what-your-working-hours-signal-to</link><guid isPermaLink="false">https://weekly.devleader.ca/p/what-your-working-hours-signal-to</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 11 May 2026 20:40:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gb0-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp" 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://www.devleader.ca/2026/05/11/what-your-working-hours-signal-to-your-team-dev-leader-weekly-139" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gb0-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gb0-!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp" width="1200" height="799.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:533,&quot;width&quot;:800,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:29772,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/05/11/what-your-working-hours-signal-to-your-team-dev-leader-weekly-139&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/197267290?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gb0-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!gb0-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bcc9068-5948-4a22-a251-8eeae0bbc5e3_800x533.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Your start time isn&#8217;t the signal you think it is</p></li><li><p>People will model whatever hours you actually keep</p></li><li><p>Overcommunicate the expectation -- silence sets it for you</p></li><li><p>Skipping the live stream one more week here... But I&#8217;ll be back!</p></li></ul><div><hr></div><h2><strong>What Your Working Hours Signal To Your Team</strong></h2><p>Someone over on the experienced devs subreddit asked a question that I think a lot of people quietly worry about: when managers or senior people see you coming in late and staying late, or coming in early and leaving early, what do they actually take from that? Is your start time saying something about your work ethic? And honestly -- I don&#8217;t think it&#8217;s saying what you think it&#8217;s saying. But there&#8217;s a different signal you&#8217;re sending (or that your manager is sending to you) that <strong>does</strong> matter, and most people miss it entirely.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=83gXcbdUcns">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-83gXcbdUcns" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;83gXcbdUcns&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/83gXcbdUcns?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>What I Actually Care About As A Manager</strong></h2><p>I&#8217;ll just lead with this and get it out of the way: I genuinely don&#8217;t care what time you start or what time you finish. I care that you&#8217;re putting in honest effort, that you&#8217;re engaged in the work, that you&#8217;re asking for help when you need it, and that the output of you in your role is something we can work on together to optimize. That&#8217;s it. The clock-in/clock-out timestamps are not the thing.</p><p>The one thing I care about that <strong>is</strong> time-related is overlap. If you&#8217;re on a team of eight and seven of them have a sync at a certain hour, can you find a way to make that work? Maybe you literally can. Maybe you can&#8217;t and you partner with someone to represent you. Maybe you lean on async tools to catch the parts you missed. The answer almost always exists -- you just have to be an adult about it and figure it out with your team.</p><p>I&#8217;ve worked with people who needed to shift their schedule because they were taking a class, or visiting family on a different coast, or their parents were in town for two weeks. The answer is always the same from me: <strong>how can I help make this work?</strong> Because I want flexibility for my team. I think you get more out of people when they have flexibility, and I think they&#8217;re more engaged. The opposite -- being rigid about time -- creates resentment, fear, or quiet quitting. Pick your poison. None of those are good outcomes.</p><p>So if you&#8217;re sitting there worried that your manager is going to judge you because you walk in at 10:30 instead of 9:00, I would tell you: most decent managers don&#8217;t care, and the ones who do are usually using time as a proxy for something else they should just be measuring directly (which is its own conversation -- I went into that more in <strong><a href="https://www.devleader.ca/2026/05/04/measuring-manager-effectiveness-can-you-even-quantify-it-dev-leader-weekly-138?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-139">Measuring Manager Effectiveness</a></strong> on a recent issue).</p><h2><strong>Where The Perception Actually Comes From</strong></h2><p>Here&#8217;s where it gets more interesting, and where I think most people miss the real signal.</p><p>The perception around working hours doesn&#8217;t usually come from someone&#8217;s start time. It comes from the people they look up to. If your senior engineer is online at 10pm, or your manager is firing off Slack messages at 6am, you start to build a quiet model in your head: <strong>this is what success looks like here</strong>. Maybe nobody ever said it out loud. Maybe the manager would tell you with full sincerity that they don&#8217;t expect you to be online at 10pm. Doesn&#8217;t matter. The behavior is the message. People emulate what they see, especially from people they respect.</p><p>So you start asking yourself questions. They&#8217;re getting an extra two hours a day. They&#8217;re more senior. They&#8217;re probably smarter than me. How am I supposed to keep up? And whether or not that calculation is conscious, it shapes how you work, how you feel about your work, and how long you stick around before you burn out.</p><p>This is one of the most common patterns I see in newer leaders too -- they don&#8217;t realize the modeling effect their own habits have on the team. I wrote about this in <strong><a href="https://www.devleader.ca/2025/08/23/top-mistakes-of-new-managers-and-leads-dev-leader-weekly-106?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-139">Top Mistakes of New Managers and Leads</a></strong> and again in <strong><a href="https://www.devleader.ca/2024/11/09/i-wish-i-knew-these-before-becoming-a-manager-dev-leader-weekly-69?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-139">I Wish I Knew THESE Before Becoming A Manager</a></strong>. The same theme keeps showing up: the things you do without thinking about them become the rules your team thinks they have to follow.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>My Own Trap (And What I Got Told)</strong></h2><p>I&#8217;ll be honest -- I&#8217;ve been on the wrong side of this. Going back to my startup days before Microsoft, I worked as much as I possibly could. Not because anyone made me. That&#8217;s just how I operated. And at some point I got told, more or less, &#8220;Hey Nick -- you shouldn&#8217;t work that much.&#8221; And the part I was hearing was &#8220;it&#8217;s not healthy&#8221; and that part I appreciated.</p><p>But there was a second part to it that took me longer to absorb: <strong>you&#8217;re setting an example, and people will model it whether you tell them to or not.</strong> The unspoken expectation on the team becomes the hours the most visible person is working. If you&#8217;re modeling 14-hour days and weekends, that becomes the standard people think they have to hit to be considered effective.</p><p>My initial reaction, embarrassingly, was &#8220;well that&#8217;s not my problem -- people are adults, they can make their own decisions.&#8221; Which is technically true and operationally useless. As a leader, <strong>it is my problem</strong>, because I do understand that people emulate behavior they look up to. I do understand that they form expectations I never said out loud. So pretending otherwise is just me being defensive about my own habits.</p><p><em><strong>Actionable Tip:</strong></em> If you find yourself working long or unusual hours, don&#8217;t just hope your team interprets it correctly. Tell them, plainly, that your hours are not their expectation. Then back it up by reminding people to disconnect when they&#8217;re going outside the norm -- don&#8217;t force naything, just make space for them. The combination of explicit words and visible action is what actually shifts the perception. If you have a manager doing this and you&#8217;ve never asked them about it, that&#8217;s exactly the kind of thing to bring into your next <strong><a href="https://www.devleader.ca/2025/04/05/make-the-most-of-your-one-on-ones-dev-leader-weekly-90?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-139">one-on-one</a></strong> -- ask them directly what they expect of your hours and whether they&#8217;d actually prefer you sign off when your work for the day is done.</p><h2><strong>The Manager Who Got It Right</strong></h2><p>The cleanest example I&#8217;ve seen of this done well was from a manager I joined under. He had something in his email signature -- I&#8217;m paraphrasing -- along the lines of &#8220;my working hours are not a reflection of what your working hours should be&#8221; and another note about working with teams in different time zones. If you read that without context, you might think it&#8217;s a weird thing to put in a signature. The reason it&#8217;s there is exactly the perception problem I&#8217;m describing.</p><p>He was being very explicit about the unspoken expectation. Every email he ever sent carried that disclaimer. He was overcommunicating because the alternative -- staying silent and letting people draw their own conclusions -- always loses. People will fill the vacuum with assumptions, and the assumptions will skew toward &#8220;I should probably be doing what they&#8217;re doing.&#8221; So you fill the vacuum yourself, on purpose, with the message you actually want them to take.</p><p>This connects to a bigger truth I keep coming back to about the people side of this work: the <strong><a href="https://www.devleader.ca/2024/01/18/software-engineering-soft-skills-6-focus-areas-that-you-need?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-139">soft skills</a></strong> that move you up are usually about being explicit about things other people leave implicit. Communication, expectation-setting, calling out the obvious that nobody else wants to call out. The stuff that feels almost over-the-top is usually exactly right.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>A Funny Coincidence</strong></h2><p>This whole topic was on my mind because earlier the same day I recorded the video, I happened to be in the office on a Friday -- which not many usually do because, well, it&#8217;s Friday. I was making up for a day earlier in the week I couldn&#8217;t get in. Someone on my team was on a call with a colleague, and the person on the other end asked who was in the office. My teammate listed a few people, including me, and -- in a way they knew I&#8217;d hear -- said something along the lines of &#8220;yeah, because he&#8217;s a workaholic.&#8221;</p><p>It&#8217;s harmless. They were joking around. But it&#8217;s a really clean piece of evidence that the perception is real, regardless of how many hours I actually work (no one is timing me with a stopwatch). And it&#8217;s a useful reminder that if I don&#8217;t want my team to assume &#8220;this is the expectation,&#8221; I have to be even more deliberate about saying out loud what the actual expectation is. Otherwise the joke stops being a joke and starts being the standard -- and that&#8217;s what you&#8217;re trying to avoid.</p><h2><strong>Wrapping It Up</strong></h2><p>So if you take one thing from this issue, take this: your start time isn&#8217;t the signal. The hours you actually work, especially if you&#8217;re senior or in a leadership role, are the signal -- and they will set the bar for your team whether you intend them to or not. The best thing you can do is overcommunicate. Tell people what you actually expect. Send them offline when they&#8217;ve put their time in. Put the disclaimer in the signature if that&#8217;s what it takes.</p><p>And if you&#8217;re on the other side -- if you&#8217;re the person worried about how your hours look -- then have the conversation. Ask. Don&#8217;t carry around a perception in your head that nobody actually holds. The cost of asking is one slightly awkward minute. The cost of not asking is years of working to a bar that doesn&#8217;t actually exist.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/what-your-working-hours-signal-to?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/what-your-working-hours-signal-to?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/what-your-working-hours-signal-to/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/what-your-working-hours-signal-to/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E0yk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E0yk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!E0yk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!E0yk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7e2f5d1-9cc2-4a99-a97a-1bc9111751dc_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Measuring Manager Effectiveness -- Can You Even Quantify It?]]></title><description><![CDATA[Dev Leader Weekly 138]]></description><link>https://weekly.devleader.ca/p/measuring-manager-effectiveness-can</link><guid isPermaLink="false">https://weekly.devleader.ca/p/measuring-manager-effectiveness-can</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 04 May 2026 06:15:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u_96!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp" 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://www.devleader.ca/2026/05/04/measuring-manager-effectiveness-can-you-even-quantify-it-dev-leader-weekly-138" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u_96!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!u_96!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!u_96!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!u_96!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u_96!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp" width="1200" height="799.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:533,&quot;width&quot;:800,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:35990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/05/04/measuring-manager-effectiveness-can-you-even-quantify-it-dev-leader-weekly-138&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/196387849?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u_96!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!u_96!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!u_96!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!u_96!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbafda170-eab4-4617-96fe-93d7b10b0485_800x533.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Manager effectiveness is multidimensional -- technical, project, and people</p></li><li><p>You can&#8217;t perfectly quantify it, but you can measure signals that matter</p></li><li><p>Balancing delivery with people management is the real challenge</p></li><li><p>I&#8217;m on-call this week -- no live stream. Sorry!</p></li></ul><div><hr></div><h2><strong>Can You Actually Quantify How Good a Manager Is?</strong></h2><p>A viewer recently asked me about how quantifiable manager skills are, and I think it&#8217;s a genuinely fascinating question. We can all think of managers we&#8217;ve worked with and immediately categorize them -- &#8220;that person was incredible&#8221; or &#8220;that person was a nightmare.&#8221; But putting numbers on <strong>why</strong> is a completely different challenge.</p><p>I wanted to break this down because I think it matters -- not just for evaluating managers, but for managers themselves who want to understand where they&#8217;re doing well and where they need to invest more time.</p><p>You can <strong><a href="https://youtu.be/fmBk0XEifeQ">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-fmBk0XEifeQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fmBk0XEifeQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fmBk0XEifeQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>First, Set the Expectations</strong></h2><p>Before we can measure anything, we need to level-set on what&#8217;s actually expected of a manager. And this varies <strong>massively</strong> -- across companies, team sizes, and seniority levels.</p><p>My advice for level-setting expectations applies to managers too. If you&#8217;re thinking of moving into management or you&#8217;re a new manager, work with your own manager to understand what&#8217;s expected of you. That baseline matters because without it, you&#8217;re measuring against a target you can&#8217;t even see.</p><p>The biggest variance I see comes down to <strong>how much time you spend as a hybrid IC</strong>. At smaller companies or on smaller teams, there&#8217;s often more of an expectation that you&#8217;re hands-on in the code. It almost wouldn&#8217;t make sense to sit back and wait if you have a small surface area of people and technology. But as your scope grows -- more people, more product areas -- the balance shifts. You stop being the person fixing bugs and start being the person <strong><a href="https://www.devleader.ca/2026/02/25/9b2b05dc-a9c0-4eff-84c6-5a0f5d8924a5?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-138">planning how work gets delivered</a></strong> and making sure the right skills are applied to the right problems.</p><p>I&#8217;ve lived this shift personally. Early in my career I managed a bunch of people at a startup on a single product, and I could code in any area because I&#8217;d been there since the beginning. Then at Microsoft, I moved into a deployment team -- a more focused scope, a codebase older than some team members -- and many of my hands-on strengths just didn&#8217;t apply the same way. The same thing happened when I moved over to the M365 routine plane -- and that&#8217;s not a failure. <strong><a href="https://www.devleader.ca/2026/04/12/fd116a6e-3ed7-4871-a939-7ab2eeb46bf3?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-138">It&#8217;s what happens when your role gets more strategic</a></strong>.</p><h2><strong>The Three Dimensions of Manager Effectiveness</strong></h2><p>I think about manager effectiveness across three major areas, and the measurability of each is very different.</p><h3><strong>1. Technical Ability</strong></h3><p>This one is nuanced. It&#8217;s different to have <strong>domain knowledge of the codebase</strong> versus having <strong>system design expertise</strong>. I can tell you from experience -- there are potentially junior engineers on my current team who can find and fix a specific bug faster than I can, because they&#8217;re working in that code every day. But if you need help designing a system from scratch? That&#8217;s where broader engineering experience kicks in.</p><p>The measure isn&#8217;t &#8220;can you out-code your team.&#8221; It&#8217;s more like: can you take on ambiguous, complex technical challenges and deliver at a level comparable to senior ICs on your team? For some managers, the answer is yes. For others -- especially those managing larger or more diverse surface areas -- the answer is no, and that&#8217;s completely okay if other dimensions are covered.</p><p><em><strong>Actionable Tip:</strong></em> If you&#8217;re a manager who&#8217;s lost touch with hands-on code, lean into AI tools. I&#8217;ve found that AI makes it much faster to get up to speed on unfamiliar codebases when you need to jump in. It doesn&#8217;t replace daily hands-on experience, but it dramatically shortens the ramp-up time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/measuring-manager-effectiveness-can?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Leader Weekly! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/measuring-manager-effectiveness-can?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/measuring-manager-effectiveness-can?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h3><strong>2. Project Management</strong></h3><p>This covers prioritization, tracking progress, managing roadblocks, handling dependencies with partner teams, and making sure work is properly staffed. And not &#8220;staffed&#8221; in the gross &#8220;people as resources&#8221; sense -- I mean making sure you have the right mix of skills and experience applied to each problem.</p><p>Can you measure this? Sort of. You could look at whether deadlines are consistently hit, missed by a little, or missed by a lot. If you&#8217;re always off by 2x on a six-month project, something&#8217;s wrong. If you&#8217;re off by a week or two? That might be totally reasonable.</p><p>But the <strong>real</strong> signal is less about hitting exact dates and more about what you do when things are off track. The best managers I&#8217;ve seen raise awareness at the right time, engage the right stakeholders, and either adjust scope or adjust timelines -- so things still get delivered on an agreed-upon plan even if it&#8217;s been shifted. That&#8217;s incredibly hard to put a number on.</p><h3><strong>3. People Management</strong></h3><p>This is the one most engineers underestimate when they move into management. And honestly, from my experience working with other engineering managers, <strong>many still don&#8217;t realize this is fundamentally a people management job</strong>. That&#8217;s alarming to me.</p><p>Here&#8217;s what falls under this:</p><ul><li><p><strong>Career growth</strong> -- are you helping people advance? Is there a reasonable promotion cadence on your team? Not everyone promoted every cycle, but also not nobody ever.</p></li><li><p><strong>Team composition</strong> -- do you have the right balance of levels, backgrounds, and strengths? You can&#8217;t build a team where everyone has maxed-out stats. That&#8217;s not real.</p></li><li><p><strong>Single points of failure</strong> -- if only one person knows a critical system, you need a plan. That&#8217;s the lottery effect (or if you prefer the darker version, the bus effect).</p></li><li><p><strong>Engagement</strong> -- are people actually interested in their work? Do they feel supported?</p></li></ul><p>That last point is critical. If you&#8217;re hyper-optimizing for delivery by always slotting your best person into the next highest-priority task, you&#8217;re probably ignoring <strong><a href="https://www.devleader.ca/2026/03/29/c3399330-29d0-487f-8ef8-bea27516f69a?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-138">whether your team is burning out</a></strong>. That person keeps getting siloed. Maybe they don&#8217;t even want to do that work anymore. Maybe other people on the team want the opportunity. You can&#8217;t ignore the people side just because the delivery side looks efficient on paper.</p><p><em><strong>Actionable Tip:</strong></em> If you think supporting your employees detracts from delivery, you&#8217;ve got it backwards. A team full of people thinking &#8220;screw this place, no one cares about me&#8221; is not going to deliver great work regardless of how cleverly you assign tasks.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>So How Do You Actually Measure This?</strong></h2><p>Here&#8217;s my honest answer: <strong>there is no single tool or system that gives you a clean numeric value across all of this</strong>. But there are signals you can look at.</p><ul><li><p><strong>Promotion cadence</strong> -- are people progressing at a reasonable rate? If it&#8217;s zero or 100%, something&#8217;s off.</p></li><li><p><strong>Employee satisfaction surveys</strong> -- at Microsoft we have a signals survey with a &#8220;thriving score.&#8221; It&#8217;s not perfect science, but it gives you a quantitative read on whether your team is engaged.</p></li><li><p><strong>Deadline accuracy</strong> -- not whether you hit every deadline perfectly, but whether the variance is reasonable and whether you course-correct effectively.</p></li><li><p><strong>Technical contribution</strong> -- if you&#8217;re still expected to be hands-on, can you handle complex work at a level <strong><a href="https://www.devleader.ca/2026/03/08/be0ef5bd-272e-4814-97f6-4322e47a419c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-138">that matches your most senior ICs</a></strong>?</p></li><li><p><strong>Team resilience</strong> -- <strong><a href="https://www.devleader.ca/2026/03/02/f6bd3733-4145-44b1-865d-12ebee2cd3bf?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-138">do you have the right mix</a></strong> of experience levels and no single points of failure?</p></li></ul><p>The important thing is that you&#8217;re not measuring to game a target. You&#8217;re measuring to understand where you need to invest time. If nobody&#8217;s getting promoted, that&#8217;s a signal. If everyone is but your delivery is suffering, that&#8217;s also a signal.</p><h2><strong>It&#8217;s Going to Look Different for Everyone</strong></h2><p>Is it possible to come up with some type of assessment for manager effectiveness? Sure, I think so. But it&#8217;s going to look different depending on your seniority, your team composition, the lifecycle of your product, and a dozen other factors.</p><p>And that&#8217;s actually fine. The point isn&#8217;t to come up with a universal manager score. The point is to be aware of the different dimensions, check your signals, and course-correct where things are off.</p><p>These are my opinions from 13+ years of frontline engineering management. Your experience might tell you something different, and I think that&#8217;s a valuable perspective -- so leave me a comment to let me know!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/measuring-manager-effectiveness-can?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/measuring-manager-effectiveness-can?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/measuring-manager-effectiveness-can/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/measuring-manager-effectiveness-can/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WN8X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WN8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6da2163-79ff-4874-b06e-faf881715e58_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!WN8X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!WN8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6da2163-79ff-4874-b06e-faf881715e58_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[AI Career Fears Are Evolving -- Here's What I'm Hearing]]></title><description><![CDATA[Dev Leader Weekly 137]]></description><link>https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres</link><guid isPermaLink="false">https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 27 Apr 2026 05:37:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YnD8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp" 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://www.devleader.ca/2026/04/27/ai-career-fears-are-evolving-heres-what-im-hearing-dev-leader-weekly-137" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YnD8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YnD8!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:122128,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/04/27/ai-career-fears-are-evolving-heres-what-im-hearing-dev-leader-weekly-137&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/195593387?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YnD8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!YnD8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb781921-440d-4e45-bf6d-799250a31202_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>AI career anxiety is shifting from &#8220;replaced&#8221; to &#8220;left behind&#8221;</p></li><li><p>Tool usage gaps and product integration gaps are different problems</p></li><li><p>Your engineering fundamentals are more transferable than you think</p></li><li><p>I&#8217;m on-call this week -- no live stream. Sorry!</p></li></ul><div><hr></div><h2><strong>The AI Career Conversation Is Changing</strong></h2><p>If you spend any amount of time in developer communities, on social media, or just talking with engineers in your circles, you&#8217;ve probably noticed that the AI conversation has shifted. It&#8217;s not the same conversation we were having a year or two ago -- it&#8217;s evolving. And I wanted to share some of the patterns I&#8217;ve been picking up from conversations I&#8217;ve been having with developers at various stages of their careers.</p><p>Obviously, everyone&#8217;s going to have their own bias on this based on where they&#8217;re working and who they&#8217;re interacting with. The same goes for me. But I think it&#8217;s genuinely valuable to share different perspectives so we can all get a broader picture of what&#8217;s actually happening out there.</p><p>You can <strong><a href="https://youtu.be/8-4cmsRCWVE">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-8-4cmsRCWVE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8-4cmsRCWVE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8-4cmsRCWVE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>&#8220;I&#8217;m Going to Be Replaced by AI&#8221;</strong></h2><p>Not surprisingly, the overwhelming narrative I hear -- and I&#8217;m guessing you&#8217;re hearing something similar -- is this fear of being replaced by AI. That hasn&#8217;t gone away. If I had to guess, it&#8217;s probably still the most common concern, especially on social media and from people I interact with outside of my direct team.</p><p>But here&#8217;s the thing: <strong>it&#8217;s not just people already in the industry</strong>. A huge chunk of the fear is coming from aspiring software developers -- people who haven&#8217;t even broken into the profession yet. They&#8217;re looking at AI progress and wondering if the job they&#8217;re trying to get is going to exist by the time they&#8217;re ready for it.</p><p>I do think this fear is starting to shift, though. It&#8217;s not disappearing, but the shape of it is changing. And that&#8217;s what I want to dig into.</p><h2><strong>The &#8220;Being Left Behind&#8221; Fear</strong></h2><p>The narrative that&#8217;s been ramping up the most in my conversations is less about <strong>replacement</strong> and more about <strong>being left behind</strong>. And it breaks down into two very distinct categories that I think are important to separate -- because the solutions for each look completely different.</p><h3><strong>Not Using AI Tools Effectively</strong></h3><p>The first category is around <strong>developer workflow tooling</strong>. People are looking around at their peers and seeing them use Claude, Copilot, Cursor, or whatever the latest tool is -- and they&#8217;re seeing (or at least perceiving) these people being incredibly effective with these tools. The side effect? This creeping feeling that everyone else is accelerating and <strong>I&#8217;m not keeping up</strong>.</p><p>Now, I want to be clear -- I absolutely use AI tools in my development workflow as much as I can. But I think there&#8217;s an important nuance here. You&#8217;re almost always going to see outliers on social media that exaggerate this effect. You don&#8217;t hear about the person who got a totally respectable 20% productivity boost. You only hear about the people claiming they&#8217;re 10x or 100x what their &#8220;former peasant selves&#8221; were. And that exaggerates the gap you perceive.</p><p><em><strong>Actionable Tip:</strong></em> If you feel like you&#8217;re falling behind on AI tooling, start small. A lot of people I&#8217;ve worked with have been using AI for doc writing or smaller code changes, but they haven&#8217;t explored things like using AI to put together a comprehensive plan, execute on most of it, or collect and compare data across multiple design options. If you&#8217;ve been trying to one-shot perfect outputs and getting disappointed, that&#8217;s probably not the most effective way to use these tools. Iterating is key.</p><h3><strong>Not Building AI-Integrated Products</strong></h3><p>The second category is subtly different but equally real. These are developers who are building software across any domain and any tech stack, but they&#8217;re not integrating AI functionality into what they&#8217;re building. No <strong><a href="https://www.devleader.ca/2026/04/06/64c7feaf-6ef8-43a1-9c31-4c08bdb5879e?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-137">agents</a></strong>, no LLM tool calls, no RAG pipelines -- there&#8217;s just no AI in the product or service.</p><p>This is fundamentally different from the first category. One is about <strong>your developer workflow</strong> (how you build things), and the other is about <strong>the product itself</strong> (what you&#8217;re building). And when people express this concern, these two things often get mixed together in a way that makes the anxiety worse.</p><p>Here&#8217;s the reality: <strong>you might be building something where AI genuinely doesn&#8217;t make sense</strong>. Take a high-performance reverse proxy, for example -- you&#8217;re not going to route requests through an LLM. That would be absurd from a performance perspective. But that doesn&#8217;t mean you can&#8217;t find peripheral opportunities. Data analysis, service health monitoring, on-call workflows -- there are likely <strong><a href="https://www.devleader.ca/2026/04/04/5f2ca2d3-d5e8-4852-b51f-e29cfc32a0f4?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-137">adjacent areas where AI integration makes a lot of sense</a></strong> even if it can&#8217;t be on the hot path.</p><p>And if your product <strong>could</strong> benefit from AI but it&#8217;s not on the roadmap yet? I think you should advocate for it. Seriously. You might not be the final decision-maker, but I think everyone should speak up when they see an opportunity. That&#8217;s not overstepping -- that&#8217;s being a good engineer.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><h2><strong>The Cutting-Edge FOMO</strong></h2><p>This one is the newest thing I&#8217;ve been hearing, and it&#8217;s the one that&#8217;s been ramping up the fastest. It&#8217;s not about using AI tools or integrating AI into products. It&#8217;s about <strong>wanting to be the person building the AI technology itself</strong>.</p><p>How do I get to be part of putting the models together? How do I work on the agentic harnesses? How can I be involved in creating the technology that other developers are going to use -- whether that&#8217;s developer tooling or <strong><a href="https://www.devleader.ca/2026/03/31/7298aa29-162f-430e-b3d0-3b813f126693?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-137">components for building AI-powered services</a></strong>?</p><p>I think there&#8217;s a hyper-awareness forming around this because of how much attention AI is getting. If you&#8217;re not at the core of it, it can feel like you&#8217;re going to become obsolete -- like you&#8217;re barely a consumer of AI things while other developers are literally assembling the fundamental building blocks.</p><p>Whether or not people felt this way about previous tech waves, I&#8217;m not sure. But the speed and scale of AI advancement is exaggerating everything. Every other tech shift I&#8217;ve lived through feels smaller by comparison.</p><h2><strong>How I&#8217;m Navigating This as an Engineering Manager</strong></h2><p>For the tooling gap, I feel like that&#8217;s the most actionable one. It&#8217;s very situational -- different people hit different hurdles. What I&#8217;ve been leaning into is spending time in one-on-one or small group sessions, not just showcasing success stories (though those are great) but addressing the <strong>other side</strong>: the people who are watching the demos thinking, &#8220;Cool, but that&#8217;s not me -- what do I do?&#8221;</p><p>I&#8217;ve had some success with this approach. People often go, &#8220;Oh, I didn&#8217;t know I could do that!&#8221; when shown different ways to use AI. There&#8217;s a lot of low-hanging fruit that people just haven&#8217;t explored yet -- using AI to <strong><a href="https://www.devleader.ca/2026/04/05/33474578-b661-4fc8-9f59-5c5d330d4397?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-137">evaluate and compare approaches</a></strong>, generate comprehensive plans, or make sense of large amounts of data.</p><p><em><strong>Actionable Tip:</strong></em> If you&#8217;re a manager, don&#8217;t just run demos of AI success stories. Find the people who are struggling and work with them directly. Ask what they&#8217;ve tried. Show them alternatives. And for scale, do a few small group sessions and then let people help each other. It&#8217;s literally your job, and honestly, it&#8217;s one of the most rewarding parts.</p><p>For the product integration gap, that&#8217;s trickier. I can&#8217;t create artificial opportunities for AI integration in a codebase where it doesn&#8217;t make sense. But what I can do is encourage people to think beyond their direct service. There are almost always peripheral systems, workflows, or analyses where AI can add value.</p><p>For the cutting-edge FOMO? That&#8217;s the hardest one. My approach has been:</p><ol><li><p><strong>Acknowledge the feeling is valid.</strong> I&#8217;m not going to tell someone their concern is dumb. That&#8217;s how they feel, and it&#8217;s not for me to dismiss.</p></li><li><p><strong>Provide perspective.</strong> Tech waves aren&#8217;t new, but this one is genuinely exaggerated in speed and impact. Acknowledging both of those things helps.</p></li><li><p><strong>Support career decisions.</strong> If someone genuinely wants to go deeper into AI as a career direction, I fully support that. It&#8217;s not my decision to make -- it&#8217;s theirs. I can share perspectives, but ultimately people get to chart their own path.</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Your Skills Are More Transferable Than You Think</strong></h2><p>Here&#8217;s the thing I keep coming back to: the general skills we build as software engineers are <strong>incredibly transferable</strong>. <strong><a href="https://www.devleader.ca/2026/04/07/c7992406-3149-4921-bc40-ab639628859e?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-137">Design patterns</a></strong>, system design, debugging, performance analysis, code organization -- all of that translates regardless of whether you&#8217;re building a traditional service or an AI-powered one.</p><p>It might mean catching up on new tech. That&#8217;s always been true in software engineering. But the fundamentals? Those don&#8217;t expire.</p><p>Do I have some of these fears myself? Sure, a little bit. But I also know that the core engineering skills I&#8217;ve built over my career have been applicable across every tech shift I&#8217;ve navigated. I don&#8217;t think this one will be any different in that regard -- even though the speed is unlike anything we&#8217;ve seen before.</p><p><em><strong>Actionable Tip:</strong></em> Don&#8217;t make career decisions purely out of a fear reaction. Take the time to actually sit down and identify <strong>what specifically</strong> is bothering you. Is it the tooling gap? The product gap? The cutting-edge gap? Because each of those has a very different path forward, and lumping them together just makes the anxiety worse.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/ai-career-fears-are-evolving-heres/comments"><span>Leave a comment</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JbdQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JbdQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!JbdQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!JbdQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118687ab-df3d-4d4a-b640-c5541b83ac7d_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[The Context Switching Problem Every Dev Faces]]></title><description><![CDATA[Dev Leader Weekly 136]]></description><link>https://weekly.devleader.ca/p/the-context-switching-problem-every</link><guid isPermaLink="false">https://weekly.devleader.ca/p/the-context-switching-problem-every</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 20 Apr 2026 07:03:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!46ke!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp" 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://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!46ke!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!46ke!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!46ke!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!46ke!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!46ke!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:151210,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/04/20/the-context-switching-problem-every-dev-faces-dev-leader-weekly-136&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/194767869?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!46ke!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!46ke!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!46ke!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!46ke!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133e2f37-3267-4bfd-b318-ec86f38df47c_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Context switching is costly but never fully avoidable</p></li><li><p>Give your manager context before they re-prioritize</p></li><li><p>Limit work in progress to stay focused</p></li><li><p><strong><a href="https://youtube.com/live/PwKXJP3E1BA">Join me for the live stream (or watch the recording) on Monday, April 20 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-PwKXJP3E1BA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PwKXJP3E1BA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PwKXJP3E1BA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>Context Switching -- The Tax Nobody Budgets For</strong></h2><p>I went into the ExperiencedDevs subreddit and found a discussion about task switching that I wanted to dig into. This is probably one of those topics where if you&#8217;ve been a software engineer for any length of time, you&#8217;ve felt the pain of being pulled in multiple directions. And if you&#8217;re an engineering manager, you&#8217;ve been on both sides of it -- getting randomized yourself AND being the person asking your team to switch gears.</p><p>I wanted to talk about this from a few different angles: as someone who was a software engineer constantly dealing with context switching, as an engineering manager who has had priorities shifted on my teams, and as the person who sometimes has to be the one delivering the new priority to my team. As usual, I&#8217;ll throw this disclaimer in -- anything I say comes from my own lived experience. It&#8217;s not the only way to look at it. Just my perspective to hopefully give you some different insights.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=UBuSqdKMXNU">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-UBuSqdKMXNU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;UBuSqdKMXNU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/UBuSqdKMXNU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>The Overhead Is Real -- And It&#8217;s Never Going Away</strong></h2><p>Here&#8217;s the thing about context switching: it&#8217;s <strong>not free</strong>. When you do a context switch, there&#8217;s mental overhead, there&#8217;s tooling overhead, there might be a completely different codebase or problem space you need to load into your brain. And the unfortunate reality? You&#8217;re never going to eliminate context switches entirely. That&#8217;s just not realistic.</p><p>The goal is twofold. First, <strong>minimize</strong> context switches. Second, when they do have to happen, make sure they&#8217;re <strong>understood</strong>. The person doing the work and the person injecting the new priority need to be on the same page about why the switch is happening.</p><h2><strong>Startup vs Big Company -- Context Matters A LOT</strong></h2><p>One thing I&#8217;ve noticed throughout my career is that context switching pressure varies <strong>dramatically</strong> based on where you work. The industry, the type of product, and even the company stage all play a role.</p><p>At a bigger, more established company with stable products and services, the disruptions tend to happen less frequently. That&#8217;s been my general experience, at least. But there&#8217;s a huge caveat -- <strong>live services change everything</strong>. A live service is this living, breathing thing where anything could go wrong at any given time. If you&#8217;re working on a service that&#8217;s running 24/7, you&#8217;re more likely to get pulled into an incident bridge or a security-related fire drill.</p><p>On my team at Microsoft, for example, we handle a lot of security-related work. If something security-related comes up where we can help, that&#8217;s going to randomize someone -- and it&#8217;s extremely high priority. As much as possible, I try to put <strong>myself</strong> into that situation to shelter my team from having to context switch. I&#8217;d rather that the people building things and moving the product forward can continue doing that. But there are absolutely cases where that&#8217;s just not realistic and I have to pull people in.</p><p>On the flip side, at a smaller company, I&#8217;ve noticed way more context switching. Even without a live service, if you&#8217;re actively talking with customers and always chasing the next opportunity, it feels like there&#8217;s always something new you have to go chase. Especially in the early stages of a company, that could be absolutely critical -- if you don&#8217;t chase those things, you might not have a company. I&#8217;ve talked about the <strong><a href="https://www.devleader.ca/2026/02/25/planning-in-software-engineering-lessons-from-startup-to-big-tech-dev-leader-weekly-128?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-136">differences between startup and big tech planning before</a></strong>, and it&#8217;s worth noting that the cost of context switching at a startup isn&#8217;t just one developer changing what they&#8217;re doing. As the company grows, it becomes the <strong>entire team</strong> -- engineering, UX, product, marketing, sales -- all having to pivot. That kind of context switching absolutely does not scale.</p><h2><strong>What You Can Actually Do About It</strong></h2><p>So what do you do when your manager keeps throwing new priorities at you? This is probably what most people want to hear, right?</p><p><em><strong>Actionable Tip:</strong></em> <strong>Provide context back to the person giving you the new task.</strong></p><p>This is one of the most helpful things I&#8217;ve ever learned. When someone comes to you with &#8220;Hey, got something new&#8221; -- instead of just quietly accepting it, provide them with visibility into what&#8217;s currently on your plate.</p><p>Here&#8217;s what that looks like in practice. In my startup days (and I&#8217;ll always put this disclaimer in -- loved working for the CTO and wouldn&#8217;t change a thing about it), the founder would frequently come to us with new ideas and new priorities. We needed to start pushing back, and what that looked like was:</p><p><em>&#8220;Hey, look -- we just talked about these three things that are all supposed to be top priority. We&#8217;re actively working on them right now. Now you&#8217;re giving us a fourth. There&#8217;s only so many people and so much time. Do you truly feel that this fourth thing is more important than making progress on these other ones? Because if so, understood -- we&#8217;ll do what needs to happen. But given what I just told you, is this really the most critical thing?&#8221;</em></p><p>Over time, these conversations became much more natural. And I want to be clear -- it wasn&#8217;t confrontational. It was just about <strong>awareness</strong>. I&#8217;ve found that a lot of the time, the person assigning work doesn&#8217;t have the same level of visibility into what you&#8217;re doing. That just makes sense -- they&#8217;re removed from the day-to-day details. When you raise that awareness and ask them to think through the priority, more often than not they&#8217;ll say, <em>&#8220;Actually, no, you&#8217;re right. Those other things are more important.&#8221;</em> It was more rare that they&#8217;d insist the new thing took precedence.</p><p>The key takeaway here is that even when the answer was still &#8220;yes, switch,&#8221; <strong>at least we were aligned on why</strong>. And that alignment makes all the difference. I&#8217;ve written before about how <strong><a href="https://www.devleader.ca/2026/03/08/the-gap-between-good-developers-and-great-ones-dev-leader-weekly-130?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-136">communication is the biggest gap between good and great developers</a></strong>, and this is a perfect example. Being able to clearly communicate what you&#8217;re working on and ask clarifying questions about priorities is a massive skill.</p><h2><strong>The Same Principle Works at Big Companies Too</strong></h2><p>I&#8217;ve seen the exact same dynamic play out at Microsoft. Using the security example again -- there are times when security teams bring things that are clearly &#8220;must fix now.&#8221; And we go fix them. But periodically, something comes up in the mix that isn&#8217;t really a &#8220;must fix now&#8221; -- it&#8217;s more of an enhancement or a feature request.</p><p>So we started having more conversations where we&#8217;d ask clarifying questions: <em>&#8220;Hey, we just want to make sure we understand the severity and criticality of this. Is this a right-now thing, or is this something that can be planned for?&#8221;</em> And a lot of the time, just asking those questions helped everyone realize that the new thing wasn&#8217;t as urgent as it initially seemed.</p><p>This ties into something I talked about in a recent issue about <strong><a href="https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-136">whether you should talk to your manager about burnout</a></strong> -- the foundation of these conversations is <strong>trust</strong>. If you have a good relationship with your manager and stakeholders, these priority-check conversations become natural rather than adversarial.</p><h2><strong>How I Manage WIP on My Teams</strong></h2><p>From the management side, I like to limit the number of items in progress for each team member. If you&#8217;re familiar with concepts from Kanban, this is basically about managing your WIP -- your work in progress. I&#8217;ve had really good experiences where limiting the number of things going on at once helps people maintain focus.</p><p>But here&#8217;s where it gets nuanced. At Microsoft, a lot of the changes we need to make don&#8217;t lend themselves well to a strict &#8220;one item at a time&#8221; cadence. When you deploy changes across the entire planet, we purposefully do it at a staged, controlled pace. That means it goes slower -- not because the technology can&#8217;t handle it, but because we consciously choose to roll things out carefully. The side effect? If I only gave someone one thing to work on, they&#8217;d be sitting idle waiting for their change to deploy.</p><p>So what I&#8217;ve found works across the teams I&#8217;ve managed -- from new hires to principal engineers -- is that people actually <strong>prefer</strong> to have a few things going on at once, as long as the <strong>priority is clear</strong>. A more junior engineer might have one or two things in flight. A more senior engineer might have three or four, including design documents and multiple features at different stages of rollout.</p><p>The critical part is making sure everyone is aligned on which thing takes precedence. And we also have to watch for the downside: when you have multiple things in progress, it&#8217;s easy for items to sit blocked and get forgotten. Someone context switches away from a feature that&#8217;s rolling out, and two weeks later nobody remembers it needs attention. So staying on top of awareness and tracking is essential.</p><h2><strong>Document It If Your Manager Isn&#8217;t Getting It</strong></h2><p>I briefly skimmed through the Reddit comments on this one, and some people made a point I wanted to echo. If you&#8217;re trying to convey the impact of context switching to your manager and not having a lot of success with conversations alone -- <strong>try documenting it</strong>.</p><p><em><strong>Actionable Tip:</strong></em> Keep a record of what you&#8217;re working on over time. When context switches happen, write them down. Then, when you want to have the conversation, you can show a visual of you bouncing between tasks and never actually finishing anything.</p><p>It&#8217;s just more context and visibility for the person assigning the work. I think a lot of the time, managers aren&#8217;t being malicious -- they&#8217;re just missing context. And if you&#8217;re feeling like <strong><a href="https://www.devleader.ca/2026/03/15/how-much-does-company-alignment-really-matter-for-developers-dev-leader-weekly-131?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-136">company alignment isn&#8217;t quite where it should be</a></strong>, providing that documented proof of constant task switching can be a powerful way to start the conversation.</p><h2><strong>Sheltering Your Team -- The Manager&#8217;s Role</strong></h2><p>If you&#8217;re in a leadership position, I think one of the most important things you can do is act as a <strong>buffer</strong> between your team and the constant stream of incoming priority changes. Your team&#8217;s ability to stay in flow and actually ship things depends on you filtering out noise before it reaches them.</p><p>Here&#8217;s how I think about it in practice:</p><p><strong>1. Absorb the disruption yourself when possible.</strong> I mentioned the security example earlier -- when something high-priority comes in that&#8217;s going to randomize someone, I try to put myself into that situation first. Yes, it means I&#8217;m the one getting context switched, but I&#8217;d rather take that hit than pull an engineer out of the middle of a complex feature. My job as a manager is to enable my team to do their best work, and sometimes that means shielding them from the chaos even when it&#8217;s inconvenient for me.</p><p><strong>2. Find natural transition points.</strong> One of the better examples I can think of is when someone was literally finishing up their current work and about to start the next thing. Right before they began, we were able to redirect them to a different work stream, and a new team member picked up what they would have originally started. That kind of timing worked really well because nobody was being ripped out of something mid-thought. The cost of switching at a natural boundary is dramatically lower than mid-task.</p><p><strong>3. Batch and filter incoming requests.</strong> Not every &#8220;urgent&#8221; request that comes from stakeholders is actually urgent. Part of the manager&#8217;s role is to ask those clarifying questions on behalf of the team <em>before</em> the request ever reaches them. If I can resolve a priority question in a five-minute conversation with a stakeholder, that&#8217;s infinitely better than disrupting an engineer&#8217;s entire afternoon.</p><p><strong>4. Be transparent about what you&#8217;re sheltering them from.</strong> I&#8217;ve found that teams appreciate knowing that you&#8217;re actively protecting their focus -- not because they need to be grateful, but because it builds trust and it helps them understand that when you <em>do</em> come to them with a context switch, it&#8217;s genuinely important. It changes the dynamic from &#8220;my manager keeps throwing random stuff at me&#8221; to &#8220;if my manager is asking me to switch, this must really matter.&#8221;</p><p>What I try to avoid at all costs is the &#8220;drop everything you&#8217;re doing&#8221; scenario. That&#8217;s just disruptive in every way. And as I mentioned in the recent issue about <strong><a href="https://www.devleader.ca/2026/04/12/staying-technically-sharp-when-your-role-gets-more-strategic-dev-leader-weekly-135?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-136">staying technically sharp when your role gets more strategic</a></strong>, sometimes that means I absorb the context switch myself so my team can keep their flow.</p><h2><strong>The Bottom Line</strong></h2><p>Context switching is never going away. The goal isn&#8217;t elimination -- it&#8217;s <strong>minimization and alignment</strong>. Whether you&#8217;re a developer being asked to switch tasks or a manager making those calls, the single most impactful thing you can do is provide and ask for context. Give your manager visibility into what you&#8217;re working on. Ask clarifying questions about the urgency and priority of the new thing. Document the impact when words aren&#8217;t enough.</p><p>And if you&#8217;re a manager, try to shelter your team when you can, find natural transition points for switches, and make sure everyone is on the same page about what matters most. A lot of frustration around context switching comes not from the switch itself, but from the feeling that nobody is aligned on <strong>why</strong> it&#8217;s happening.</p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fnJ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fnJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!fnJ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!fnJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc65cfa40-e798-4672-a3d2-8135bbf2b1aa_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Staying Technically Sharp When Your Role Gets More Strategic]]></title><description><![CDATA[Dev Leader Weekly 135]]></description><link>https://weekly.devleader.ca/p/staying-technically-sharp-when-your</link><guid isPermaLink="false">https://weekly.devleader.ca/p/staying-technically-sharp-when-your</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 13 Apr 2026 01:18:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aRSD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp" 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://www.devleader.ca/2026/04/12/staying-technically-sharp-when-your-role-gets-more-strategic-dev-leader-weekly-135" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aRSD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aRSD!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:124092,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/04/12/staying-technically-sharp-when-your-role-gets-more-strategic-dev-leader-weekly-135&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/194023925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aRSD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!aRSD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b94d948-94ad-4a4a-8b6e-223d899e7fbd_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Staying technical starts with knowing what &#8220;technical enough&#8221; actually means for your role</p></li><li><p>Design reviews and code review exposure are your minimum baseline -- they keep your surface area alive</p></li><li><p>Trust is not a weakness: as your scope grows, being deeply expert in everything is impossible and trying will break you</p></li><li><p><strong><a href="https://youtube.com/live/gZ3_lxMamqQ?feature=share">Join me for the live stream (or watch the recording) on Monday April 13th at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-gZ3_lxMamqQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gZ3_lxMamqQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gZ3_lxMamqQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2><strong>The Technical Tightrope: Staying Sharp When Strategy Starts Eating Your Calendar</strong></h2><p>There&#8217;s a Reddit post I came across in the ExperiencedDevs community that asked a question I&#8217;ve heard a hundred times: &#8220;How do you stay technically sharp when your role becomes more strategic?&#8221;</p><p>It sounds simple. It&#8217;s not.</p><p>This is one of those things that sneaks up on you gradually. One day you&#8217;re writing code most of your day. Then the meetings start. Then the strategy conversations. Then you look up and you&#8217;re spending maybe two or three hours actually touching code out of an eight-hour day. And a quiet panic sets in: am I losing it?</p><p>I&#8217;ve been there. I was a startup engineering manager about a year into my career. I was coding for long stretches -- probably unhealthy stretches -- and then my role started pulling me toward strategy. Over time, I could feel the gap forming. So I want to share what I&#8217;ve learned about staying sharp without trying to pretend your role hasn&#8217;t changed.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=leZnc8IxhyE">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-leZnc8IxhyE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;leZnc8IxhyE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/leZnc8IxhyE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>First: Know What &#8220;Technical Enough&#8221; Means for Your Role</strong></h2><p>Before you panic about losing your technical edge, step back and ask yourself: what does your role actually require from a technical perspective?</p><p>This is different for everyone. For some people in leadership or management positions, technical depth means being able to hold your own in an architectural discussion. For others, it means knowing enough to ask the right questions and direct the right people. For others still, it means being able to jump into the codebase when needed.</p><p>My litmus test is this: if you find yourself constantly deferring in technical conversations -- like every single time the discussion gets technical, you&#8217;ve got nothing to contribute and have to say &#8220;let me get back to you on that&#8221; -- that&#8217;s a signal worth paying attention to. It doesn&#8217;t mean you need to be coding eight hours a day. It means there&#8217;s probably a gap forming that&#8217;s going to cause problems in your strategic conversations too.</p><p>Understanding the expectation is step one. Once you know that, you can be intentional about what staying sharp actually looks like for you specifically.</p><h2><strong>The Minimum Baseline: Design Reviews and Code Review Exposure</strong></h2><p>If I had to name the minimum surface area for staying technically engaged, I&#8217;d say two things: design reviews and code review exposure.</p><p>Design reviews are valuable even when they&#8217;re outside your direct area of ownership. I manage multiple sub-teams, and I make a point to get pulled into design reviews for teams I don&#8217;t directly manage when I can. I&#8217;m not there to make the decisions -- I&#8217;m there to maintain context. Even if a design discussion is in an area I&#8217;m not an expert on, the more often I&#8217;m in the room, the more I can say &#8220;I&#8217;ve seen this pattern come up before&#8221; or &#8220;I know who to loop in on this.&#8221;</p><p>Code reviews work the same way. The goal isn&#8217;t to gate every single pull request. The goal is to be automatically on the exposure path. If you&#8217;re never included in code review cycles, you&#8217;ve got to go out of your way to discover what&#8217;s changing in your codebase. That friction is enough that most people just stop looking. Being looped in -- even just as a passive observer on some reviews -- keeps the surface area alive.</p><p>Neither of these requires you to be the approver or the decision-maker. They just keep you in the conversation so you don&#8217;t fall completely off the map.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Pull in the Experts Early -- and Work With Them</strong></h2><p>One situation that comes up constantly in strategic roles is being in a conversation that slowly slides into a technical design discussion. Maybe it starts as a product conversation. And then someone draws a box on a whiteboard. And suddenly you&#8217;re three levels deep into architecture.</p><p>If you&#8217;re in those moments and you know you&#8217;re not the right technical expert, there&#8217;s a wrong way and a right way to handle it.</p><p>The wrong way: try to bluff through it, make design decisions you&#8217;re not qualified to make, and figure it out later. This is how technical debt disguised as strategy gets born.</p><p>The other wrong way: immediately hand it off entirely and walk away. &#8220;Not my area, talk to Bob.&#8221; This protects you in the short term, but it means the next time this exact situation comes up, you&#8217;re in the same position -- or worse.</p><p>The right way: identify early that this conversation needs technical depth you don&#8217;t have, pull in the right people, and work alongside them rather than delegating and disappearing. The distinction matters. When you work with the expert instead of just handing it off, you pick up context. You learn the codebase area. You understand the tradeoffs they&#8217;re weighing. And the next time this topic comes up, you&#8217;re not starting from zero.</p><p>I&#8217;ve experienced this recently with a team member moving to a different team. He took deep codebase expertise with him, and the immediate reality for me is that I probably need to step more directly into some of that code for a period -- not to become the expert, but to reduce the gap while the team adjusts. That&#8217;s not comfortable. But it&#8217;s the right call given the context.</p><h2><strong>Side Projects Are Still on the Table</strong></h2><p>This one is contentious and I want to address it directly.</p><p>If there&#8217;s a technology area where you feel like you&#8217;re falling behind and your day job isn&#8217;t giving you exposure to it, side projects are still a valid option. I know people push back on this. You shouldn&#8217;t have to work outside of work hours. That&#8217;s a fair perspective.</p><p>But I separate &#8220;should&#8221; from &#8220;can.&#8221; If there&#8217;s a genuine gap that matters to you, and the path to closing it is available outside of work, it&#8217;s worth at least considering. It doesn&#8217;t have to be something you ship. It doesn&#8217;t have to be polished. Just build something with the technology. I built a website with Astro recently just to get my hands on it. I tried deploying something with Kubernetes just to understand it better. These low-stakes explorations build real intuition even if the project goes nowhere.</p><p>You can do something similar with design patterns and software architecture -- <strong><a href="https://www.devleader.ca/2026/04/12/building-a-vs-codestyle-extension-system-in-c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-135">building an extension system in C# using a plugin architecture approach</a></strong> is exactly the kind of hands-on project that builds the kind of deep understanding that strategic conversations rely on. Small things, real exposure.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>The Part Nobody Wants to Talk About: Trust</strong></h2><p>Here&#8217;s the uncomfortable truth that I think a lot of people avoid: as your scope and responsibility grow, it becomes literally impossible to maintain deep technical expertise across everything you&#8217;re responsible for.</p><p>Not difficult. Impossible.</p><p>If you&#8217;re a deeply technical individual contributor today and your role evolves into one where you&#8217;re responsible for three different teams across three different technical areas, you won&#8217;t be the domain expert in all three. That&#8217;s not a failure. That&#8217;s the math of the situation.</p><p>The shift you have to make -- and it&#8217;s genuinely hard -- is trusting that other people on your team do have that expertise. This isn&#8217;t about abdicating responsibility. It&#8217;s about recognizing that your value in the role has shifted. You&#8217;re not valuable because you know every line of code. You&#8217;re valuable because you can make good decisions with the technical input you receive, connect the right people, and remove the right obstacles.</p><p>I&#8217;ve seen leaders try to stay so technically involved in everything that they become bottlenecks. Every decision routes through them. Every pull request waits on them. Every design needs their approval. It feels like technical leadership but it&#8217;s actually the opposite -- it&#8217;s a scaling failure dressed up as technical rigor.</p><p>If you find yourself doing that, or being tempted to, it&#8217;s worth asking whether the drive to stay deeply technical is serving your team or serving your ego. Sometimes it&#8217;s both. But being honest about that distinction matters.</p><h2><strong>What This Actually Looks Like in Practice</strong></h2><p>To bring it together: staying technically sharp as a strategic leader isn&#8217;t about reclaiming your identity as an individual contributor. It&#8217;s about maintaining enough surface area that you can be useful in technical conversations and make good decisions when they matter.</p><p>For me personally, that means:</p><ul><li><p>Getting invited to design reviews, even when they&#8217;re adjacent to what I directly manage</p></li><li><p>Being on the exposure path for code reviews without trying to gate every change</p></li><li><p>Pulling technical experts in early and working with them rather than just handing things off</p></li><li><p>Being intentional about exploring areas where I feel gaps forming</p></li><li><p>And most importantly -- knowing where the line is between &#8220;I need to understand this&#8221; and &#8220;I need to trust someone else here&#8221;</p></li></ul><p>The <strong><a href="https://www.devleader.ca/2026/04/07/plugin-architecture-in-c-the-complete-guide-to-extensible-net-applicatio?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-135">plugin architecture patterns I&#8217;ve been covering on the blog</a></strong> are a good example of this kind of intentional technical exposure -- even if you&#8217;re not shipping plugin systems at work, understanding the design principles keeps your architectural thinking sharp.</p><p>Don&#8217;t panic about the shift. It&#8217;s natural. The people who handle it well are the ones who stay honest with themselves about what they know, what they don&#8217;t know, and who to bring in when the gap matters.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/staying-technically-sharp-when-your?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/staying-technically-sharp-when-your?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/staying-technically-sharp-when-your/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/staying-technically-sharp-when-your/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EtJV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EtJV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!EtJV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!EtJV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5b1d6a-7119-4a74-a16d-9eb4858ca328_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Have I Finally Moved Away From Visual Studio?]]></title><description><![CDATA[Dev Leader Weekly 134]]></description><link>https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual</link><guid isPermaLink="false">https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 06 Apr 2026 05:26:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iXjt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp" 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://www.devleader.ca/2026/04/06/have-i-finally-moved-away-from-visual-studio-dev-leader-weekly-134" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iXjt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iXjt!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:123072,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/04/06/have-i-finally-moved-away-from-visual-studio-dev-leader-weekly-134&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/193318918?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iXjt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!iXjt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4b3c49c-f94a-4055-bbb6-50c7799728d0_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Copilot CLI finally pulled me from Visual Studio</p></li><li><p>Cross-repo AI customization still feels like an unsolved problem</p></li><li><p>Roslyn analyzers are surprisingly effective AI guardrails</p></li><li><p><strong><a href="https://youtube.com/live/CKeKGTAFDCg?feature=share">Join me for the live stream (or watch the recording) on Monday, April 7 at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><div id="youtube2-CKeKGTAFDCg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;CKeKGTAFDCg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/CKeKGTAFDCg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Have I Finally Moved Away From Visual Studio?</strong></h2><p>I have been a Visual Studio person my entire career. Not VS Code -- the &#8220;real&#8221; Visual Studio. The classic one. The big, beautiful, opinionated IDE that .NET developers have lived in for decades. I&#8217;m a UI guy. I like a visual git tree. I like clicking things. That&#8217;s just how my brain works, and I&#8217;ve never apologized for it.</p><p>So it is genuinely strange for me to say: I&#8217;m barely opening Visual Studio anymore.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=fZznPPvbfp4">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-fZznPPvbfp4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fZznPPvbfp4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fZznPPvbfp4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Why Copilot CLI Clicked For Me</strong></h2><p>Over the past year I&#8217;ve tried a lot of things -- VS Code, Cursor, Claude Desktop, GitHub Copilot with cloud agents. And I want to be really clear here: I&#8217;m not saying Copilot CLI is <em>better</em> than the others, or that what worked for me will work for you. What I can say is that <strong>Copilot CLI is the tool that got me glued to it right now</strong>, and I think I&#8217;ve finally figured out why.</p><p>The cloud agent workflow I was using heavily before let me queue up work and check on it whenever. Truly async. That was a game-changer for parallel productivity. But sitting and watching a local agent chew through things on my computer while I wait? That pattern never really clicked for me. Copilot CLI hit a different sweet spot -- it brought the productivity I wanted back to the terminal context in a way that finally matched how I think.</p><p>Honestly, it might just be timing. The tool has matured, the integrations around it have improved, and it caught me at the right moment. That&#8217;s a real thing. Don&#8217;t dismiss it.</p><p>If you&#8217;re curious how Copilot as a platform compares to other frameworks like Semantic Kernel for building your own AI applications in .NET, I went deep on that comparison recently -- check out <strong><a href="https://www.devleader.ca/2026/03/30/github-copilot-sdk-vs-semantic-kernel-when-to-use-each-in-c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">GitHub Copilot SDK vs Semantic Kernel: When to Use Each in C#</a></strong>.</p><h2><strong>The Cross-Repo Problem Doesn&#8217;t Feel Fully Solved Yet</strong></h2><p>Here&#8217;s where things get philosophically tricky for me. As I&#8217;ve leaned harder into Copilot CLI, I&#8217;ve been building up a decent library of <strong>skills, MCP servers, and custom agent definitions</strong>. And they&#8217;re useful -- genuinely useful. A skill that remembers how I like to structure tests, an MCP server that talks to a specific API, an AGENTS.md file with project conventions. All good things.</p><p>But I work across multiple repos. I have a <strong><a href="https://www.brandghost.ai/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">social media scheduler</a></strong>, <strong><a href="https://www.devleader.ca/?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">my blog</a></strong>, a dependency injection library, some MCP helpers, and a vibe-coded game framework I&#8217;m building purely for the learning experiment. These projects are completely different. And yet my <strong>guiding principles are almost entirely consistent across all of them</strong> -- I want composition over inheritance, I want certain naming conventions, I want a specific approach to async code.</p><p>Right now those cross-cutting principles live in project-specific files. That&#8217;s not right. I&#8217;m duplicating intent in every repo.</p><p>GitHub Copilot does support <strong><a href="https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot">repository-wide custom instructions</a></strong> via <code>.github/copilot-instructions.md</code>, path-specific instruction files in <code>.github/instructions/</code>, and <code>AGENTS.md</code> files anywhere in the repo tree -- and VS Code is moving toward an <strong><a href="https://code.visualstudio.com/docs/copilot/copilot-customization">agent plugin marketplace</a></strong> that can bundle customizations into installable plugins. That&#8217;s directionally right.</p><p>But right now it still feels clunky. There&#8217;s no clean answer for &#8220;here are my global developer principles that apply everywhere I work, regardless of repo.&#8221; I&#8217;m starting to move my reusable skills into a shared repository and pull them in as a plugin -- but we&#8217;re still early, and the tooling around this is evolving fast.</p><p><em><strong>Actionable Tip:</strong></em> Start separating your Copilot customizations into two buckets right now: <strong>repo-specific</strong> (your architecture decisions, your test patterns, your naming conventions for <em>this</em> project) and <strong>cross-cutting</strong> (your general coding principles, your preferred patterns, your communication style with the AI). Even if the tooling to share the cross-cutting ones isn&#8217;t perfect yet, having the separation in your head will make it much easier to migrate when the ecosystem matures.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Build a Habit of Turning Wins Into Reusable Skills</strong></h2><p>One thing I&#8217;ve been deliberately trying to do: every time I finish a session that worked well with Copilot, I stop and ask myself -- <strong>&#8220;Am I going to want to do this again?&#8221;</strong></p><p>If the answer is even <em>maybe</em>, I ask Copilot to turn the approach into a skill.</p><p>It&#8217;s not about capturing everything. Most things aren&#8217;t worth it. But when I grind through something painful and finally get to a clean result -- a refactoring approach that worked, an analysis workflow that surfaced useful insights, a code generation pattern that saved me hours -- that&#8217;s exactly the kind of thing I want to be able to invoke next time without rediscovering the process.</p><p>The pattern I ran into recently is a good example. I had Copilot attempt a sweeping test refactor across a codebase with some concurrency problems. It didn&#8217;t solve the problem -- I honestly didn&#8217;t expect it to. But by the end I had a clear list of what <em>didn&#8217;t</em> work, which let me identify the real root cause and design a more targeted incremental approach.</p><p>That incremental approach is something I want to formalize. When I go to do a sweeping refactor again, I want a skill that structures the approach: small changes, consistent reporting, flag outliers, don&#8217;t try to boil the ocean in one shot. I haven&#8217;t nailed that skill yet, but that&#8217;s the kind of meta-workflow capture I&#8217;m working toward.</p><h2><strong>Roslyn Analyzers Are Surprisingly Good AI Guardrails</strong></h2><p>Here&#8217;s the most genuinely useful thing I&#8217;ve discovered in this vibe coding experiment: <strong>when AI keeps making the same mistake, the right fix is a Roslyn analyzer, not more prompting.</strong></p><p>The game framework project is intentionally hands-off for me -- I&#8217;m letting AI build the whole thing to learn about architectural drift and where guardrails matter. And it ran into two serial offenders that it could not stop doing on its own.</p><p><strong>Mistake 1: DTOs with multiple constructors.</strong> The AI was building data transfer objects with three or four constructors. The JSON serializer would try to guess which one to use and fail -- every single time. Hours of spinning on this. Once I saw the pattern, I did two things: created a Roslyn analyzer that makes it a compile error to have a DTO with multiple constructors, then fixed all the existing violations. Problem did not come back.</p><p><strong>Mistake 2: Wrong collection injection type.</strong> The AI kept debating with itself -- in the chat window, while thinking -- about whether it could use <code>IEnumerable&lt;T&gt;</code> for dependency injection or not. It can. But it would sometimes try <code>IList&lt;T&gt;</code>, sometimes <code>IReadOnlyCollection&lt;T&gt;</code>, and sometimes just get confused and do something broken. So I put a Roslyn analyzer in place: always use <code>IReadOnlyCollection&lt;T&gt;</code> for injected collections. Anything else is a compile error.</p><p>The pattern is: <strong>identify the class of mistake, make it a compile-time impossibility, then let Copilot continue knowing that failure mode is structurally ruled out.</strong> It&#8217;s not just about AI -- this is good software practice in general. The Microsoft Roslyn SDK makes <strong><a href="https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix">writing these analyzers more approachable than you might think</a></strong> -- you can author a diagnostic that fires in the editor and a code fix that resolves it, all in C#.</p><p>For a deeper look at how source generators and Roslyn-based code generation work in practice, check out <strong><a href="https://www.devleader.ca/2026/04/01/realworld-c-source-generator-examples-tostring-mapping-and-serialization?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">Real-World C# Source Generator Examples: ToString, Mapping, and Serialization</a></strong> and <strong><a href="https://www.devleader.ca/2026/03/30/c-source-generator-attributes-generating-code-with-forattributewithmetadataname?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">C# Source Generator Attributes: Generating Code with ForAttributeWithMetadataName</a></strong> -- same Roslyn SDK, different angle.</p><p><em><strong>Actionable Tip:</strong></em> When an AI agent makes the same mistake three or more times in a session, that&#8217;s a signal. Don&#8217;t write a longer prompt. Write an analyzer. It permanently encodes the constraint in the codebase and removes the failure mode from the AI&#8217;s decision space entirely.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Managing Multiple Parallel Sessions Without Losing Your Mind</strong></h2><p>At any given time I have somewhere between three and eight Copilot sessions running across different projects. That&#8217;s not a flex -- it&#8217;s kind of a mess, honestly, and I&#8217;m not sure my brain is properly equipped for it long-term.</p><p>The context switching is real. Checking in on each session, figuring out where it is in its current task, deciding whether to redirect it, queue the next instruction, and move on to the next tab -- it&#8217;s a new kind of cognitive load. The <em>productivity</em> feels genuinely high. The <em>quality</em> is a more honest question.</p><p>The vibe-coded game framework is a perfect example of where that quality question bites you. I let it run far enough that it had the client and server so tightly coupled that when I asked it to split out a visual debug layer, it spent hours untangling something that should have been a clean separation from day one. Vibe coding will give you working code faster than you can imagine -- it will also give you architectural debt faster than you can imagine. That tradeoff is real and you need to be eyes-open about it.</p><p>For complex multi-agent patterns where you actually want structured, controlled AI orchestration -- not just tabs of chaos -- I wrote about exactly that recently: <strong><a href="https://www.devleader.ca/2026/03/31/build-a-multiagent-analysis-system-with-github-copilot-sdk-in-c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-134">Build a Multi-Agent Analysis System with GitHub Copilot SDK in C#</a></strong> walks through building a real pipeline where agents have defined roles and don&#8217;t just wander off in random directions.</p><p><em><strong>Actionable Tip:</strong></em> Before letting a session run for more than a few hours of iteration, define the intended layering of your code explicitly -- in a comment, in a skill, in AGENTS.md, somewhere. Once coupling creeps in across layers, the AI will replicate that coupling endlessly. The cost of fixing it later is far higher than the cost of naming it upfront.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/have-i-finally-moved-away-from-visual/comments"><span>Leave a comment</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r6p-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r6p-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!r6p-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!r6p-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4be470e5-2c06-463a-9d29-b6db9319974f_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Should You Talk To Your Manager About Burnout?]]></title><description><![CDATA[Dev Leader Weekly 133]]></description><link>https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about</link><guid isPermaLink="false">https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 29 Mar 2026 20:32:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O2w5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp" 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://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O2w5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O2w5!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:125680,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/03/29/should-you-talk-to-your-manager-about-burnout-dev-leader-weekly-133&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/192543227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O2w5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!O2w5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F123f91c3-0bbc-47e4-b6f9-66aac8aa99d8_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Burnout builds slowly -- it sneaks up on you</p></li><li><p>Trust with your manager enables harder conversations</p></li><li><p>Know what you want before raising burnout</p></li><li><p>The live stream is skipped this week -- I&#8217;m on-call for work.</p></li></ul><div><hr></div><h2><strong>Should You Talk To Your Manager About Burnout?</strong></h2><p>I came across a post on the <a href="https://www.reddit.com/r/ExperiencedDevs/">ExperiencedDevs subreddit</a> that I wanted to dig into. A developer is feeling completely burnt out -- dealing with bureaucracy, red tape, slow-moving processes -- and they&#8217;re preparing for an upcoming 1:1 with their manager. Their question: how do I even start this conversation?</p><p>It&#8217;s the right question to ask. And getting it right matters. So let me share my thoughts.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=A_A0aqfwznM">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-A_A0aqfwznM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;A_A0aqfwznM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/A_A0aqfwznM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Burnout Doesn&#8217;t Happen Overnight</strong></h2><p>This is the part a lot of people underestimate. When we talk about burnout, we&#8217;re not talking about &#8220;it was a rough week.&#8221; We&#8217;re talking about something that builds over weeks, months -- for some people, years.</p><p>Because of that time scale, it has this unsettling ability to creep up on you. You don&#8217;t notice it day-to-day. You don&#8217;t even necessarily notice it week-to-week. And then one day you&#8217;re sitting in a meeting, resenting basically everything around you, wondering how you got there.</p><p>I think about this like weight. If I stop actively paying attention to what I&#8217;m eating, I&#8217;ll pack on weight without noticing -- not daily, not even monthly. But a year in, someone I haven&#8217;t seen in a while will look at me differently. That&#8217;s what burnout does. The feedback loop is so slow that by the time you&#8217;re aware of it, it&#8217;s already been compounding for a while.</p><p>I work at Microsoft now, and I sometimes notice this with some processes. Certain things I have to do that I&#8217;m not enthusiastic about -- combined with the process overhead involved -- the feeling of disengagement grows fast, especially when you stack those things up. I wasn&#8217;t immune to this at startups either. The nature of it was different (fast chaos versus slow bureaucracy), but the burnout was still real.</p><p>What I actually find hopeful about the person who posted on Reddit is that <strong>they noticed</strong>. That awareness -- even if it came later than ideal -- is worth something. A lot of people just stay stuck on autopilot and let it bleed into every other part of their life.</p><p><em><strong>Actionable Tip:</strong></em> Build yourself some kind of regular check-in. Not a formal process -- just a moment to ask: is this still just a rough patch, or is this a pattern? If you keep telling yourself &#8220;it&#8217;ll get better&#8221; month after month, take that seriously.</p><h2><strong>Your Relationship With Your Manager Matters More Than You Think</strong></h2><p>Before we talk mechanics, I want to zoom out.</p><p>The quality of that burnout conversation in your 1:1 will be largely shaped by the trust and respect you&#8217;ve built with your manager. That&#8217;s not something you can manufacture on the spot when you need it.</p><p>From my experience on both sides of this -- as someone who has had these conversations with my own managers, and as a manager trying to create that space for my team -- the goal should be a relationship where a difficult conversation feels like it&#8217;s coming from a place of mutual investment, not conflict.</p><p>I&#8217;ve had employees who could reach out to me between 1:1s when something important came up. Sometimes they&#8217;d say something like &#8220;if you take your manager hat off for a second, can we talk about this?&#8221; That kind of thing is a signal back to me that at least in that working relationship, I was building what I was trying to build.</p><p>Not every manager is going to be equally safe to have this conversation with. That&#8217;s just reality. But I&#8217;d encourage you to keep working towards that baseline -- because when you really need it, it matters a lot.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>Don&#8217;t Walk In With a Complaint List (Without Context)</strong></h2><p>Here&#8217;s where I want to be direct, because this is where a lot of these conversations go sideways.</p><p>You probably do have a list. A list of:</p><ul><li><p>Things that frustrate you</p></li><li><p>Things that feel broken</p></li><li><p>Things that drain your energy</p></li></ul><p>And that list is good -- it means you&#8217;ve done the inventory work. The problem isn&#8217;t having the list. The problem is walking into that 1:1 and unloading it item by item without any framing.</p><p>Put yourself in your manager&#8217;s shoes. What happens after &#8220;this sucks, that sucks, and this other thing also sucks&#8221;? Are they supposed to:</p><ul><li><p>Fix all of it?</p></li><li><p>Escalate everything?</p></li><li><p>Nod sympathetically?</p></li></ul><p>If you haven&#8217;t signaled what you&#8217;re hoping for in terms of support, there&#8217;s a decent chance they don&#8217;t know either -- and then:</p><ul><li><p>Nothing changes, and you&#8217;re more frustrated than before</p></li><li><p>... Or they try navigating this in ways that aren&#8217;t effective for you</p></li></ul><p>The awareness piece still matters. Maybe some of the things on your list are systemic problems your manager is already aware of but can&#8217;t directly control. Raising them anyway is useful -- the more signal they have, the better they can prioritize and escalate. But awareness alone isn&#8217;t enough if you&#8217;re expecting action.</p><h2><strong>Know What You Actually Want From the Conversation</strong></h2><p>This is the step most people skip. And it makes everything harder.</p><p>Before you go into that 1:1, ask yourself: what are you actually hoping to get out of this? Some legitimate answers:</p><ul><li><p>&#8220;I just want my manager to know this is happening.&#8221;</p></li><li><p>&#8220;I want help solving one specific thing.&#8221;</p></li><li><p>&#8220;I want to know if I have any agency to drive change here.&#8221;</p></li><li><p>&#8220;I want to understand if this is even fixable in this environment.&#8221;</p></li></ul><p>These are all fine answers. But they lead to very different conversations.</p><p>My recommendation: pick one item from your list -- the one that&#8217;s bothering you most -- and make that the focus. Something like: &#8220;I&#8217;m finding our planning meetings really disengaging. I understand the purpose, but I don&#8217;t think we&#8217;re getting the value we should be. Can we talk about that?&#8221; Then signal your expectations: &#8220;Is this something you can help drive? Or is this something I could take some ownership of?&#8221;</p><p>That framing -- here&#8217;s the problem, here&#8217;s what I&#8217;d like to do about it -- is going to land much better than a grievance dump.</p><p>And if you genuinely don&#8217;t know what you want yet, that&#8217;s okay too. You can frame it as raising awareness: &#8220;I&#8217;m starting to notice some patterns that are contributing to disengagement, and I wanted to flag it early so we can start having that conversation. I&#8217;ll bring more specifics as I understand it better.&#8221; That&#8217;s still useful. It opens the door without pressure to have everything figured out right now.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>What Happens If Nothing Changes</strong></h2><p>I want to be honest with you here.</p><p>If you raise this, frame it well, communicate your expectations clearly -- and still nothing moves -- that&#8217;s information. At some point, you have to decide whether this environment is working for you.</p><p>I&#8217;ve been in that position in my career. My gut is always to lean into it first: if I want to be here, I want to drive change. But if I&#8217;m genuinely trying to drive positive change and I&#8217;m not getting any support for it, that&#8217;s okay. It just means it&#8217;s not the right environment for me.</p><p>That&#8217;s a personal decision. I can&#8217;t tell you when the right time is -- it looks different for everyone. But I can tell you that staying indefinitely in a situation that&#8217;s burning you out, after you&#8217;ve already tried to address it, tends not to end well for anyone.</p><p>The first step is still the same: have the conversation. You might be surprised. You might not. Either way, you&#8217;ll know more than you do now.</p><p>If you&#8217;re also questioning whether software engineering is the right path at all -- separate from the current burnout -- it&#8217;s worth thinking through what&#8217;s actually driving that feeling. I explored something adjacent in <strong><a href="https://www.devleader.ca/2026/03/23/is-there-an-roi-on-learning-c-dev-leader-weekly-132?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-133">last week&#8217;s Dev Leader Weekly on whether there&#8217;s an ROI on learning C#</a></strong> -- sometimes the burnout isn&#8217;t about the job, it&#8217;s about feeling like the craft itself isn&#8217;t rewarding anymore.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/should-you-talk-to-your-manager-about?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9-Fz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9-Fz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!9-Fz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!9-Fz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2dcdb6-d208-42da-b706-6b6bebe1a71d_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item><item><title><![CDATA[Is There an ROI on Learning C#?]]></title><description><![CDATA[Dev Leader Weekly 132]]></description><link>https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c</link><guid isPermaLink="false">https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 23 Mar 2026 06:34:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ncDZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp" 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://www.devleader.ca/2026/03/23/is-there-an-roi-on-learning-c-dev-leader-weekly-132/2026/03/15/singleton-design-pattern-in-c-complete-guide-with-examples?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ncDZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ncDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129050,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/03/23/is-there-an-roi-on-learning-c-dev-leader-weekly-132/2026/03/15/singleton-design-pattern-in-c-complete-guide-with-examples?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/191835646?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ncDZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!ncDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e6229ea-4232-40e5-b94e-10f5157bc7ff_1536x1024.webp 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"><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"><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"><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"><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><h2><strong>TL; DR:</strong></h2><ul><li><p>Foundations beat language-specific trivia every time</p></li><li><p>AI lets you build without knowing a language -- until you get stuck</p></li><li><p>Yes, learn C# -- but learn the <em>why</em>, not just the <em>how</em></p></li><li><p>Sorry, no live stream! I will be busy on-call this week for work.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p></li></ul><div><hr></div><h2><strong>The ROI on Learning C# (It&#8217;s Not What You Think)</strong></h2><p>I had a great question come in on one of my <strong><a href="https://codecommute.com/videos/">Code Commute videos</a></strong>: do I think there&#8217;s an ROI on learning C#?</p><p>The short answer is yes. But the reason might surprise you -- because honestly, the reason has almost nothing to do with C#.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=b0dLcR1XljI">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-b0dLcR1XljI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;b0dLcR1XljI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/b0dLcR1XljI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>My Obvious Bias (and Why I&#8217;m Acknowledging It)</strong></h2><p>Full transparency: I&#8217;m a C# developer. I&#8217;ve been working with C# for as long as I can remember -- since my first year of university. The vast majority of my technical content is C# and .NET. So yes, I have an obvious bias here.</p><p>But I want to be really clear about something. I&#8217;m not a zealot. I don&#8217;t think C# is the best language ever created. I like using it because it works really well for me in basically every situation I&#8217;ve found myself in. That doesn&#8217;t mean it&#8217;s objectively superior to anything else. I don&#8217;t think &#8220;best language&#8221; is even a meaningful concept.</p><p>So when I say yes, learn C# -- I&#8217;m not saying it because I think you should worship at the altar of C#. I&#8217;m saying it for a different reason entirely.</p><h2><strong>The Real Reason: Foundational Knowledge Transfers Everywhere</strong></h2><p>Here&#8217;s my actual argument: <strong>the reason learning C# has ROI has nothing to do with C# specifically.</strong></p><p>What I mean is this: If you invest your mental energy into deeply understanding things at a <em>foundational</em> level...</p><ul><li><p>how garbage collection works as a concept</p></li><li><p>what it means for a language to be managed</p></li><li><p>what design patterns exist and why</p></li><li><p>how different types of systems handle memory and concurrency</p></li></ul><p>... that knowledge transfers everywhere. It helps you make better decisions regardless of what language or framework you&#8217;re working in.</p><p>The trap I see people fall into is treating programming languages like trivia. Like, how well do you know the very specific edge cases of this very specific API in this very specific runtime? I&#8217;ve seen &#8220;C# interview questions&#8221; that I genuinely had to look up answers to, despite having written C# for most of my career. And that tells you something. That trivia-level knowledge has always had diminishing returns.</p><p>Compare it to cars. I don&#8217;t need to know the exact inner workings of every component in the specific model I drive. But it&#8217;s genuinely useful for me to understand what a turbocharged engine means in practice, why different oil viscosities exist, what the difference between a V4 and a V8 actually translates to in real-world performance. That conceptual understanding helps me make decisions. The hyper-specific trivia about a particular vehicle? Much lower ROI.</p><p>Software engineering is the same. Understanding patterns like the <strong><a href="https://www.devleader.ca/2026/03/15/singleton-design-pattern-in-c-complete-guide-with-examples?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132">Singleton pattern</a></strong> or the <strong><a href="https://www.devleader.ca/2026/03/02/strategy-design-pattern-in-c-complete-guide-with-examples?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132">Strategy pattern</a></strong> isn&#8217;t about C# syntax. It&#8217;s about learning a vocabulary and a set of solutions to recurring problems -- one that applies no matter what language you&#8217;re writing in next year.</p><h2><strong>Where AI Changes the Equation</strong></h2><p>With how much AI is reshaping how we build software, I think deep language-specific knowledge is becoming <em>less</em> relatively valuable -- and foundational knowledge is becoming <em>more</em> valuable.</p><p>Here&#8217;s a concrete example from my own experience. I wanted to <strong><a href="https://github.devleader.ca/google-psi-mcp/">build a small MCP server</a></strong> -- literally just a convenience wrapper around an existing API. My goal was that if anyone else wanted to use it, they could download it without any setup friction. No runtime to install, no build steps to fumble through.</p><p>I was chatting with GitHub Copilot about it, and it suggested I could build it in Go and ship it as a self-contained binary. It also offered the option of a self-contained .NET executable. So I said: do both.</p><p>The result was an MCP server implemented in both Go and C# that parallel each other in features. And I have never in my life read a line of Go code. Not a flex -- it&#8217;s a demonstration. I did not need to know Go to ship a working Go program. The AI handled the implementation details. I handled the intent, the architecture decisions, the debugging when things weren&#8217;t right.</p><p>If you want to explore building your own AI-powered tooling, I&#8217;ve been writing a lot about the <strong><a href="https://www.devleader.ca/2026/03/02/getting-started-with-github-copilot-sdk-in-c-installation-setup-and-first-conversation?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132">GitHub Copilot SDK</a></strong> on the blog lately, including <strong><a href="https://www.devleader.ca/2026/03/23/build-an-ai-cli-developer-tool-with-github-copilot-sdk-in-c?utm_source=devleader_weekly&amp;utm_medium=newsletter&amp;utm_campaign=dlw-132">building an AI CLI developer tool</a></strong> that&#8217;s a great starting point.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>But Foundations Are Why I Didn&#8217;t Get Stuck</strong></h2><p>Here&#8217;s the nuance though. I could build in Go without knowing Go -- <em>because</em> I have a solid software engineering foundation.</p><p>When I hit a question like &#8220;do I need compile-time dependencies or runtime dependencies for this?&#8221; I could ask that question in a meaningful way. I understood what compile time means, what a runtime is, what the difference implies. Those aren&#8217;t Go-specific concepts. They&#8217;re foundational. And having them let me ask Copilot the right questions to unblock myself quickly.</p><p>Without that foundation, you could still make progress. You could paste errors into an LLM and say &#8220;it&#8217;s not working&#8221; over and over. You would eventually get somewhere. But the <em>effectiveness</em> -- the ROI, since that&#8217;s what we&#8217;re talking about -- drops significantly.</p><p><em><strong>Actionable Tip:</strong></em> When you&#8217;re learning a new language or framework, actively ask yourself: &#8220;What is the <em>general principle</em> behind this? Where else have I seen this pattern?&#8221; That habit compounds over time more than any amount of syntax memorization.</p><h2><strong>There Are Still Cases Where Deep Knowledge Matters</strong></h2><p>I don&#8217;t want to wave away deep expertise entirely. There are absolutely situations where it matters enormously.</p><p>One of my teams is working on a hyperscale caching system. The performance requirements are extreme. And in that context, not having deep knowledge of how C# and the .NET runtime work at a granular level means you can&#8217;t get to the optimizations needed. The stakes are high enough that the hyper-specific knowledge becomes genuinely worth the investment.</p><p>But the engineer working on this didn&#8217;t arrive with 40 years of deep .NET internals knowledge. They&#8217;re a strong engineer with solid fundamentals who is <em>going deep</em> because the situation demands it. The foundations got them there. The depth came as needed.</p><p>That&#8217;s the model I think works best: <strong>strong foundations that let you go deep when you need to, rather than going deep on specifics and hoping they transfer.</strong></p><h2><strong>The Bigger Picture: AI is Opening Doors</strong></h2><p>One thing I genuinely love about the current moment in software development is that it&#8217;s lowering the barrier of entry. I&#8217;ve talked with product managers on my team who, when presented with the question &#8220;could you build a small web service using AI tools?&#8221;, would say yes -- even though they&#8217;d never considered themselves programmers.</p><p>That&#8217;s amazing. There&#8217;s no magic behind the curtain. Getting into software development is hard, and AI is making it more accessible without eliminating the hard parts that actually matter.</p><p>My only hope for people entering this way is that they stay curious. That as they start seeing things come together, they don&#8217;t just accept &#8220;it works&#8221; as the end of the inquiry. The developers who get really effective over time are the ones who keep asking why. What does this actually do? Why did the AI make this choice? What would happen if I changed this?</p><p>That curiosity is what turns AI-assisted output into actual expertise.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/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">Dev Leader Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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><h2><strong>So -- Is There an ROI on Learning C#?</strong></h2><p>Yes. Absolutely.</p><p>But the ROI isn&#8217;t really in memorizing C#-specific trivia. It&#8217;s in building a mental model of software engineering through the lens of a real, production-grade language with real patterns and real tradeoffs. C# gives you garbage collection, async/await, strong typing, rich framework support, and a world-class ecosystem. Learning those things <em>conceptually</em> -- understanding what they mean and why they exist -- is where the value lives.</p><p>The specific syntax? The edge cases? Those you can look up. The understanding of <em>why</em> -- that&#8217;s what AI can&#8217;t fully replace yet, and what makes every other language and framework easier to pick up.</p><p>Learn C#. Learn it deeply enough to understand the fundamentals. Then take those fundamentals everywhere.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/p/is-there-an-roi-on-learning-c/comments"><span>Leave a comment</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><ul><li><p>Join me and other software engineers in the <strong><a href="https://sidestack.io/devleader">private Discord community</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpathtotech?sub_confirmation=1">Resume reviews and interview guidance</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderpodcast?sub_confirmation=1">Software engineering podcast and livestreams</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@CodeCommute?sub_confirmation=1">My Code Commute vlogs are on YouTube</a></strong>!</p></li><li><p><strong><a href="https://www.youtube.com/@devleaderBTS?sub_confirmation=1">All of my weekly vlogs are on YouTube</a></strong>!</p></li><li><p>Remember to check out <strong><a href="https://www.devleader.ca/courses/">my courses</a></strong>, including <strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp?ref=nick-cosentino">this awesome discounted bundle for C# developers</a></strong>:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qUnw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qUnw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:705,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;C# From Zero to Hero - Dometrain Course&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="C# From Zero to Hero - Dometrain Course" title="C# From Zero to Hero - Dometrain Course" srcset="https://substackcdn.com/image/fetch/$s_!qUnw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!qUnw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82086dd4-4948-459d-9d81-fb1c59f3c505_705x397.webp 1456w" sizes="100vw" loading="lazy"></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"><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"><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"><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"><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"><strong><a href="https://dometrain.com/bundle/from-zero-to-hero-csharp/?ref=nick-cosentino">Get this DISCOUNTED course bundle NOW!</a></strong></figcaption></figure></div><div><hr></div><p>As always, thanks so much for your support! I hope you enjoyed this issue, and I&#8217;ll see you next week.</p><p>&#8203;Nick &#8220;Dev Leader&#8221; Cosentino<br>&#8203;<strong><a href="mailto:social@devleader.ca">social@devleader.ca</a></strong>&#8203;<br>&#8203;<br>Socials:<br>&#8211; <strong><a href="https://devleader.ca/">Blog</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.youtube.com/@devleader?sub_confirmation=1">Dev Leader YouTube</a></strong>&#8203;<br>&#8211; <strong><a href="https://www.linkedin.com/in/nickcosentino/">Follow on LinkedIn</a></strong>&#8203;<br>&#8211; <strong><a href="https://instagram.com/dev.leader">Dev Leader Instagram</a></strong>&#8203;<br>&#8203;</p><p>P.S. If you enjoyed this newsletter, consider <strong><a href="https://weekly.devleader.ca/">sharing it with your fellow developers</a></strong>!</p>]]></content:encoded></item></channel></rss>