<?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>Fri, 26 Jun 2026 01:55:52 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[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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 role="img" 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><title></title><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 Much Does Company Alignment REALLY Matter For Developers?]]></title><description><![CDATA[Dev Leader Weekly 131]]></description><link>https://weekly.devleader.ca/p/how-much-does-company-alignment-really</link><guid isPermaLink="false">https://weekly.devleader.ca/p/how-much-does-company-alignment-really</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 15 Mar 2026 20:35:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cK3J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_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/15/how-much-does-company-alignment-really-matter-for-developers-dev-leader-weekly-131" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cK3J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cK3J!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5d4bb08-67d8-4725-bdb3-21a3a9729b0b_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;:104480,&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/15/how-much-does-company-alignment-really-matter-for-developers-dev-leader-weekly-131&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/191048705?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_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_!cK3J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!cK3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5d4bb08-67d8-4725-bdb3-21a3a9729b0b_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 role="img" 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><title></title><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>Mission alignment shapes how engaged you are daily</p></li><li><p>Understanding <em>why</em> your work matters is underrated</p></li><li><p>Reflect on what engages you, then align your search</p></li><li><p><strong><a href="https://youtube.com/live/CFho8X20dG8">Join me for the live stream (or watch the recording) on Monday, March 16 at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-CFho8X20dG8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;CFho8X20dG8&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/CFho8X20dG8?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>Does It Matter If You Believe in What Your Company Does?</strong></h2><p>I came across a post on the ExperiencedDevs subreddit that I found genuinely interesting -- and if I&#8217;m being honest, it hit pretty close to home because I was already thinking about this exact topic.</p><p>The Redditor described how they used to work at a company in the music industry. They were engaged. The work felt meaningful. They cared about what they were building and why. Then, over time, structural issues at the company led them to move on. Now they&#8217;re working in some legacy tech space, and they realize -- almost with some shock -- how much that previous alignment had been fueling them. Without it, they&#8217;re just... not feeling it. They don&#8217;t care about what the company does. And it&#8217;s making it hard to be enthusiastic about the work.</p><p>That&#8217;s a real thing. And it&#8217;s worth talking about.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=oLG0UudgflQ">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-oLG0UudgflQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;oLG0UudgflQ&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/oLG0UudgflQ?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>Not Everyone Is In The Same Place -- And That&#8217;s Okay</strong></h2><p>Before I get into the substance of this, I want to be clear about something: I&#8217;m not here to tell you what you should value in your career. That&#8217;s shaped by your life experiences, your stage in life, your financial reality, and a hundred other things. It&#8217;s not my place to say you&#8217;re doing it wrong.</p><p>If you&#8217;re early in your career and your only goal is to get your foot in the door -- I get it. Completely. Your focus is survival, not fulfillment optimization. That&#8217;s entirely reasonable. The stuff I&#8217;m going to talk about may not be relevant to you <em>right now</em>, and that&#8217;s fine.</p><p>My point in wanting to explore this is that over <strong><a href="https://www.devleader.ca/2025/11/15/is-my-developer-career-just-maintenance-dev-leader-weekly-116">the course of a career</a></strong> -- which is most of your adult life -- this stuff starts to matter more. The things that engage and disengage you will shift over time. What you value at 22 is probably not what you&#8217;ll value at 42. But if you&#8217;re going to spend a massive chunk of your life working, it&#8217;s worth at least thinking about whether you&#8217;re spending that chunk somewhere that feels meaningful to you.</p><h2><strong>The &#8220;Fulfillment Across a Career&#8221; Framing</strong></h2><p>Here&#8217;s the framing I keep coming back to: <strong>most of our adult lives are spent working</strong>. If you don&#8217;t have a shortcut out of that equation -- and for most of us, that shortcut isn&#8217;t on the table -- then optimizing for fulfillment over the long arc of your career just makes sense.</p><p>Now, I know what some of you are thinking: &#8220;Cool, sounds nice on paper.&#8221; And I hear you. If you&#8217;ve never worked somewhere that felt engaging, you have no evidence that it can be otherwise. Your lived experience says it&#8217;s just work, and work is fine, and the fulfillment comes from what you do outside of it. I don&#8217;t disagree with that framing either -- if you can minimize time at work and maximize everything else, great. Fulfillment is the goal. How you get there is up to you.</p><p>But for me personally, I do want to optimize my career around fulfillment. I like being productive. I like making progress toward things. So I want to make sure that, for a large chunk of my life, I&#8217;m doing work that feels worth doing.</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 Alignment Actually Looks Like</strong></h2><p>Here&#8217;s something I&#8217;ll be honest about: I don&#8217;t know that I would have predicted what would feel aligned for me until I was in it.</p><p>Early in my career, I got into digital forensics. I was very fortunate that things lined up the way they did -- there was too much serendipity for me to take much credit for it. But that work was <strong>deeply fulfilling</strong> in a way I don&#8217;t think I&#8217;ll easily replicate. There was a sense of impact that felt very real and very direct.</p><p>Now I&#8217;m at Microsoft, working on the routing plane for Office 365. The scale is completely different. Orders of magnitude more scale. And because of that scale, even small things can have massive impact. We were talking recently on one of my teams about a C# optimization -- something on the order of 1% reduction in memory allocations for a particular path. On its own, that sounds like nothing. But at the scale this service runs, that 1% ripples out to millions of users. <strong>The numeric impact is way larger, even if the perceived impact feels different.</strong></p><p>Neither of those experiences is objectively better. They&#8217;re just different ways fulfillment can show up. The question is whether you take the time to notice.</p><h2><strong>The Manager Angle: Always Explain the Why</strong></h2><p>I haven&#8217;t talked about this in a while, but <strong><a href="https://www.devleader.ca/2026/02/04/these-junior-developers-suck-they-just-dont-understand-my-code">as an engineering manager</a></strong>, this concept of alignment plays out in a really concrete way for me. And I want to share it because I think it applies whether you&#8217;re a manager or an IC.</p><p>In most engineering conversations, we focus on the <strong>what</strong> and the <strong>how</strong>. What&#8217;s the feature? What&#8217;s the architecture? How are we going to implement it? What are the constraints? Those conversations are totally valid and necessary. But there&#8217;s a gap.</p><p>The gap is <strong>why</strong>.</p><p>Why does this work matter? &#8220;It moves this metric from point A to point B&#8221; is not why -- that&#8217;s a measure. The <em>why</em> is what the metric actually represents for users, for the team, for the broader mission.</p><p>I&#8217;ve told engineers on my team explicitly: if at any point you don&#8217;t understand why we&#8217;re doing what we&#8217;re doing, tell me. It&#8217;s not a confrontational thing. It doesn&#8217;t have to be &#8220;I think this is dumb.&#8221; It can just be &#8220;I know what we&#8217;re building and how, but I&#8217;m missing the bigger picture of <em>why</em> it matters.&#8221; I want that conversation to happen. Because if people don&#8217;t get why, they stop seeing how they&#8217;re contributing to something meaningful -- and over time, that erodes engagement.</p><p><em><strong>Actionable Tip:</strong></em> If you&#8217;re a manager or lead, don&#8217;t just share the what and how with your team. Zoom out regularly and explain why the work matters -- how it connects to users, to the mission, to something real. It&#8217;s not about making every task feel earth-shattering. It&#8217;s about helping people see the bigger picture.</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 Should You Do If You&#8217;re Not Feeling Aligned?</strong></h2><p>Back to that Redditor. They&#8217;re not aligned with what their company does, they&#8217;re not engaged, and they&#8217;re wondering if they should brush up on their resume.</p><p>My take: yeah, look around. But that doesn&#8217;t mean you have to rush out the door. If the current situation isn&#8217;t actively negative -- you&#8217;re being treated fairly, the pay is reasonable, it&#8217;s not toxic -- then you don&#8217;t need to panic. But I&#8217;d absolutely encourage shopping around. The only cost is your time, and that&#8217;s yours to decide how to spend.</p><p><em><strong>Actionable Tip:</strong></em> Do an honest reflection on what engages you and what doesn&#8217;t. Think about the industry, the tech, the team culture, the problem space. Think about what you do outside of work that you genuinely love. You don&#8217;t have to go find a job in exactly that space -- but you might notice patterns about what kinds of problems and environments light you up versus drain you. Use that as a filter when <strong><a href="https://www.devleader.ca/2024/12/21/shut-up-and-take-the-money-dev-leader-weekly-75">evaluating opportunities</a></strong>.</p><p>For that Redditor -- and for anyone in a similar spot -- the reality is that if you fundamentally don&#8217;t care about what your company does, you&#8217;re probably not doing your best work. Not because you&#8217;re lazy or uncommitted, but because that underlying engagement isn&#8217;t there. The only motivation left is the paycheck, and that sustains you for a while, but it&#8217;s not enough to fuel your best output over the long haul.</p><h2><strong>Wrapping Up</strong></h2><p>None of this is me telling you your career needs to be your entire source of meaning. It doesn&#8217;t. But if you&#8217;re going to spend a huge chunk of your life working, it&#8217;s worth asking whether the work you&#8217;re doing is pointing you toward something you actually give a damn about.</p><p>The things that engage you will shift over time. That&#8217;s fine -- that&#8217;s expected. The goal is to stay aware of what those things are and make deliberate choices, rather than just drifting from one unaligned role to the next.</p><p>If you&#8217;ve got questions about this stuff -- career decisions, engineering management, whatever -- you can always head over to <strong><a href="https://codecommute.com/">codecommute.com</a></strong> and submit anonymously.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/how-much-does-company-alignment-really?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-much-does-company-alignment-really?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/how-much-does-company-alignment-really/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-much-does-company-alignment-really/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_!DgX2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DgX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/986d2027-f443-4434-b725-7ce2ff8e09a9_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_!DgX2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!DgX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F986d2027-f443-4434-b725-7ce2ff8e09a9_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 role="img" 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><title></title><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 Gap Between Good Developers and Great Ones]]></title><description><![CDATA[Dev Leader Weekly 130]]></description><link>https://weekly.devleader.ca/p/the-gap-between-good-developers-and</link><guid isPermaLink="false">https://weekly.devleader.ca/p/the-gap-between-good-developers-and</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 08 Mar 2026 22:13:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1sho!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_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/03/08/the-gap-between-good-developers-and-great-ones-dev-leader-weekly-130" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1sho!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!1sho!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!1sho!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!1sho!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1sho!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp" width="1200" height="799.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/129f1909-e2d0-4432-b519-3b4329500aca_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;:40952,&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/08/the-gap-between-good-developers-and-great-ones-dev-leader-weekly-130&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/190327878?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_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_!1sho!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 424w, https://substackcdn.com/image/fetch/$s_!1sho!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 848w, https://substackcdn.com/image/fetch/$s_!1sho!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_800x533.webp 1272w, https://substackcdn.com/image/fetch/$s_!1sho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F129f1909-e2d0-4432-b519-3b4329500aca_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 role="img" 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><title></title><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>Communication responsibility lands on you, not your audience</p></li><li><p>Think from their perspective -- not yours</p></li><li><p>Metaphors bridge the technical and non-technical gap</p></li><li><p>No livestream this week, sorry!</p></li></ul><div><hr></div><h2><strong>The Real Gap Between Good Developers and Great Ones</strong></h2><p>I&#8217;ve come to believe that the biggest gap between good developers and truly great ones isn&#8217;t technical skill. It&#8217;s communication. Specifically, the ability to communicate technical ideas to people who don&#8217;t share your technical context. I talk about this topic a lot across different videos and articles, and there&#8217;s a reason for that -- I genuinely think communication is at the heart of most of the problems I see in software engineering. Sure, we&#8217;re solving technical challenges every day. But the real blockers? The frustration, the missed deadlines, the misaligned expectations? Those almost always trace back to a failure to communicate effectively.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=3_i9MLMf9Dg">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-3_i9MLMf9Dg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;3_i9MLMf9Dg&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/3_i9MLMf9Dg?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 Responsibility Is On You</strong></h2><p>Here&#8217;s the uncomfortable truth: when you&#8217;re trying to communicate information, the responsibility for doing it effectively falls on <strong>you</strong>. Not on your audience.</p><p>I see this go wrong all the time. Someone&#8217;s trying to explain something technical, it&#8217;s not landing, and the reaction is &#8220;well, maybe they&#8217;re just not getting it&#8221; or &#8220;I don&#8217;t know why they can&#8217;t understand this.&#8221; We look outward for the problem. But when you&#8217;re the one trying to share information, how well it lands is your problem to solve.</p><p>Now -- to be clear -- this goes both ways in a conversation. If someone is communicating back to you, they have responsibility on their side too. But when you are the one trying to convey an idea? That&#8217;s on you. And I think accepting that is genuinely liberating, because it means the outcome is something you can actually influence.</p><h2><strong>Know Your Goal -- And Theirs</strong></h2><p>Before you walk into any conversation with a non-technical stakeholder, ask yourself: what am I actually trying to accomplish here? And I don&#8217;t mean &#8220;explain a technical thing to a non-technical person.&#8221; I mean the actual goal. Are you trying to justify why something is going to take longer than expected? Are you communicating why technical debt needs to be addressed? Are you giving a post-incident readout to someone who then has to relay it upward to leadership?</p><p>The goal frames everything.</p><p><em><strong>Actionable Tip:</strong></em> Write down the one thing you want your audience to walk away believing or understanding after the conversation. If you can&#8217;t state it in a sentence, you probably need to keep refining your thinking before you open your mouth.</p><p>Once you know your goal, here&#8217;s the secret: <strong>stop thinking about it from your own perspective.</strong> Flip it around. Think about what your audience cares about. What matters to them in their role? A project manager cares about different things than a UX designer, who cares about different things than a VP of Engineering. Yes, there&#8217;s overlap -- hopefully everyone cares about the customer -- but the lens through which they see the world is different. And the more time you spend with people in different roles, the better your intuition gets for what they&#8217;re going to gravitate toward and what&#8217;s going to lose them.</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>Levels of Indirection Kill Technical Detail</strong></h2><p>Let me use an example. Say there was an incident -- a bug in production. Things were mitigated, code fixes went in, your team worked hard on it. You understand the changes inside and out. Now you need to brief your engineering manager, who then has to represent your team to senior leadership.</p><p>This is a double-whammy situation. You need to communicate to your manager in a way they&#8217;ll understand, <strong>and</strong> arm them with enough information that they can relay it one more level up, to people even further removed from the technical details.</p><p>Here&#8217;s what typically goes wrong: engineers walk in and start talking about the specific class that had the duplication, the if statement on line 37, the test project that was accidentally excluded from CI/CD. And the manager nods along, maybe, but now they&#8217;re expected to take that information and translate it for a VP or an executive. That doesn&#8217;t work. The more levels of indirection involved, the more the specific technical detail actually hurts rather than helps.</p><p>So what does your manager actually care about in this scenario? They want to know <strong>systematically</strong> what&#8217;s now in place. They want to understand that you&#8217;ve got testing coverage where there were gaps. That you have monitoring and alerting. That you&#8217;re leveraging the tools available to you. They don&#8217;t need to know exactly how many tests you added -- they need to know that the gap in coverage has been closed.</p><p><em><strong>Actionable Tip:</strong></em> One exception: if there&#8217;s a single specific detail that is the &#8220;smoking gun&#8221; -- the one thing that explains why the incident happened -- it&#8217;s okay to bring that in even to a non-technical audience. I&#8217;ve been in executive-level post-mortems where the right answer was &#8220;we had all the right things in place -- monitors, tests, staged rollout -- but this one alert had the wrong threshold, and that&#8217;s why we missed it until traffic built up.&#8221; That&#8217;s concrete, understandable, and builds confidence. Use the smoking gun detail when it exists.</p><h2><strong>Metaphors Are Your Secret Weapon</strong></h2><p>So, how do you actually make your communication land? One of the most effective tools I&#8217;ve found is <strong>metaphors and comparisons</strong>. I don&#8217;t have a neurological explanation for why this works so well -- but it does. I think it has something to do with how our brains recognize patterns and anchor new concepts to things we already understand. When you can explain something by mapping it to a frame of reference the other person already has, it clicks in a way that a direct technical explanation just doesn&#8217;t.</p><p>Here&#8217;s an example I worked through. Imagine you&#8217;re talking to a UX designer. You need to explain that a design change they want is going to be much more complicated to implement than it looks, because the codebase has a lot of duplication -- many places that would all need to be updated individually.</p><p>From their perspective, they&#8217;re thinking: just go make the change in those spots. What&#8217;s the big deal?</p><p>Instead of explaining code duplication, try this: ask them to imagine they&#8217;re working in their design tool, but without any shared component library. No reusable buttons, no pre-styled elements -- everything is custom-drawn per screen. Now, imagine I asked them to change every button to have rounded corners. They&#8217;d have to click through every single design and make the change by hand -- and might not even be sure they&#8217;d found all of them.</p><p><strong>That&#8217;s what I&#8217;m dealing with in the code.</strong></p><p>Suddenly, they get it. They can feel why that&#8217;s painful. You mapped the technical problem to something they live every day. That&#8217;s the power of a good metaphor -- once you find the right one, the conversation shifts entirely.</p><p>The tricky part is that building good metaphors takes effort. You need to actually know something about the other person -- their role, their tools, what they care about. The more time you invest in understanding the people you work with, the better your instincts get for what will resonate.</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>Start With the Framework, Not the Steps</strong></h2><p>I want to be honest: I could give you a step-by-step checklist for communicating with non-technical stakeholders. But I deliberately didn&#8217;t go that route here. I think it&#8217;s more valuable to understand <strong>why</strong> the approach works than to follow a script. If you understand that your goal drives your framing, that thinking from their perspective matters more than your own, and that making ideas tangible through metaphors is incredibly effective -- you can adapt that to any specific situation you find yourself in. You&#8217;ll develop your own style, your own instincts, your own go-to examples.</p><p>That&#8217;s going to be better than any step-by-step I could ever write for you.</p><p>If you&#8217;ve got a specific communication scenario you&#8217;re wrestling with, <strong><a href="https://codecommute.com/contact/">head over to CodeCommute.com and submit it</a></strong>! I&#8217;m happy to work through the specifics. Talking about this generically can only go so far -- the real value is in concrete situations.</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_!GW-B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GW-B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c602cef5-05c3-4c45-a94a-79347605f312_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_!GW-B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!GW-B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc602cef5-05c3-4c45-a94a-79347605f312_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 role="img" 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><title></title><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[Hiring When You Aren't the Expert]]></title><description><![CDATA[Dev Leader Weekly 129]]></description><link>https://weekly.devleader.ca/p/hiring-when-you-arent-the-expert</link><guid isPermaLink="false">https://weekly.devleader.ca/p/hiring-when-you-arent-the-expert</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 01 Mar 2026 07:38:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Orp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_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/02/hiring-when-you-arent-the-expert-dev-leader-weekly-129" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Orp0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Orp0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60ab5e9f-f4bc-4316-8115-c7a6e378a77b_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;:73778,&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/02/hiring-when-you-arent-the-expert-dev-leader-weekly-129&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/189529406?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_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_!Orp0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!Orp0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ab5e9f-f4bc-4316-8115-c7a6e378a77b_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 role="img" 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><title></title><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>Start with the problem, not the solution</p></li><li><p>Define success in the role before writing questions</p></li><li><p>Hiring is imperfect -- iterate and build the skill</p></li><li><p><strong><a href="https://youtube.com/live/UMG7bV5dYZ4?feature=share">Join me for the live stream (or watch the recording) on Monday, March 2nd at 7:00 PM Pacific</a></strong>!</p><div id="youtube2-UMG7bV5dYZ4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;UMG7bV5dYZ4&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/UMG7bV5dYZ4?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 Do You Hire When You Aren&#8217;t Even the Expert?</strong></h2><p>I came across two Reddit posts recently that both circled around hiring. Different scenarios, totally different contexts -- but my instinct for tackling both was the same. And I figured it was worth sharing, because I think a lot of people jump straight to &#8220;how do I interview for this?&#8221; when they should actually slow down and answer a different question first.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=2F3aPe5xDUE">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-2F3aPe5xDUE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2F3aPe5xDUE&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/2F3aPe5xDUE?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 Two Scenarios</strong></h2><p>The first post was from a CTO with six engineers who was trying to hire their first engineering manager. The comments were... not kind. A lot of people were like, &#8220;you only have six people, why do you need an EM?&#8221; Which, fair point on the surface -- but we don&#8217;t have enough context to know if that&#8217;s actually true. Maybe they&#8217;re growing fast. Maybe the CTO has other responsibilities pulling their attention away. Maybe they&#8217;re just trying to get ahead of the scaling pain before they&#8217;re drowning in it.</p><p>The second post was someone asking: &#8220;How do you hire or interview for a role that you don&#8217;t have experience in?&#8221; Someone on their team had left, and now they&#8217;re responsible for backfilling that gap -- even though they don&#8217;t have the skill set themselves.</p><p>On the surface, these look completely different. But the framework I&#8217;d use to approach both of them is identical.</p><h2><strong>Step Back and Ask: What Are You Actually Trying to Solve?</strong></h2><p>Before you even think about interview questions or job postings, I want you to pause and ask yourself -- <strong>what problem am I actually trying to solve here?</strong></p><p>In the EM scenario, the person is presenting a solution (&#8221;I need to hire an EM&#8221;) without fully articulating the problem. And that matters, because the right solution depends heavily on what the actual gap is.</p><p>Are your direct reports not getting enough time and attention from you? Is coordination of deliverables falling apart? Is there not enough time being spent with customers and stakeholders? <strong>Each of those problems might point to a different hire.</strong> An EM, a project manager, or even a product manager could all be the right answer depending on what&#8217;s actually broken.</p><p>If you don&#8217;t know what&#8217;s broken, you&#8217;re optimizing for a job title, not a solution. And that&#8217;s a recipe for a hire that doesn&#8217;t move the needle.</p><p><em><strong>Actionable Tip:</strong></em> Before writing a job description, write a problem description. One paragraph -- what is not working right now that this role is supposed to fix? If you can&#8217;t write that paragraph, you&#8217;re not ready to hire yet.</p><h2><strong>Defining What the Role Actually Looks Like</strong></h2><p>Okay, let&#8217;s say you&#8217;ve done that work and you&#8217;ve confirmed: yes, what you need is an engineering manager. Now what?</p><p>You need to figure out what you actually expect from this person in this role. Because &#8220;engineering manager&#8221; means wildly different things at different companies, different team sizes, different growth stages. The classic debate everyone loves to have: should EMs code?</p><p>My take: <strong>if you have a small team, absolutely -- find ways to contribute hands-on.</strong> When you&#8217;ve got six engineers, there&#8217;s a real case for the EM being in the code with the team. It doesn&#8217;t scale as the team grows, but at that size it often makes sense. The point isn&#8217;t whether they&#8217;re technical -- it&#8217;s whether the team benefits more from their hands-on contribution or their coordination and people work at that specific moment in time.</p><p>So you need to ask yourself: what are the core responsibilities I&#8217;m hiring for in the short, medium, and long term? And then structure your interviews around those things.</p><p>For example, if you&#8217;re hiring an EM at a small startup where you know they&#8217;ll be expected to code alongside the team, you&#8217;d better have a technical component in the interview. You need to know they can build software -- not just manage the people building it.</p><p>If you&#8217;re hiring an EM because you&#8217;re about to scale from 6 to 12 engineers and you know they&#8217;ll be spending a lot of their time recruiting and onboarding, the emphasis shifts. You&#8217;re probably less focused on their coding chops and more focused on their ability to build and grow teams, run hiring processes, and develop people over time.</p><p><strong>The role definition drives the interview design.</strong> If you skip the role definition, you end up asking generic questions and hoping for the best.</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>When You Don&#8217;t Have the Expertise Yourself</strong></h2><p>The second scenario is a little more raw -- you literally don&#8217;t have the skill set being hired for. So how do you gauge a candidate when you can&#8217;t evaluate their technical answers?</p><p>Same starting point: what does success look like in this role?</p><p>Let&#8217;s say you need to hire an Android developer. Your team has never built an Android app. You don&#8217;t know Kotlin, you don&#8217;t know the Google Play ecosystem, none of it. How do you know if someone&#8217;s answer to your question is actually good?</p><p>Here&#8217;s the reframe I&#8217;d offer: <strong>are you going to know if their answers are good after you hire them?</strong> Probably not immediately either. You&#8217;re not going to suddenly become an Android expert the moment they sign the offer letter. So the goal isn&#8217;t to design interview questions that prove to you in the moment that this person is an expert -- you can&#8217;t do that if you&#8217;re not an expert yourself.</p><p>What you <em>can</em> do is think through what success in this role looks like, and then ask questions that surface the traits and behaviors that point toward that success.</p><p>In the Android example, if success means:</p><ul><li><p>Going from zero to a published app</p></li><li><p>Actively sharing knowledge with the rest of the team</p></li><li><p>Owning Android security for the platform</p></li></ul><p>...then your interview questions should probe for those things. Can they talk through how they&#8217;ve taught others on previous teams? Can they give examples of how they approached security decisions on a platform they owned? Do they have examples of leading a greenfield platform from scratch?</p><p><em><strong>Actionable Tip:</strong></em> Write out three to five things that would make this person clearly successful in their role six months in. Now ask yourself -- do my planned interview questions actually tell me anything about those things? If the answer is no, redesign the questions.</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>This Is an Imperfect Process -- And That&#8217;s Okay</strong></h2><p>I want to be honest with you: this framework doesn&#8217;t magically solve the problem. Hiring is messy and imperfect, no matter how well you prepare.</p><p>What defining the role and the success criteria does is make sure you&#8217;re asking questions <strong>in the right direction</strong>. You might not nail the evaluation of every answer. You might misjudge a candidate. You might make a bad hire even after doing this work. But at least you&#8217;re not going in completely blind, asking generic questions and hoping someone impressive shows up.</p><p>And honestly -- hiring is a skill. It gets better with reps. The first time I had to hire for a role I wasn&#8217;t deeply familiar with, I made a lot of mistakes. But each time you do it, you get a better sense of what signals actually matter and what questions actually surface them.</p><p><strong>The minimum viable step</strong> is knowing what you&#8217;re trying to accomplish. Everything else -- the specific questions, the interview structure, how you score responses -- you iterate on over time.</p><p>So if you&#8217;re in one of these situations right now: don&#8217;t panic. Step back, define the problem, define success, and then build the interview around that. It won&#8217;t be perfect. But you&#8217;ll be heading in the right direction.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/hiring-when-you-arent-the-expert?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/hiring-when-you-arent-the-expert?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/hiring-when-you-arent-the-expert/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/hiring-when-you-arent-the-expert/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_!P8xT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P8xT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_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_!P8xT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!P8xT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb6c3d6-edf8-4e95-ba44-f5f3cb5365fe_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 role="img" 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><title></title><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[Planning in Software Engineering: Lessons from Startup to Big Tech]]></title><description><![CDATA[Dev Leader Weekly 128]]></description><link>https://weekly.devleader.ca/p/planning-in-software-engineering</link><guid isPermaLink="false">https://weekly.devleader.ca/p/planning-in-software-engineering</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sat, 21 Feb 2026 23:31:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7Vpp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_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/01/planning-in-software-engineering-lessons-from-startup-to-big-tech-dev-leader-weekly-128" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Vpp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Vpp!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39831410-a53a-4e9e-b659-6c4a2f7daab2_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;:80834,&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/01/planning-in-software-engineering-lessons-from-startup-to-big-tech-dev-leader-weekly-128&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/188751700?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_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_!7Vpp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!7Vpp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39831410-a53a-4e9e-b659-6c4a2f7daab2_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 role="img" 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><title></title><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 shapes everything</p></li><li><p>Stop optimizing for the perfect plan</p></li><li><p>Know your stakeholders deeply</p></li><li><p><strong><a href="https://youtube.com/live/9BSlebsn0WE?feature=share">Join me for the live stream (or watch the recording) on Monday, February 23rd at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><h2><strong>Why Everyone Seems to Have a Different Opinion on Planning</strong></h2><p>I want to talk about planning in software engineering -- and more specifically, why people seem to have such wildly different takes on it.</p><p>Here&#8217;s something I&#8217;ve noticed. You come across someone who&#8217;s had a successful career, and they describe how they do planning. Makes sense, you note it, maybe you try to apply it. Then you find someone else -- equally successful, equally confident -- doing it in a completely different way. And you&#8217;re left thinking: how are both of these people right?</p><p>The answer is almost always context. <strong>When people share their perspective on planning, they almost never include the environment that shaped that perspective.</strong> And that missing context is what makes everyone sound like they&#8217;re contradicting each other.</p><p>Think about someone who spent their career building satellite infrastructure or delivering government contracts. Their planning approach is going to look fundamentally different from someone who built a scrappy startup from scratch. Both of them are right -- they&#8217;re just responding to completely different constraints, completely different risks. If you pulled both people into the same room and actually mapped out what they value and what they&#8217;re trying to optimize for, I&#8217;d bet there&#8217;s a lot more overlap than it first appears. The differences come from the environments that shaped their thinking.</p><p>I wanted to get that framing out of the way first, because everything I&#8217;m about to say is colored by my own experience. Two data points: <strong><a href="https://www.magnetforensics.com/">Magnet Forensics</a></strong>, a startup where I joined at around seven or eight people, and left when we were around 250. And <strong><a href="https://www.microsoft.com/">Microsoft</a></strong>, where I&#8217;ve been for over five years, working on the Microsoft 365 / Office 365 side of things. These are just two examples -- they do not represent all startups or all of big tech. Keep your own environment in mind as you read.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=edUdb8pq2Go">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-edUdb8pq2Go" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;edUdb8pq2Go&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/edUdb8pq2Go?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 Planning Looks Like When You&#8217;re Drinking From the Fire Hose</strong></h2><p>In the very early days at Magnet Forensics, planning basically didn&#8217;t exist. Everything was the highest priority. A customer requested a feature? Drop everything, go build it. A bug got reported? Drop the feature, go fix the bug. Ship the bug fix and accidentally break something else? That&#8217;s tomorrow&#8217;s surprise.</p><p>It was chaos. And honestly, for where we were, it made some sense. You can&#8217;t really plan two weeks out when you&#8217;re still figuring out if anyone&#8217;s going to use your product.</p><p>One of the things I spent real effort on during that era was managing escalations. The CTO cared deeply about his customers -- this was his product, built from scratch out of necessity, and he was fiercely proud of it. When something got escalated to him, it was <em>the most important thing in the world</em>. My job was to come to him with a full picture -- here&#8217;s everything on our plate, here are all the other priorities, here are the tradeoffs -- and then ask: knowing all of that, do you still think this is number one? Over time, those conversations got shorter because we built mutual trust and a shared understanding of what mattered. He&#8217;d see the full picture and more often than not land at &#8220;yeah, okay, carry on.&#8221;</p><p>Gradually, we introduced sprints. Two-week sprints. And I&#8217;ll be honest -- even that felt like overkill at first. Two weeks out? We&#8217;re going to be doing completely different things by then anyway. But we built the habit. First two weeks, then a bit further, eventually quarterly.</p><p><strong>The goal was never to nail the plan perfectly. The goal was to build the muscle of looking further ahead.</strong></p><p>By the time I left, we were working with <strong><a href="https://www.atlassian.com/agile/agile-at-scale/okr">OKRs -- Objectives and Key Results</a></strong>. I have mixed feelings about the framework itself. People waste an absurd amount of time debating the wording and structure of key results. But the underlying concept is something I genuinely believe in: <strong>you&#8217;re setting a goal to move a metric, not to ship a specific feature.</strong> The <em>how</em> is for you to figure out. The key result is the destination -- reduce latency, improve onboarding rate, move some number from A to B. How you get there can change along the way.</p><p>And that&#8217;s the thing: the most valuable planning conversations we had weren&#8217;t about shipping dates and locked deliverables. They were about alignment. Are engineering and product actually pointing in the same direction? Are we measuring success the same way? What does &#8220;done&#8221; actually mean here? <em>Those</em> conversations moved the needle. The hours spent trying to lock in dates and enforce commitments? A lot of that was wasted energy.</p><h2><strong>How Planning Changes at Scale</strong></h2><p>At Microsoft, planning is a completely different beast. We do semester planning -- six months at a time. And because of the sheer number of teams and dependencies involved, you often need to be thinking about the <em>next</em> semester while you&#8217;re still planning the current one.</p><p>The reason is dependencies. When you&#8217;re working at platform scale, getting anything meaningful done usually requires another team to deliver something first. If you don&#8217;t get ahead of that conversation early -- if you&#8217;re not on their roadmap before they lock in their plans -- you&#8217;re going to be blocked. So you&#8217;re always playing this forward-looking dependency game: who do we need things from? Who&#8217;s depending on us? How far ahead do we need to start those conversations to actually have a shot at being unblocked in time?</p><p>The challenges, though, aren&#8217;t that different from a startup.</p><p>Plans change. Priorities shift. At Microsoft, if something critical surfaces in the security space, that jumps the queue -- full stop. It needs to. That&#8217;s the job. The difference is scale: at a startup, telling someone your plans changed might mean a conversation with one product owner. At Microsoft, it might mean fifteen other teams just got their plans disrupted.</p><p><em><strong>Actionable Tip:</strong></em> Know your stakeholders -- not just who they are, but what they&#8217;re trying to accomplish and what they&#8217;re depending on you for. When your plans shift (not if -- when), getting ahead of it as early as possible lets you work with your stakeholders to adjust. <strong>The surprises that derail projects aren&#8217;t usually the changes themselves; they&#8217;re the changes people find out about way too late.</strong></p><p>I&#8217;ve seen this play out firsthand. You&#8217;re three months into a six-month plan. A partner team drops something on you: &#8220;Hey, by the way, we&#8217;re not going to hit our commitment -- just so you know.&#8221; And when you dig in, there were signs of this two months ago. The communication just never happened. That lag is what causes damage.</p><h2><strong>Stop Trying to Make the Plan Perfect</strong></h2><p>Here&#8217;s my biggest takeaway from all of this: <strong>the goal shouldn&#8217;t be to build a plan that never changes. The goal should be to build a team that handles change well.</strong></p><p>I&#8217;ve watched organizations pour enormous amounts of time into making the plan airtight -- anticipating every dependency, locking in every date, getting every commitment in writing. And then something unexpected happens (as it always does), and a lot of that effort evaporates.</p><p>I&#8217;m not saying don&#8217;t plan. Plan. Have a direction. Have milestones. Have a roadmap. But be honest about what you&#8217;re actually optimizing for. If most of your planning energy goes toward &#8220;how do we stick to this plan no matter what,&#8221; that&#8217;s the wrong optimization.</p><p>Instead, here&#8217;s what I think is actually worth your time:</p><ul><li><p><strong>Get alignment on direction and success metrics</strong> -- not just which features you&#8217;re shipping, but what you&#8217;re trying to move and why</p></li><li><p><strong>Map your dependencies early</strong> -- both what you need from others and what others need from you</p></li><li><p><strong>Communicate early and often</strong> -- if you&#8217;re falling behind, say so now, not three months from now</p></li><li><p><strong>Build agility into the plan from the start</strong> -- leave room to adjust, because you will need to</p></li></ul><p>The OKR concept captures a lot of this well, even if the framework itself can get annoying. You set a goal to move a metric from A to B. How you get there can flex. What you&#8217;re trying to achieve stays consistent. That consistency -- the <em>direction</em> -- is what you&#8217;re really protecting when you plan.</p><h2><strong>Your Environment Is the Variable</strong></h2><p>Let me close with the thing I opened with: context.</p><p>How much planning you need, how rigid it should be, how far out you should look, how much agility to build in -- all of it depends on where you&#8217;re working. A ten-person startup looks nothing like a platform team at a large enterprise. A company with physical products and multi-year contracts looks nothing like a cloud security team shipping continuous updates.</p><p>Neither approach is right or wrong. They&#8217;re both responses to different constraints and different risks.</p><p>So the next time you hear two engineers give completely different answers about how planning should work -- and both of them swear by their approach -- before deciding one of them is wrong, ask what environment shaped that perspective. I&#8217;d be willing to bet there&#8217;s more common ground than it first looks like.</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_!8zFu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8zFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6afa8e17-17c7-4193-9c2c-70c7d30c80a9_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_!8zFu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!8zFu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6afa8e17-17c7-4193-9c2c-70c7d30c80a9_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 role="img" 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><title></title><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 Developer That Nobody Wants To Be]]></title><description><![CDATA[Dev Leader Weekly 127]]></description><link>https://weekly.devleader.ca/p/the-developer-that-nobody-wants-to</link><guid isPermaLink="false">https://weekly.devleader.ca/p/the-developer-that-nobody-wants-to</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 16 Feb 2026 03:43:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VmyK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_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/02/16/the-developer-that-nobody-wants-to-be-dev-leader-weekly-127" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VmyK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VmyK!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp" width="1200" height="800.2747252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1e87b5d-c875-4643-8d83-7d430b173dfb_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;:145330,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://www.devleader.ca/2026/02/16/the-developer-that-nobody-wants-to-be-dev-leader-weekly-127&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/188101174?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_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_!VmyK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_1536x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!VmyK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1e87b5d-c875-4643-8d83-7d430b173dfb_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 role="img" 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><title></title><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>Legacy systems are some of the <strong>most</strong> real software engineering</p></li><li><p>Saying &#8220;AI tools don&#8217;t work here&#8221; might be a cop-out</p></li><li><p>Someone has to bridge the communication gap, and it might need to be you</p></li><li><p>No livestream this week, sorry!</p></li></ul><div><hr></div><h2><strong>Stuck Maintaining Legacy Code -- Now What?</strong></h2><p>I saw a post on the ExperiencedDevs subreddit that I think a lot of us can relate to. A developer is the <strong>sole maintainer</strong> of a legacy .NET application. They&#8217;re dealing with brittle code, zero test coverage, and a product manager who doesn&#8217;t seem to understand the challenges. Oh, and to top it all off? The PM is telling leadership that this developer isn&#8217;t using AI tools and <em>that&#8217;s</em> why things are slow.</p><p>Spoiler: the developer says they ARE using AI tools.</p><p>There are a few different angles I want to unpack here, because this scenario hits on so many things at once. Legacy systems. AI tool adoption. And the communication gap between engineers and PMs. Let&#8217;s get into it.</p><p>You can <strong><a href="https://www.youtube.com/watch?v=8k918zBN3Xk">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-8k918zBN3Xk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8k918zBN3Xk&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/8k918zBN3Xk?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>Legacy Systems Are REAL Software Engineering</strong></h2><p>Here&#8217;s the thing that bugs me when people say, &#8220;I&#8217;m just maintaining legacy code, it&#8217;s not real engineering.&#8221; That is sometimes the <strong>most</strong> real software engineering, because you have some of the worst constraints to work within, and you have to get creative.</p><p>Think about it. You&#8217;re working in a codebase where:</p><ul><li><p>There&#8217;s little to no test coverage</p></li><li><p>Everything is tightly coupled</p></li><li><p>You touch one thing and five other things break</p></li><li><p>The &#8220;tribe&#8221; that built it has long since disappeared</p></li></ul><p>And in this person&#8217;s case, they&#8217;re not just doing bug fixes -- they&#8217;re actively developing <strong>new features</strong> on top of this. That&#8217;s a completely different ballgame. If you&#8217;re just patching a system that&#8217;s end-of-life, you might get away with minimal fixes to keep things running. But if you&#8217;re adding features? People are paying for this. The product might be legacy from a code perspective, but it&#8217;s not legacy from a <strong>product</strong> perspective.</p><p>If you&#8217;re wondering where to even begin with this kind of situation, I&#8217;ve written about <strong><a href="https://www.devleader.ca/2023/11/27/refactoring-legacy-code-what-you-need-to-be-effective">refactoring legacy code and what you need to be effective</a></strong> -- it&#8217;s a good starting point for thinking about how to approach these codebases.</p><p>So what do you do?</p><h2><strong>Start Building Confidence Through Tests</strong></h2><p>You need to work towards <strong>having test coverage that gives you confidence</strong>. And that might mean writing tests you don&#8217;t love.</p><p>Here&#8217;s what I mean. I like writing code that can be unit tested -- almost in isolation from everything else. But in a lot of legacy systems, including ones that I wrote that became legacy, the code was not designed that way. Dependencies aren&#8217;t mockable. Concerns aren&#8217;t separated. That whole class of tests? Just not available to you.</p><p>So you go to the other end of the spectrum. Big integration tests. Maybe even UI tests that click through the application. Are they brittle? Absolutely. But if you can get some tests in place that cover your <strong>number one use cases</strong> -- the things that absolutely cannot break for your users -- you now have some confidence.</p><p>I&#8217;ve talked about <strong><a href="https://www.devleader.ca/2023/12/20/dealing-with-legacy-code-how-to-make-anything-more-testable">dealing with legacy code and how to make anything more testable</a></strong> if you want a deeper dive on practical strategies for this. The key idea is that you don&#8217;t need perfect tests -- you need tests that give you a signal.</p><p>And by the way -- don&#8217;t be fooled by coverage numbers alone. I&#8217;ve written about <strong><a href="https://www.devleader.ca/2023/12/25/why-test-coverage-can-be-misleading-how-to-avoid-false-confidence">why test coverage can be misleading</a></strong> and how to avoid false confidence. High coverage with low-quality tests can be worse than no tests at all because it gives you a false sense of security.</p><p><em><strong>Actionable Tip:</strong></em> Start with confidence-building tests, even if they&#8217;re ugly. Cover your most critical user flows first. As you refactor, you can replace the crappy tests with better ones. But having <em>something</em> is way better than having nothing. Here&#8217;s what I&#8217;d actually recommend as a starting point:</p><ol><li><p><strong>Identify your top 3-5 user workflows</strong> -- the ones that, if they broke, would generate support tickets or lose customers</p></li><li><p><strong>Write end-to-end tests for those</strong> -- even if they&#8217;re slow, brittle, or ugly</p></li><li><p><strong>Use those tests as a safety net</strong> while you start refactoring the code underneath</p></li><li><p><strong>As you refactor, add focused tests</strong> at lower levels where you can</p></li></ol><p>The point is: start introducing mechanisms to get confidence. Then, as you refactor and clean things up, you can write better tests and eventually ditch the ones you don&#8217;t love. If you&#8217;re working in a .NET codebase specifically, check out my article on <strong><a href="https://www.devleader.ca/2024/02/29/refactoring-c-code-4-essential-techniques-simplified">refactoring C# code with 4 essential techniques</a></strong> for some practical patterns.</p><h2><strong>AI Tools &#8220;Don&#8217;t Work Here&#8221; -- Really?</strong></h2><p>Let&#8217;s pivot to the AI tool situation. This developer says they&#8217;re using Gemini, which is great. But then they mention having access to Cursor and saying something like &#8220;Cursor can&#8217;t work on legacy .NET projects.&#8221;</p><p>I have a challenge with statements like this.</p><p>Look, maybe Cursor isn&#8217;t the most effective tool for this specific scenario. But saying it <strong>can&#8217;t</strong> be used? That feels like a cop-out to me. I&#8217;ve used Copilot CLI to build legacy .NET projects -- not with <code>dotnet build</code>, but with Visual Studio tooling on the command line. No UI. It worked.</p><p>You can build on the command line. When you start having tests, you can run your tests on the command line. Cursor can go through files on a file system. If you can trigger your build from the command line, there&#8217;s a path forward -- even if it&#8217;s not the polished IDE experience you&#8217;re used to.</p><p>I actually wrote a <strong><a href="https://www.devleader.ca/2026/01/18/getting-started-with-ai-coding-tools-a-developers-practical-guide">practical guide on getting started with AI coding tools</a></strong> that covers how to think about tools like Cursor, Copilot, and Claude in different development contexts. The reality is that these tools aren&#8217;t all-or-nothing -- you can use them for specific parts of your workflow even if they can&#8217;t handle everything.</p><p>For legacy codebases specifically, here are some concrete ways AI tools can help even when the project structure isn&#8217;t ideal:</p><ul><li><p><strong>Understanding unfamiliar code</strong> -- paste a class or module and ask &#8220;what does this do?&#8221; before you start modifying it</p></li><li><p><strong>Generating test scaffolding</strong> -- even if the tool can&#8217;t run the tests, it can help you write the boilerplate for test setup</p></li><li><p><strong>Exploring refactoring options</strong> -- describe what a piece of code does and ask for suggestions on how to decouple it</p></li><li><p><strong>Documentation</strong> -- generate documentation for undocumented legacy code so the next person (or future you) has context</p></li></ul><p><em><strong>Actionable Tip:</strong></em> Don&#8217;t rule out tools because they don&#8217;t work the way you expect. Get curious about finding ways to make your tools effective for you. The more familiar you get with what tools are capable of -- and how to use them in different scenarios -- the more options you have.</p><p>At work, you might not have the freedom to pick whatever tool you want. I get that. But within the tools you do have access to, there&#8217;s probably more you can squeeze out of them than you think.</p><h2><strong>Bridging The Communication Gap</strong></h2><p>Now for the part that I think matters the most: the relationship between this developer and their PM.</p><p>We have two people saying different things. The developer says, &#8220;I AM using AI tools.&#8221; The PM is telling leadershi,p &#8220;this person isn&#8217;t using AI tools, that&#8217;s why things are slow.&#8221; The truth? It&#8217;s probably somewhere in the middle.</p><p>This developer is probably using AI tools. But are they using them <strong>effectively</strong>? That&#8217;s open for debate -- and I&#8217;m not saying that to be harsh. They&#8217;re already acknowledging that some tools don&#8217;t work well for their scenario, and I&#8217;ve just argued that I think they could push harder on that front.</p><p>From the PM side? They&#8217;re probably right that things are behind their expectations. The reasoning they&#8217;re giving might be wrong, but the core observation -- that delivery isn&#8217;t where they want it -- is probably true.</p><p><strong>Someone has to bridge this gap.</strong> And it sounds like it hasn&#8217;t been either person up to this point.</p><p>If I knew someone was saying things about me that I didn&#8217;t believe were true, I&#8217;d confront them. Not aggressively -- but I&#8217;d need to get to a point of truth. I&#8217;d make time and say something like: <em>&#8220;Hey, I will show you how I&#8217;m using AI tools. If you think I&#8217;m not, let me demonstrate.&#8221;</em></p><p>But clearing that up alone won&#8217;t solve the problem. These two people need to work together to figure out <strong>what they need from each other</strong>.</p><p>Communication is one of those <strong><a href="https://www.devleader.ca/2024/01/18/software-engineering-soft-skills-6-focus-areas-that-you-need">soft skills that engineers often undervalue</a></strong>, but it makes or breaks your ability to operate effectively on a team. And it&#8217;s not just about talking more -- it&#8217;s about talking in ways that land with your audience.</p><p><em><strong>Actionable Tip:</strong></em> Before you go into a conversation like this feeling defensive, try preparing with these three things:</p><ol><li><p><strong>A demo, not a debate</strong> -- Show your PM exactly how you&#8217;re using AI tools. Screen share, walk them through your workflow. It&#8217;s a lot harder to argue with a live demonstration.</p></li><li><p><strong>An honest self-assessment</strong> -- Are there areas where you could be using tools more effectively? Acknowledging that proactively builds trust and shifts the conversation from &#8220;are you doing it?&#8221; to &#8220;how can we do it better?&#8221;</p></li><li><p><strong>Questions, not accusations</strong> -- Ask your PM what success looks like to them. What timelines are they working against? What are they being asked to deliver? Understanding their constraints helps you propose solutions that actually work for both of you.</p></li></ol><h2><strong>Talk About Systems, Not Classes</strong></h2><p>Here&#8217;s something practical: as an engineer, you might totally understand why things are brittle. You know that Class A is coupled to Class B, which is coupled to Class C, and touching any of them cascades. But your PM? They don&#8217;t know that. And talking to them about classes and methods is not going to help.</p><p>Instead, <strong>uplevel the discussion</strong>. Talk about feature areas. Draw some higher-level block diagrams. Say something like: <em>&#8220;Hey, some of the logic for this feature lives here, but it&#8217;s actually spread across these other areas. If I touch one, we&#8217;re going to see problems across all of them. And right now, I have nothing that tells me when that&#8217;s going to happen.&#8221;</em></p><p>That&#8217;s something a PM can understand and reason about. It gives them the context they need without drowning them in implementation details.</p><p>This is actually the same skill that I see trip up engineers when they&#8217;re <strong><a href="https://www.devleader.ca/2026/02/04/these-junior-developers-suck-they-just-dont-understand-my-code">working with junior developers</a></strong> -- the ability to adjust your communication to your audience. You wouldn&#8217;t explain coupling the same way to a PM as you would to a senior engineer. Meeting people where they are is how you actually get alignment.</p><p>If you&#8217;re dealing with technical debt specifically and need a way to frame those conversations with leadership, I&#8217;ve written about <strong><a href="https://www.devleader.ca/2023/10/20/how-to-balance-technical-debt-tackle-it-before-it-tackles-you">how to balance technical debt</a></strong> in a way that connects engineering concerns to business outcomes.</p><p><em><strong>Actionable Tip:</strong></em> Try to understand what your PM needs. They have goals, expectations, and things they need to report on. If you can understand their motivations, you might find that how they&#8217;re approaching things isn&#8217;t effective for <em>you</em> -- but the <strong>why</strong> behind it makes sense. And then you can propose alternatives that work better for both of you.</p><p>Here&#8217;s a framework that has worked for me when bridging these kinds of gaps:</p><ul><li><p><strong>Translate risk into time</strong> -- instead of &#8220;this code is tightly coupled,&#8221; say &#8220;changing this feature has a 50/50 chance of breaking these other two, and debugging that takes 2-3 days each time&#8221;</p></li><li><p><strong>Propose trade-offs, not ultimatums</strong> -- &#8220;We can ship this feature in 2 weeks, or we can spend 1 week stabilizing first and ship in 3 weeks with fewer bugs after. Which would you prefer?&#8221;</p></li><li><p><strong>Make the invisible visible</strong> -- track the bugs caused by coupling, the time spent on regressions, the incidents. Data changes conversations.</p></li></ul><h2><strong>Wrapping Up</strong></h2><p>Legacy systems are challenging. AI tools in constrained environments are challenging. Working with someone who doesn&#8217;t seem to understand your reality is challenging. But none of these are unsolvable.</p><p>Start building confidence through tests -- even ugly ones. Get creative with the tools you have -- don&#8217;t dismiss them before you&#8217;ve really explored what&#8217;s possible. And put in the effort to bridge that communication gap -- even when you don&#8217;t want to. <em>Especially</em> when you don&#8217;t want to.</p><p>If you want to go deeper on any of these topics, here are some resources:</p><ul><li><p><strong><a href="https://www.devleader.ca/2023/11/27/refactoring-legacy-code-what-you-need-to-be-effective">Refactoring Legacy Code - What You Need To Be Effective</a></strong></p></li><li><p><strong><a href="https://www.devleader.ca/2023/12/20/dealing-with-legacy-code-how-to-make-anything-more-testable">Dealing With Legacy Code - How To Make Anything More Testable</a></strong></p></li><li><p><strong><a href="https://www.devleader.ca/2026/01/18/getting-started-with-ai-coding-tools-a-developers-practical-guide">Getting Started with AI Coding Tools - A Developer&#8217;s Practical Guide</a></strong></p></li><li><p><strong><a href="https://www.devleader.ca/2024/01/18/software-engineering-soft-skills-6-focus-areas-that-you-need">Software Engineering Soft Skills - 6 Focus Areas That You Need</a></strong></p></li></ul><p>I wish this person all the best. Legacy systems are a lot of fun in their own way -- lots of interesting constraints and lots of interesting challenges.</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_!16Bd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!16Bd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ba2d6b0-b17f-4163-898b-05a7ea3fd853_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_!16Bd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!16Bd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ba2d6b0-b17f-4163-898b-05a7ea3fd853_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 role="img" 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><title></title><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[Over Optimism of Rewrites in Software Engineering]]></title><description><![CDATA[Dev Leader Weekly 126]]></description><link>https://weekly.devleader.ca/p/over-optimism-of-rewrites-in-software</link><guid isPermaLink="false">https://weekly.devleader.ca/p/over-optimism-of-rewrites-in-software</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sun, 08 Feb 2026 18:05:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vABk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.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://devleader.ca/2026/02/08/over-optimism-of-rewrites-in-software-engineering-dev-leader-weekly-126" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vABk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!vABk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!vABk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!vABk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vABk!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:76116,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://devleader.ca/2026/02/08/over-optimism-of-rewrites-in-software-engineering-dev-leader-weekly-126&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/187306085?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.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_!vABk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!vABk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!vABk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!vABk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56665355-0ebb-4f8a-a580-a5816987fb04_1080x720.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 role="img" 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><title></title><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>Software rewrites are almost ALWAYS underestimated</p></li><li><p>The &#8220;all or nothing&#8221; approach is the most dangerous trap</p></li><li><p>The Strangler Fig pattern lets you rewrite incrementally and safely</p></li><li><p><strong><a href="https://youtube.com/live/cQKGtgHFMcQ?feature=share">Join me for the live stream (or watch the recording) on Monday, February 9th at 7:00 PM Pacific</a></strong>!</p></li></ul><div id="youtube2-cQKGtgHFMcQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cQKGtgHFMcQ&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/cQKGtgHFMcQ?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><h1><strong>Why Do Software Rewrites ALWAYS Take Longer Than Expected?</strong></h1><p>I saw a post on the ExperiencedDevs subreddit that really resonated with me. Someone pointed out that after about 8 years in the industry, <strong>every single rewrite they&#8217;ve seen has taken significantly longer than teams planned for</strong>. And for some reason, people always act surprised.</p><p>Spoiler alert: that&#8217;s also been my experience.</p><p>And I&#8217;m not talking about being a little bit off. I&#8217;m talking about -- if someone tells me &#8220;it&#8217;s going to take us X amount of time to rewrite this,&#8221; I would <strong>at least double it</strong>. If they say a year, I&#8217;m saying two years. At least. That&#8217;s just based on my own lived experience with various rewrites across my career.</p><p>Now, my goal here isn&#8217;t to say &#8220;a rewrite is the devil, never do it, never consider it.&#8221; It&#8217;s just that I think a lot of the time, rewrites are approached as this <strong>silver bullet solution</strong> for all the problems we have -- and the amount of time and complexity to pull it off gets grossly underestimated. You can <strong><a href="https://youtu.be/lYZFkRp3tsQ">check out my full thoughts on this in the video</a></strong> below:</p><div id="youtube2-lYZFkRp3tsQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;lYZFkRp3tsQ&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/lYZFkRp3tsQ?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 Teams Push for Rewrites</strong></h2><p>So what motivates a rewrite in the first place? In my experience, it&#8217;s usually the engineering team that&#8217;s driving it -- not the business. And I think one of the big reasons is <strong>knowledge dispersion</strong>.</p><p>When you have these really large or complex systems, no single person knows everything about the system. As systems grow and scale and age, people on teams change. The knowledge about the system becomes inconsistent -- there are gaps. Some people know some parts, no one knows everything, and certainly everyone doesn&#8217;t know everything.</p><p>When you have that kind of disparate knowledge, it becomes easy to rally behind the idea of: &#8220;Well, if we just start from something we all agree on, we can make this better.&#8221; You know there&#8217;s a problem. There&#8217;s that big god class that&#8217;s super legacy and brittle and no one seems to be able to touch it. And so the thinking is: we can solve this. We can be the ones that make it better. We&#8217;ll also fix this problem of legacy code that no one really understands.</p><p>And look -- it&#8217;s hard to argue with that on the surface. It seems logical. Given the severity or complexity of some structural issues in a codebase, I can certainly see why people would be motivated to do that. I&#8217;ve literally been part of conversations where I&#8217;ve felt motivated to say, &#8220;Man, if we just didn&#8217;t have this thing here, we could do this so much better.&#8221;</p><h2><strong>The Two Clean Slates Problem</strong></h2><p>But here&#8217;s where things start to fall apart.</p><p>When people say &#8220;rewrite,&#8221; it usually means <strong>everything</strong>. Starting from scratch. You get this green field from an engineering perspective to go do all the right things -- get it right this time.</p><p>The danger from the business side? When you have systems or products that have been around for a long time, there are <strong>a lot of features and functionality</strong> that exist. Hidden menus that you never thought about. Some users that absolutely depend on those menus, buttons, or workflows. There&#8217;s all this knowledge and history that went into getting those flows together.</p><p>So what happens is you end up with <strong>two clean slates</strong>:</p><ol><li><p>A clean slate from a code and architecture perspective</p></li><li><p>A clean slate from a feature parity perspective</p></li></ol><p>Engineers focus on how they&#8217;re going to solve all the problems technically -- the architecture, the infrastructure. So much attention goes there. But there&#8217;s <strong>not enough conversation around parity</strong> -- what needs to happen in terms of usability, migration strategies, and communicating changes to users. And I feel like that&#8217;s a huge miss almost all the time.</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 Resource Split</strong></h2><p>Beyond that, we&#8217;re <strong>dividing resources</strong>. If you have a legacy system that&#8217;s running that users are paying for, and you start a rewrite, you have to split resources somehow.</p><p>You could move everyone to the new thing to get it done as fast as possible. But while that&#8217;s happening, you have paying users who may have issues, who may be hoping for feature updates on a cadence they&#8217;ve come to know and love -- and that&#8217;s not getting attention.</p><p>Or you keep some people back on the legacy system. Now you&#8217;ve got the overhead of managing two groups focused on different roadmaps, different priorities, and you&#8217;re not prioritizing the rewrite as much, so it&#8217;s going to take longer.</p><p>There&#8217;s a spectrum of how you split resources -- people and time. I&#8217;m not saying there&#8217;s one right answer. I&#8217;m just saying this is a huge factor in complexity that also gets grossly underestimated.</p><h2><strong>The Scary Trap</strong></h2><p>The scariest trap I see with this stuff? Say you go all in on a rewrite. There&#8217;s excitement in the beginning because everything&#8217;s new. Tons of momentum early on because things are being stood up. Then a bit of a lull. Then things come together and you start getting more momentum again.</p><p>But as time elapses, you start realizing: &#8220;Hey, I know we said we&#8217;d build the architecture perfectly this time, but as complexity gets added with new feature sets... oh, we didn&#8217;t factor this part in.&#8221; So the architecture has to change a little bit. And it keeps happening. Now your pristine architecture is starting to get some cracks in it.</p><p>And then people in product start looking at what&#8217;s being produced and going, &#8220;Wait, we didn&#8217;t account for this feature. There&#8217;s a gap here.&#8221; One more thing to add back in. And another. And another. The timeline keeps moving out.</p><p>And then you hit this point -- maybe multiple points -- where people are questioning: <strong>should we keep going?</strong></p><p>That is the worst scenario to be in. You&#8217;ve made this conscious decision to go all in on something, and now you&#8217;re like, &#8220;What the hell are we going to do here?&#8221; This isn&#8217;t panning out to be perfect sunshine and rainbows. Because -- and this is the thing -- <strong>it&#8217;s software development. It&#8217;s never going to be perfect sunshine and rainbows.</strong></p><p>To this person&#8217;s point in the Reddit post: why are we always surprised? You&#8217;re trying to rewrite something from scratch that took years to build. Software systems that took 3, 5, 10 years. We can&#8217;t even estimate feature deliveries in the order of days or weeks, and you&#8217;ve got a timeline for a full rewrite that you feel confident in? It&#8217;s completely crazy to think we&#8217;re going to get that right. Doesn&#8217;t mean it can&#8217;t be successful -- but it&#8217;s crazy to think there won&#8217;t be surprises.</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 Strangler Fig: A Better Way</strong></h2><p>So how are we doing this instead? <strong>Martin Fowler</strong> coined this term called the <strong>Strangler Fig</strong> a long time ago. He wrote about it in his <strong><a href="https://martinfowler.com/bliki/StranglerFigApplication.html">Strangler Fig Application</a></strong> article, and the naming comes from these types of vines he saw in the rain forests of Queensland. These vines germinate in a nook of a tree, draw nutrients from it as they grow, and eventually become self-sustaining -- sometimes the original host tree dies and the fig remains as an echo of its shape. Martin saw this as a striking analogy for how we can modernize legacy software systems.</p><p>And here&#8217;s the thing that really stuck with me from his article: he points out that trying to do a simple replacement -- &#8220;we know what the old system does, so just build a new one that does exactly the same&#8221; -- goes down in flames most of the time. The alternative he and his colleagues prefer is a <strong>gradual process of modernization</strong>. Like the fig, it begins with small additions, often new features, built on top of yet separate from the legacy codebase. As you do this, you move bits of behavior from the legacy system into the new code.</p><p>The idea when it comes to rewrites is: instead of taking your entire product or service and going &#8220;we&#8217;re starting from zero,&#8221; <strong>you do it in pieces</strong>. You find ways to segment how you can start rewriting things. You build up the new pieces, and then you slowly start taking code paths and pointing them to the new parts. You start replacing parts of your system this way.</p><p>Instead of it being a full-on rewrite where you do an all-or-nothing thing, you <strong>incrementally rewrite chunks of the software</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z0h8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z0h8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 424w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 848w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 1272w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z0h8!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin" width="1200" height="670.054945054945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Strangler Fig Infographic Explaining How The Process Works&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Strangler Fig Infographic Explaining How The Process Works" title="Strangler Fig Infographic Explaining How The Process Works" srcset="https://substackcdn.com/image/fetch/$s_!z0h8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 424w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 848w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 1272w, https://substackcdn.com/image/fetch/$s_!z0h8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d6160f2-3400-4ddf-874b-d3004d11ef0a_2752x1536.bin 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 role="img" 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><title></title><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><h3><strong>How It Works in Practice</strong></h3><p>Take a set of microservices that all work together. Maybe a single microservice is the granularity of rewrite you go address. You stand up the new service, start sending some traffic to it proportionally, get it tested, get it working. Once you&#8217;re confident, you cut over all the traffic and cut out the old one. You didn&#8217;t rearchitect your entire system from scratch -- you picked one service.</p><p>If it&#8217;s not microservices and it&#8217;s modules in an application -- same concept, just a different transport. How can you start rewriting a module and cutting things over to it?</p><h3><strong>But How Do You Actually Break It Up?</strong></h3><p>This is where people often push back: &#8220;Okay, great concept, but how do I actually figure out where to slice?&#8221; Ian Cartwright, Rob Horn, and James Lewis wrote an excellent set of <strong><a href="https://martinfowler.com/articles/patterns-legacy-displacement/">Patterns of Legacy Displacement</a></strong> on Martin Fowler&#8217;s site that digs into exactly this. They lay out four high-level activities:</p><ol><li><p><strong>Understand the outcomes you want to achieve</strong> -- Get alignment on what you&#8217;re actually trying to accomplish. Is it reducing cost of change? Improving business processes? Retiring old infrastructure?</p></li><li><p><strong>Decide how to break the problem into smaller parts</strong> -- Find the seams in your current business and technical architecture. How does your big monolithic solution map to different business capabilities? Can you extract individual needs for independent delivery?</p></li><li><p><strong>Successfully deliver the parts</strong> -- Use strategies like canary releases, event interception, or diverting flow to cut over from the legacy system incrementally.</p></li><li><p><strong>Change the organization</strong> -- This one is huge. Legacy systems become rigid and brittle because the design thinking and organizational processes that produced them built them that way. If there&#8217;s no change in organizational culture, the new systems will end up in a similar mess.</p></li></ol><p>One thing from that article that really hit home for me is their observation that <strong>technology is at most only 50% of the legacy problem</strong>. Ways of working, organization structure, and leadership are just as important to success. That lines up perfectly with what I&#8217;ve seen -- teams that only focus on the tech side of a rewrite and ignore the organizational side tend to end up right back where they started.</p><p>They also call out something I&#8217;ve lived through multiple times: the <strong>Legacy Replacement Treadmill</strong>. Organizations go through these 3-5 year modernization programs, and at some point during each one, changing business needs overtake their current tech strategy and trigger the need to start over. If they took a &#8220;big bang&#8221; approach, that means abandoning most of the work. Sound familiar?</p><p>The key insight is that you need to be able to <strong>build transitional architecture</strong> -- code that lets the new and legacy systems coexist, even though that code will eventually go away. People often balk at this because it feels like waste. But the reduced risk and earlier value from the gradual approach outweigh its costs.</p><h3><strong>Why I Like This</strong></h3><p>Is there overhead to developing this way? Yes. But that overhead <strong>affords you flexibility</strong>. If we can minimize the amount of overhead and still maximize the flexibility we get from it, that&#8217;s still aligned with my best interest in software development.</p><p>Think about it like waterfall versus agile. The idea with agile is having <strong>tighter feedback loops</strong> to make sure we keep steering in the right direction. The strangler fig approach gives you more opportunity for feedback. Yes, there could be more overhead, but instead of going completely off-course or misunderstanding your estimates, you do it in smaller chunks, get feedback, and adjust.</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>Real Examples from My Career</strong></h2><p>I&#8217;ll give you two examples from my professional experience.</p><p><strong>The Desktop Product:</strong> We had a SQLite database with a schema that was becoming really limiting. The amount of data had grown orders of magnitude, and our schema made working with that data a nightmare for new features. We started doing this data layer where we could share things in a new format -- kind of like the strangler fig approach for our data layer. But then we also just rewrote the entire product from scratch. We lived the problem: &#8220;Oh, users actually use this other thing this particular way and we didn&#8217;t think about that.&#8221; It was a nightmare. It was successful in the end, but I would do it completely differently if I had to do it again. I would absolutely try to build out modules and move things over to the new pattern over time.</p><p><strong>The Service:</strong> We had a legacy service where making code changes was quite difficult, and performance was being squeezed to the max. A new service was introduced primarily to address performance constraints. As the new service was built up, <strong>scenarios were brought over incrementally</strong>. Traffic was directed to the new service, tested, validated. Then the next scenario, and the next one. Over time, all the legacy code paths went from being 100% called down to zero, until you could turn off the old one.</p><p>Both of these were successful rewrites. But even the one done incrementally was probably underestimated for how long it would take. The first one? Certainly underestimated.</p><h2><strong>The Takeaway</strong></h2><p>Trust that when people are talking about rewrites and estimating the scope, <strong>it&#8217;s going to be way off</strong>. Whatever you say with as much confidence as you have, <strong>double it</strong>. It&#8217;s going to be off if you&#8217;re doing a full rewrite.</p><p>But what I&#8217;d encourage you to do is figure out how to <strong>step back from an all-or-nothing approach</strong> and see how you can do it incrementally. You might find that you get far enough along and realize -- hey, maybe parts you wanted to rewrite? No one even uses them. Maybe you deprecate them instead of rewriting them. You will learn things as you go, and approaching it incrementally gives you the opportunity to do that.</p><p>There is overhead to doing things incrementally. But that overhead affords you the flexibility to avoid cutting off life support for something that&#8217;s literally the reason users pay or the reason your entire platform exists.</p><p><strong>Incrementally is the way I recommend, if you can.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/over-optimism-of-rewrites-in-software?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/over-optimism-of-rewrites-in-software?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/over-optimism-of-rewrites-in-software/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/over-optimism-of-rewrites-in-software/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_!W21C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!W21C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!W21C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!W21C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W21C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d5fa185-6c64-4a20-adc2-f5d93d459675_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_!W21C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!W21C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!W21C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!W21C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d5fa185-6c64-4a20-adc2-f5d93d459675_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 role="img" 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><title></title><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>