<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Dev Leader Weekly]]></title><description><![CDATA[My weekly newsletter that simplifies software engineering for you, along with C# code examples. Join thousands of software engineers from companies like Microsoft and Amazon who are already reading!]]></description><link>https://weekly.devleader.ca</link><image><url>https://substackcdn.com/image/fetch/$s_!zuqM!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee7b925-847a-411b-a8bb-86cec91a2098_1280x1280.png</url><title>Dev Leader Weekly</title><link>https://weekly.devleader.ca</link></image><generator>Substack</generator><lastBuildDate>Mon, 11 May 2026 21:55:32 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[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><item><title><![CDATA[Side Projects and Soft Skills in Interviews]]></title><description><![CDATA[Dev Leader Weekly 125]]></description><link>https://weekly.devleader.ca/p/side-projects-and-soft-skills-in</link><guid isPermaLink="false">https://weekly.devleader.ca/p/side-projects-and-soft-skills-in</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sat, 31 Jan 2026 21:41:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IAXz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_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/01/31/side-projects-and-soft-skills-in-interviews-dev-leader-weekly-125" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IAXz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IAXz!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef68cf26-b9ba-45e9-8dff-baad02cec991_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;:54360,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://devleader.ca/2026/01/31/side-projects-and-soft-skills-in-interviews-dev-leader-weekly-125&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/186445166?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_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_!IAXz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!IAXz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef68cf26-b9ba-45e9-8dff-baad02cec991_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>Side projects help demonstrate learning</p></li><li><p>Soft skills are CRITICAL</p></li><li><p><strong><a href="https://youtube.com/live/_QRM_nmRg2I?feature=share">Check out the live stream on Monday, February 2nd at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><h1><strong>Beyond the Code</strong></h1><p>How often do you find yourself focusing purely on the technical details when you&#8217;re preparing for a software engineering interview? If you&#8217;re like most of us, you&#8217;re probably grinding <strong>LeetCode</strong> problems, sketching out <strong>system design</strong> diagrams, and making sure you can explain exactly how your favorite framework works under the hood.</p><p>I get it. I&#8217;ve been there. I&#8217;ve done that.</p><p>But as an engineering manager who has been hiring for over a decade, I&#8217;ve seen a recurring pattern: developers who can &#8220;nail&#8221; the technical rounds but still fail to land the offer. Usually, this happens because they miss the opportunity to showcase two critical areas: <strong>how they learn and grow,</strong> and <strong>the soft skills that make them a multiplier for a team</strong>.</p><h2><strong>Your Side Projects are a Narrative, Not Just a Repo</strong></h2><p>One of the biggest mistakes I see some developers make is assuming that the existence of a side project on a resume is the end of the story. If you got the interview, your project selection was decent enough to get you noticed, but the interview is where you actually have to <strong>sell the value of that experience</strong>.</p><p>To be clear: no, side projects are NOT a requisite for being qualified for a job. However, they can be an AWESOME way to showcase additional learning and experience that might not show up in your professional experience.</p><p>You can check out <strong><a href="https://www.youtube.com/watch?v=kRhxdyQgzLg">some of my thoughts on side projects in interviews in this video</a></strong>:</p><div id="youtube2-kRhxdyQgzLg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kRhxdyQgzLg&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/kRhxdyQgzLg?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><h3><strong>Focus on the &#8220;Stuck&#8221; and the &#8220;Unstuck&#8221;</strong></h3><p>When an interviewer asks about a project, don&#8217;t tell them it went perfectly smooth. If everything was easy, it&#8217;s honestly not that interesting to me as a hiring manager. I want to hear about <strong>where you got stuck and how you got unstuck</strong>.</p><p>This is your chance to demonstrate <strong>problem-solving focus</strong> and <strong>resourcefulness</strong> -- the core traits of an engineer. Explaining that you had to weigh multiple solutions before hitting your IDE or blasting prompts into ChatGPT shows me that you can think analytically and not just follow tutorials or vibe-code blindly.</p><h3><strong>The Value of &#8220;Reinventing the Wheel&#8221;</strong></h3><p>You&#8217;ve likely heard the advice &#8220;don&#8217;t reinvent the wheel,&#8221; but for side projects, <strong>reinventing the wheel is one of the best ways to understand complexity</strong>. If you built your own HTTP library or a custom game engine, talk about the appreciation you gained for the work that goes into big libraries. It shows you aren&#8217;t just a &#8220;copy-paste&#8221; developer; you&#8217;re someone who wants to know how the gears turn under the hood.</p><p>This isn&#8217;t necessarily the recommendation for building all software -- but it IS a cool opportunity to showcase that you wanted to dive into something and understand it. Curiosity is an awesome trait for an 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><h3><strong>Ask for the Interviewer&#8217;s Focus</strong></h3><p>Interviews can be vague, and system design or project walkthroughs are often left underdefined on purpose to see how you handle ambiguity. Before you dive into a 20-minute monologue about your database schema, stop and ask: <strong>&#8220;I have a lot to say about this project; is there anything in particular you&#8217;d like me to focus on?&#8221;</strong>.</p><p>Depending on the company, they might care about:</p><ul><li><p><strong>Design decisions:</strong> Why did you pick this specific tech stack over another?</p></li><li><p><strong>Market research:</strong> If it was a product, how did you think about user needs?</p></li><li><p><strong>Collaboration:</strong> Even on a side project, did you contribute to open source or work with a buddy? Highlighting <strong>teamwork</strong> is a massive value add because it&#8217;s a skill many juniors lack.</p></li></ul><h2><strong>Leveraging Skills from Other Industries</strong></h2><p>If you are transferring from a different career path, you have an <strong>enormous leg up</strong> that many people overlook. You shouldn&#8217;t just be trying to compete on technical skills; you should be leaning into your <strong>lived work experience</strong>.</p><p>If you&#8217;ve dealt with customers, managed projects, or navigated difficult team dynamics in a past life, those are high-value indicators for a hiring manager. Especially for junior devs or folks trying to break into a dev role, while others are trying to prove they can write a function, you can prove you can <strong>deliver value to a business</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://weekly.devleader.ca/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Why Soft Skills Trump Technical Depth</strong></h2><p>This might be a hot take, but in many cases, I value <strong>soft skills</strong> over <strong>technical depth</strong>.</p><p>If you have a candidate who is a technical &#8220;god&#8221; but is abrasive or impossible to work with, they can tank a team&#8217;s productivity from 100% down to nearly zero. As a manager, my goal is to create a <strong>multiplier effect</strong> where everyone makes those around them better. Multiplying anything by less than 1x means they&#8217;re taking away from overall team effectiveness. More on that <strong><a href="https://www.youtube.com/watch?v=Hwx5pVVR2ig">in this Code Commute video</a></strong>:</p><div id="youtube2-Hwx5pVVR2ig" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Hwx5pVVR2ig&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/Hwx5pVVR2ig?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><h3><strong>The Friction of Coaching</strong></h3><p>Here&#8217;s the reality from the manager&#8217;s desk: <strong>It is much easier to coach a technical gap than a soft skill gap</strong>. If you don&#8217;t know a specific library, I can give you the time and resources to learn it. But if you lack <strong>self-awareness</strong>, struggle with <strong>active listening</strong>, or constantly blame others, that is significantly harder to fix.</p><p>In my career, I have observed that it&#8217;s absolutely possible to coach on people skills... But it&#8217;s significantly more time and effort. And that&#8217;s on BOTH sides -- the EM and the employee. Not to mention, while that coaching is happening, there could be a greater impact felt across the team.</p><h3><strong>Red Flags and Radical Accountability</strong></h3><p>During the interview, I am actively looking for <strong>red flags</strong> in how you talk about your past experiences.</p><ul><li><p><strong>Blaming others:</strong> If every failure in your past was someone else&#8217;s fault (a &#8220;dumb&#8221; teammate or a &#8220;bad&#8221; manager), that&#8217;s a signal you don&#8217;t take <strong>radical accountability</strong>.</p></li><li><p><strong>Close-mindedness:</strong> If you insist there is only &#8220;one right way&#8221; to code and refuse to consider alternative perspectives, you&#8217;ll be a bottleneck for a collaborative team.</p></li></ul><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>Practice &#8220;Showing Your Work&#8221;</strong></h2><p>When you ask for help or explain a problem, <strong>be ready to show what you&#8217;ve tried so far</strong>. This isn&#8217;t just for on-the-job communication; it&#8217;s vital for interviews. If you get stuck on a coding problem, don&#8217;t just stare at the board. Explain your investigation. Proving you&#8217;ve put in the effort before seeking a shortcut tells the interviewer you are <strong>diligent and self-driven</strong>.</p><h2><strong>It&#8217;s Not Always You: The Factor of Luck</strong></h2><p>I want to end this by reminding you that <strong>interviews are a skill</strong>, and like any skill, they require practice. But even if you do everything right -- if you represent your projects perfectly and showcase great interpersonal skills -- you might still get a rejection.</p><p>Sometimes it just comes down to <strong>bad luck</strong>. Someone else might have shown up that day with a slightly better-aligned set of niche experiences, or the hiring committee was split.</p><p><strong>Don&#8217;t take it personally</strong>. You can only control what is in your power: your preparation, your curiosity, and your willingness to keep building. Focus on <strong>becoming the person</strong> who fits the role, rather than just looking for the shortcut to land the job.</p><p>Keep building, keep asking questions, and keep refining those &#8220;people&#8221; skills. They&#8217;ll take you further than any single line of code ever could.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/side-projects-and-soft-skills-in?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/side-projects-and-soft-skills-in?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/side-projects-and-soft-skills-in/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/side-projects-and-soft-skills-in/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_!O8L7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O8L7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2880a4f-040e-4f3c-921e-28630b7d90a7_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_!O8L7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!O8L7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2880a4f-040e-4f3c-921e-28630b7d90a7_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[Let's Check Out Copilot CLI]]></title><description><![CDATA[Dev Leader Weekly 124]]></description><link>https://weekly.devleader.ca/p/lets-check-out-copilot-cli</link><guid isPermaLink="false">https://weekly.devleader.ca/p/lets-check-out-copilot-cli</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sat, 24 Jan 2026 20:22:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!izUP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.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/01/24/lets-check-out-copilot-cli-dev-leader-weekly-124" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izUP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 424w, https://substackcdn.com/image/fetch/$s_!izUP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 848w, https://substackcdn.com/image/fetch/$s_!izUP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!izUP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izUP!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:39940,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://devleader.ca/2026/01/24/lets-check-out-copilot-cli-dev-leader-weekly-124&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/185664236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.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_!izUP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 424w, https://substackcdn.com/image/fetch/$s_!izUP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 848w, https://substackcdn.com/image/fetch/$s_!izUP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!izUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe853f4c9-57e4-4ad9-9006-38f2111cb091_1280x720.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>I like it even as an IDE user!</p></li><li><p>Powerful and integrates with Github ecosystem</p></li><li><p><strong><a href="https://youtube.com/live/DoSDh4f6NTI?feature=share">Check out the live stream on Monday, January 26th at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><h1><strong>GitHub Copilot CLI&#8217;s New Power Moves</strong></h1><p>If you spend time in the terminal, you know the sweet feeling of getting into flow and staying in flow. The latest GitHub Copilot CLI updates are built to let us do exactly that. Copilot CLI is essentially your AI pair programmer, right there in bash or Powershell. It &#8220;brings AI-powered coding assistance directly to your command line&#8221;, meaning it can not only write code but execute shell commands (with your permission) as part of its work. Think of it like chatting with a teammate named &#8220;Copilot&#8221; who never gets tired, works in the dark, and doesn&#8217;t mind repeating themselves.</p><p>Ever since Copilot CLI launched in public preview, the team has been on a tear adding features to make it more useful and predictable. The <strong><a href="https://github.blog/changelog/2026-01-21-github-copilot-cli-plan-before-you-build-steer-as-you-go/">January 2026 changelog</a></strong> sums it up nicely: Copilot CLI &#8220;continues to push the boundaries of agentic AI assistance in your terminal&#8221;. We&#8217;ve now got powerful new reasoning models, built-in planning tools, better context management, and even first-class GitHub CLI integration. These features can seriously upgrade your dev workflow. Let&#8217;s walk through what&#8217;s new, why it matters, and how you can make Copilot CLI work for you.</p><p>If you&#8217;re curious beyond the article, I have been starting to create videos around my usage with Copilot CLI, <strong><a href="https://www.youtube.com/watch?v=EPN85oJoL84">starting off with some basics on model selection</a></strong>:</p><div id="youtube2-EPN85oJoL84" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;EPN85oJoL84&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/EPN85oJoL84?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>Plan Mode: Map It Out Before You Code</strong></h2><p>One of the biggest headliners is Plan mode. The idea of &#8220;team-first development&#8221; applies here -- this is Copilot&#8217;s way of joining the planning meeting before the coding starts. Instead of rushing into code, you can use the <code>/plan</code> command (or press <code>Shift+Tab</code> to toggle between plan and normal mode) and Copilot switches into a conversational planning flow. It asks clarifying questions about scope and requirements, and then sketches out a structured implementation plan before writing a single line of code.</p><p>In practice, it&#8217;s like talking through the feature with a peer. Try it on a side project: say &#8220;build a simple todo API&#8221; and use <code>/plan</code>. Copilot will ask if you want REST endpoints or GraphQL, what kind of database, and how to handle edge cases. Give it a few details, and it generates a step-by-step plan you can review. Having this plan up front changes your perspective. It catches misunderstandings (you might realize you hadn&#8217;t specified a user auth requirement!), and gives you confidence in the approach before any code is written.</p><p>This kind of approach isn&#8217;t unique to the Copilot CLI, of course. Many of you have seen this with Claude Code, and <strong><a href="https://www.youtube.com/watch?v=ABtwd3V3KFI">I&#8217;ve even talked about planning discussions in GitHub spaces</a></strong>:</p><div id="youtube2-ABtwd3V3KFI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ABtwd3V3KFI&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/ABtwd3V3KFI?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><p>A quick tip: use <code>/clear</code> to reset the session if context gets messy, and <code>/cwd</code> to make sure Copilot is working in the right directory. Once plan mode is done, review the outline, then tell Copilot to run (by toggling out of plan mode with <code>Shift+Tab</code>) and watch it implement step by step. It&#8217;s a new way to work iteratively -- think, &#8220;plan, code, adjust, plan again,&#8221; rather than code blind. This fits a typical engineering workflow: first architect, then implement. Copilot CLI even remembers past plans to some extent (more on memory below), so your &#8220;plans for features&#8221; can become part of your project&#8217;s evolving documentation.</p><h2><strong>Slash Commands: Keyboard Shortcuts for AI</strong></h2><p>Working in the terminal is all about efficiency, and Copilot CLI&#8217;s slash commands are magic for that. These are literally commands that start with <code>/</code>, like <code>/clear</code>, <code>/model</code>, or <code>/add-dir</code>, and they trigger Copilot to perform a specific task. Instead of guessing the right natural language prompt, you just issue a command. As the docs say, slash commands give us &#8220;quick, explicit, and repeatable commands directly in your workflow&#8221;. A few of them quickly become muscle memory.</p><p>For example, start a fresh CLI session with <code>/clear</code> to wipe any old context. When switching projects, hit <code>/cwd &lt;path&gt;</code> to tell Copilot &#8220;now focus on this folder,&#8221; and it replies &#8220;Changed working directory to: &#8230;&#8221;. For a specific model or detail level, use <code>/model gpt-5.2-codex</code> to pick the latest code-specialized model (GPT-5.2-Codex is now available) or use <code>--model</code>. The command <code>/help</code> or just <code>/</code> will list everything available. These shortcuts make Copilot&#8217;s actions predictable and fast, which is huge. No more copy-pasting long prompts; there&#8217;s a command for common tasks like fixing linter errors, running tests, or even viewing session usage.</p><p>Copilot&#8217;s blog has a great <strong><a href="https://github.blog/ai-and-ml/github-copilot/a-cheat-sheet-to-slash-commands-in-github-copilot-cli/">slash-command cheat sheet</a></strong>. They highlight that <code>/clear</code>, <code>/cwd</code>, and <code>/model</code> cover your bases: clear the slate, set the directory, pick the intelligence level. Also worth knowing: <code>/add-dir</code> and <code>/list-dirs</code> to control file access (important in a team or security context), and <code>/review</code> for quick code reviews (more on that in a bit!). The nice part is that slash commands fit into any workflow: you type them while in a Copilot CLI chat, or even in a GitHub Copilot chat session elsewhere. They are explicit shortcuts, so every team knows exactly what&#8217;s happening (no magic voodoo prompt interpretation).</p><p>Pro tip -- slash shortcuts to remember: use <code>/clear</code> when Copilot is repeating old context, <code>/cwd</code> to switch projects, and <code>/model</code> if you want the highest quality output (or experiment with GPT-5.2&#8217;s &#8220;extra reasoning&#8221; level). And don&#8217;t forget <code>/delegate</code> to hand off complex tasks to Copilot&#8217;s cloud-based coding agent.</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>Steering and Iterating: Stay in Control</strong></h2><p>One big theme here is iterative, steerable workflows. Copilot CLI was already conversational, but now you can even chat with it during its thinking. Say Copilot is in the middle of generating code; you can type follow-up instructions on the fly, which enqueues them for after its current response. This is so handy. The conversation feels natural -- you don&#8217;t have to wait, type a new prompt, and wait again. You can correct course midstream. For example, say Copilot is writing a feature and you realize you need to tweak something: instead of restarting, just type an instruction like &#8220;Actually, use a priority queue here,&#8221; and it queues it up seamlessly.</p><p>To be honest, I am VERY much a die-hard Visual Studio user because I really prefer working in an IDE compared to a command line. But this ability to naturally interrupt and redirect the agent in chat makes the CLI experience really smooth. I&#8217;m hopeful we&#8217;ll see more of this migrate to Visual Studio as well.</p><p>If Copilot asks permission to run a tool (like <code>npm install</code> or <code>git</code>), you can now give quick inline feedback. If you reject an action, Copilot will ask why or adapt, rather than just stopping dead. It&#8217;s like telling your pair-programmer, &#8220;Hey, that&#8217;s a sensitive directory, try another way,&#8221; and the AI remembers for the rest of the session. The goal is keeping you in charge.</p><p>Another powerful feature is cloud delegation with <code>/delegate</code>. This command pushes your current session to Copilot coding agent on GitHub. When you run <code>/delegate complete the API integration tests</code>, Copilot will commit any unstaged changes as a checkpoint, create a new branch, and open a draft pull request. The coding agent then works in the background on GitHub&#8217;s infrastructure, and you&#8217;ll get a link to the PR and agent session. You can continue working locally while Copilot handles the delegated task in the cloud. I&#8217;m personally not at the point where this context switch is natural, but I do love delegating work to cloud agents in general so that I can focus on whatever else I am building.</p><p>All these features aim to make the workflow feel like coding with a live teammate, where you can pause, redirect, and multitask. No more waiting idly for long outputs or losing your train of thought while Copilot scribbles away.</p><h2><strong>Keeping Context Sharp: /compact and /context</strong></h2><p>Working iteratively means building up a conversation. But we all hit token limits eventually. Copilot CLI now handles that gracefully. It will auto-compress (auto-summarize) your chat history in the background when you hit about 95% of the token limit. You might not even notice it happening, except that your session can keep going &#8220;virtually infinite.&#8221; If you want control, use the <code>/compact</code> command anytime to manually force a trim. Press Esc to cancel if you change your mind.</p><p>And if you&#8217;re ever curious how much brain space Copilot is using, <code>/context</code> will give a token breakdown. This is especially useful when juggling multiple tasks in one session. Keeping context tight means the AI stays focused, which is crucial for accurate responses. In fact, Claude Code (Anthropic&#8217;s tool) also does auto-compaction when it gets full, so these agents are thinking about the same problems of context drift. The lesson for us is to periodically clear or compact context, especially when switching tasks -- otherwise AI suggestions can start referencing outdated stuff.</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>Enhanced Permissions: Trust But Verify</strong></h2><p>Teams working in sensitive codebases will appreciate the finer permissions controls. Now, when Copilot asks for tool approval, you can select &#8220;Yes, and approve TOOL for the rest of the running session&#8221; to automatically approve similar requests. For instance, if you let it run one <code>npm install</code>, it won&#8217;t bug you again for every package in that session. And if you do trust Copilot completely, there are flags like <code>--allow-all</code> (which enables auto-approval of all tools and paths) or the <code>/yolo</code> command to enable YOLO mode -- letting Copilot run freely without prompts. Use these carefully, but they can save clicks when you&#8217;re in a trusted environment (or just tinkering locally).</p><p>For me? Once I saw Copilot trying to push changes to my remote repository, I made a promise to myself that I wouldn&#8217;t touch YOLO mode. I feel quite confident with the file changes and such locally, but once it starts to try and push code on its own I get very concerned!</p><p>All of this makes Copilot&#8217;s actions more transparent and team-friendly. You&#8217;re building an audit trail. Slash commands like <code>/add-dir</code>, <code>/list-dirs</code>, and <code>/usage</code> ensure everything Copilot does is explicit. In a real-world team, that means there are no surprises about where your AI &#8220;coworker&#8221; is poking around.</p><h2><strong>Instant Code Reviews: The /review Command</strong></h2><p>A huge time-saver: the new <code>/review</code> command. Instead of jumping into GitHub.com or a separate tool, you can ask Copilot right in the terminal to review your latest changes. Just stage your code, run <code>/review</code>, and Copilot analyzes the diff. It will point out things like potential bugs, security issues, or anything odd it sees. It&#8217;s a &#8220;quick sanity check&#8221; without leaving your editor.</p><p>In practice, run this before you commit or open a PR. It&#8217;s like having a second set of eyes on your code. For example, <code>/review</code> might flag a missed null-check or a missing <code>await</code> in an async function -- issues you can fix before even pushing. This kind of on-the-fly review keeps quality high and saves rounds of back-and-forth later. If you&#8217;re on a team with coding standards, you can even feed Copilot a style doc via custom instructions (see next) so the feedback aligns with your conventions.</p><h2><strong>Custom Instructions: Teaching Copilot Your Project&#8217;s Rules</strong></h2><p>One of the most exciting under-the-hood updates is custom instructions support. Copilot CLI can read instruction files from your repository that persist across sessions. Think of it as teaching the AI your project&#8217;s personality. You define coding standards, architecture patterns, even how your team likes naming things, and Copilot references these instructions automatically.</p><p>Why does this matter? Because it means you don&#8217;t have to re-explain your project setup every session. Copilot will already know, &#8220;Oh right, we always put logging in this helper class,&#8221; or &#8220;We favor snake_case in our database fields.&#8221;</p><p>Copilot CLI supports these instruction file locations:</p><ul><li><p><strong>Repository-wide instructions:</strong> <code>.github/copilot-instructions.md</code></p></li><li><p><strong>Path-specific instructions:</strong> <code>.github/instructions/**/*.instructions.md</code></p></li><li><p><strong>Agent files:</strong> <code>AGENTS.md</code> (in git root and cwd)</p></li><li><p><strong>User-level instructions:</strong> <code>$HOME/.copilot/copilot-instructions.md</code></p></li></ul><p><strong>Note:</strong> If you&#8217;ve used Claude Code (Anthropic&#8217;s CLI tool), you may be familiar with <code>CLAUDE.md</code> files. Copilot CLI can also read <code>CLAUDE.md</code> and <code>GEMINI.md</code> files for compatibility, but its native instruction format is <code>.github/copilot-instructions.md</code>. If you&#8217;re setting up instructions specifically for Copilot, use the <code>.github/</code> path.</p><p>You can think of it like having a persistent conversation with the AI about your codebase. An easy way to use this is by creating a <code>.github/copilot-instructions.md</code> file in your repo that outlines the big rules of your project. Copilot will pick that up and adjust its answers. For example, if you save your API conventions in the instructions file specifying that you use Express, Copilot will stop suggesting incompatible frameworks like Sinatra.</p><p>Bottom line: invest a little effort in &#8220;teaching&#8221; Copilot once, and it pays dividends forever. Beyond that? I&#8217;ve made <strong><a href="https://www.youtube.com/watch?v=_XFxPm7YQ7U">videos talking about how I use Roslyn analyzers to further steer Copilot</a></strong>:</p><div id="youtube2-_XFxPm7YQ7U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_XFxPm7YQ7U&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/_XFxPm7YQ7U?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>GitHub CLI Integration: &#8220;gh copilot&#8221;</strong></h2><p>Another nice productivity bump: you can now install and run Copilot CLI through the GitHub CLI. Just run <code>gh copilot</code> in your terminal. The first time it will prompt you to install Copilot CLI, and after that <code>gh copilot</code> launches it. This is clutch for people who already use <code>gh</code> for their workflow. You can add it to a quickstart script so new teammates get Copilot CLI set up automatically.</p><p>Bonus: GitHub Actions will auto-install Copilot CLI too. So if you want to embed Copilot CLI tasks in a CI/CD pipeline, it&#8217;ll just come up without manual steps. In short, <code>gh copilot</code> turns Copilot CLI into a first-class citizen of the GitHub tool ecosystem. Don&#8217;t overlook this: using <code>gh copilot</code> means you don&#8217;t have to juggle Homebrew or npm installs on every machine.</p><h2><strong>Looking Around: Claude Code and Other AI CLI Tools</strong></h2><p>You might wonder how this stacks up with other AI coding CLI tools like Anthropic&#8217;s Claude Code. In concept, they share some ideas: Claude Code also has a plan-mode (activated by <code>Shift+Tab</code>) and slash commands, so you can create a file of tasks and iterate through them. One blogger <strong><a href="https://www.reddit.com/r/ClaudeAI/comments/1m7zlot/how_planmode_and_four_slash_commands_turned/">demonstrated a workflow</a></strong> with custom slash commands to manage a checklist-style development flow. For a deeper dive into Claude Code&#8217;s features, check out this <strong><a href="https://www.producttalk.org/how-to-use-claude-code-features/">guide to slash commands, agents, and skills</a></strong>.</p><p>But Copilot CLI ties tightly into GitHub. For example, Copilot&#8217;s <code>/delegate</code> can push tasks to GitHub&#8217;s cloud-based coding agent, and <code>/review</code> plugs directly into your Git diffs. Claude Code, on the other hand, uses <code>CLAUDE.md</code> context files and its own agents. Both have context compaction and memory features. For a <strong><a href="https://jgandrews.com/posts/claude-and-copilot/">side-by-side comparison of these tools</a></strong>, check out jgandrews&#8217; writeup. The key takeaway is that whether you use Copilot CLI or Claude Code, the pattern is similar: break your work into steps, keep the context clear, and iterate. If your team uses GitHub everywhere, Copilot CLI is a natural choice -- but it&#8217;s worth knowing other tools exist.</p><p>(And for the record: yes, <strong><a href="https://www.reddit.com/r/ClaudeAI/comments/1nzxueu/yes_claude_code_can_talk_to_github_copilot_cli/">in Claude Code you can even route it to call GitHub Copilot CLI</a></strong> via shell if you really want to mix and match, which is a fun experiment but gets advanced quickly.)</p><h2><strong>Actionable Tips for Your Workflow</strong></h2><p>Let&#8217;s translate all this into things you can do right now:</p><ul><li><p><strong>Install Copilot CLI:</strong> If you have GitHub CLI (<code>gh</code>) installed, just run <code>gh copilot</code>. It will handle the install or prompt you. Otherwise follow the docs. Make sure you&#8217;re on Copilot Pro/Enterprise if it asks for licensing.</p></li><li><p><strong>Explore /help:</strong> Open a Copilot CLI session, type <code>/</code> or <code>/help</code>, and get familiar with commands. Try <code>/clear</code>, <code>/cwd</code>, <code>/list-dirs</code>, <code>/review</code>. The <strong><a href="https://github.blog/ai-and-ml/github-copilot/a-cheat-sheet-to-slash-commands-in-github-copilot-cli/">cheat sheet on the GitHub blog</a></strong> is a great reference.</p></li><li><p><strong>Try Plan Mode:</strong> Pick a small feature you want to build (even &#8220;Write a function to...&#8221;). Use <code>/plan</code> or press <code>Shift+Tab</code> in the CLI to enter plan mode. See what questions Copilot asks. Answer them. When you&#8217;re done, review the plan and toggle back to normal mode. Watch how Copilot turns plan into code.</p></li><li><p><strong>Use Cloud Delegation:</strong> For a longer task (like scaffolding a module or complex refactor), try <code>/delegate your task description here</code>. Copilot will create a branch and PR, then work in the background on GitHub while you continue locally.</p></li><li><p><strong>Commit Reviews:</strong> Before your next commit, stage your changes and run <code>/review</code>. Take Copilot&#8217;s feedback seriously. It might catch security issues, missing docs, or suggest improvements.</p></li><li><p><strong>Set Custom Instructions:</strong> Create a <code>.github/copilot-instructions.md</code> file describing your project&#8217;s tech stack, conventions, and goals. Copilot CLI will use that as context. This is like having a consistent onboarding for the AI.</p></li><li><p><strong>Monitor Usage:</strong> If you&#8217;re on a plan with usage limits (e.g. Copilot Pro has a token budget), use <code>/usage</code> and <code>/session</code> to see what you&#8217;ve spent during your session. It helps avoid surprises on your bill.</p></li><li><p><strong>Join the Community:</strong> The Copilot CLI repo on GitHub is public. If something doesn&#8217;t work, check the issues there. Since it&#8217;s still in public preview, the team is actively listening. Also, share your tips with your teammates -- these features are still new to many of us.</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>Keep Coding, Together</strong></h2><p>Copilot CLI&#8217;s updates are not just shiny new toys; they&#8217;re designed to fit how we actually build software. Planning, clear commands, context-awareness, and the ability to course-correct mirror a good team workflow. Using these features feels like having a dedicated helper who&#8217;s learning your codebase and following directions -- fast and tireless, but definitely still on your team.</p><p>Experiment with these tools, but stay in the loop. AI isn&#8217;t here to replace the dev on the team, it&#8217;s here to eliminate grunt work. Keep reviewing what Copilot does (after all, you know the project best), and feed your insights back to it (literally through instruction files). If it makes you more productive and your code more polished, it&#8217;s earned its place in the toolkit.</p><p>Ready to dive in? Open up your terminal, update Copilot CLI, and start chatting. Ask it to draft a plan, run tests, fix bugs, or explain code -- all without leaving your shell. At the end of the day, these new Copilot CLI features mean one thing: more time writing good code and less time context-switching between windows.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://weekly.devleader.ca/p/lets-check-out-copilot-cli?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/lets-check-out-copilot-cli?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/lets-check-out-copilot-cli/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/lets-check-out-copilot-cli/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_!uH0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uH0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0f74db8-4773-4bca-a410-d086af17b9ec_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_!uH0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!uH0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f74db8-4773-4bca-a410-d086af17b9ec_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 Software Outside of Work - AMA]]></title><description><![CDATA[A recording from Dev Leader's live video]]></description><link>https://weekly.devleader.ca/p/building-software-outside-of-work-818</link><guid isPermaLink="false">https://weekly.devleader.ca/p/building-software-outside-of-work-818</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Tue, 20 Jan 2026 04:24:10 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/185141484/d16918deeba3c478d75cea691e8a81ce.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div class="install-substack-app-embed install-substack-app-embed-web" data-component-name="InstallSubstackAppToDOM"><img class="install-substack-app-embed-img" src="https://substackcdn.com/image/fetch/$s_!zuqM!,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"><div class="install-substack-app-embed-text"><div class="install-substack-app-header">Get more from Dev Leader in the Substack app</div><div class="install-substack-app-text">Available for iOS and Android</div></div><a href="https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&amp;utm_content=author-post-insert&amp;utm_source=devleaderweekly" target="_blank" class="install-substack-app-embed-link"><button class="install-substack-app-embed-btn button primary">Get the app</button></a></div>]]></content:encoded></item><item><title><![CDATA[Building Software Outside of Work]]></title><description><![CDATA[Dev Leader Weekly 123]]></description><link>https://weekly.devleader.ca/p/building-software-outside-of-work</link><guid isPermaLink="false">https://weekly.devleader.ca/p/building-software-outside-of-work</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Sat, 17 Jan 2026 19:43:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PvXR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_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/01/17/building-software-outside-of-work-dev-leader-weekly-123" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PvXR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PvXR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75882,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://devleader.ca/2026/01/17/building-software-outside-of-work-dev-leader-weekly-123&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/184894614?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.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_!PvXR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!PvXR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6231667-2d21-47ce-b8bc-f20737ccaeff_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>It&#8217;s NOT required</p></li><li><p>... You probably will find value in doing it</p></li><li><p><strong><a href="https://youtube.com/live/6fHnTs9BxUM?feature=share">Check out the live stream on Monday, January 19th at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><h2><strong>Building Software Outside of Work Hours</strong></h2><p>This topic gets people weirdly emotional.</p><p>On one side, you have the crowd that treats side projects like a moral requirement. If you aren&#8217;t coding after work, you are falling behind, you don&#8217;t want it enough, and you are basically doomed. On the other side, you have people who act like building anything outside of work is automatically unhealthy, or that anyone who does it must be compensating for something.</p><p>Both extremes are missing the point.</p><p>You don&#8217;t <em>need</em> to build software outside of working hours to be a legitimate software engineer. Your life does not have to revolve around your job. You can love software and still want to spend your evenings with your family, at the gym, playing games, reading, or doing literally anything that has nothing to do with code. That is normal. That is healthy. And it does not make you less serious as a developer.</p><p>But if you are someone who <em>wants</em> to build outside of work, then we can talk about how to make it effective. Not performative. Not guilt-driven. Effective.</p><p>Because here is the reality: building outside of work can be a career accelerator, a learning tool, a confidence booster, and sometimes even a path to income. It can also be a fast track to burnout if you approach it like a second job with no boundaries. So the question is not, &#8220;Should everyone do side projects?&#8221; The question is, &#8220;What are you trying to get out of it, and does your approach actually match that goal?&#8221;</p><p>That is where people get stuck, and you can <strong><a href="https://www.youtube.com/watch?v=mvS1HZ9Ipzg">watch my Code Commute video on the topic too</a></strong>:</p><div id="youtube2-mvS1HZ9Ipzg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mvS1HZ9Ipzg&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/mvS1HZ9Ipzg?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>Start with the why, not the what</strong></h2><p>Most people start with, &#8220;What should I build?&#8221; and that&#8217;s the wrong first question, in my honest opinion. If you don&#8217;t know <em><strong>why</strong></em> you are building, you will pick a project that does not fit your life, does not fit your energy, and does not fit your outcomes. Then you will quit and assume you lack discipline, when really you just started with the wrong framing.</p><p>In my experience, most &#8220;why&#8221; buckets fall into four categories.</p><p>The first is skilling up in an area you are not getting to touch at work. Maybe you build backend services all day, but you want frontend experience. Maybe you have done mobile for years and want to learn web. Maybe you have been living inside one stack and you want to explore something else because you are thinking about a role change. If your workplace supports internal mobility and your manager can help you find opportunities, that is ideal. Learn on the job, get real constraints, and get paid while you do it. But if those opportunities are not there, building outside of work can fill the gap.</p><p>The second bucket is resume and portfolio material. This is especially common for junior devs, but it applies at any level when your resume feels light in a specific area. I want to be careful here though: the goal is not to create shiny projects. I have never hired someone because their side project had tons of users. The value is being able to talk about what you built, why you built it, the tradeoffs you made, what you learned, and what you would do differently. If you can&#8217;t explain it, the project does not help you. It sets you up for an awkward interview where you are basically forced to admit you do not understand your own work.</p><p>The third bucket is income or entrepreneurship. Sometimes you have a problem in your own life, you solve it, and then you realize other people might pay for it too. Sometimes you want freelance work, consulting, or a product business. This is a completely different game than learning for learning&#8217;s sake. If your goal is customers, you should optimize for shipping and reliability, not novelty. And this is where I see people shoot themselves in the foot by trying to learn an entirely new stack while also trying to build something sellable. That combo is brutal. It slows you down, increases frustration, and makes the whole thing feel like a grind.</p><p>The fourth? Well, you probably don&#8217;t need to read a newsletter article on it if your why fits into this bucket: Because you find it fun. I spent a lot of time in this bucket of building things, especially super early in my programming journey. I just liked building games and things related to games! I realize not everyone will fall into this category, and that&#8217;s totally fine. If you find yourself here, the nice thing is that you can get coverage on all three other buckets and it won&#8217;t even feel like work.</p><p>So whatever your why is, be honest about it. And don&#8217;t be afraid to change it. The mistake is pretending your goal is learning when you are actually chasing resume validation, or pretending your goal is income when you are really just curious and experimenting. Different goals demand different approaches.</p><h2><strong>Activation energy is real, NOT a character flaw</strong></h2><p>Even with a solid why, building outside of work can feel hard. Not because you are lazy, but because doing &#8220;more work&#8221; after you already worked all day is hard. That is just reality.</p><p>There is a massive difference between wanting to build because you are excited and forcing yourself to build because you feel like you should. When it feels like obligation, the activation energy is huge. You sit down, open the laptop, and suddenly cleaning your kitchen feels like a thrilling adventure.</p><p>If you want consistency, your best lever is making the starting friction lower. A simple way to do that is aligning the project with something you already care about. It does not have to be deep passion. Just enough interest that it pulls you in.</p><p>Video games are an easy example because a lot of developers already like them. If you have a favorite game, build something adjacent to it. Not a massive community tool. Something small:</p><ul><li><p>A tracker</p></li><li><p>A checklist</p></li><li><p><strong><a href="https://www.youtube.com/watch?v=x4z1gON7lso">A Pokedex-style database</a></strong></p></li><li><p>A loot log</p></li><li><p>A build comparison tool</p></li><li><p>A stat calculator</p></li></ul><p>Even something dumb and fun is fine, because the point is not the app. The point is lowering the barrier to starting.</p><p>And if you are thinking, &#8220;Yeah but I don&#8217;t care about games,&#8221; cool. Use whatever you do care about:</p><ul><li><p>Fitness</p></li><li><p>Cooking</p></li><li><p>Music</p></li><li><p>Personal finance</p></li><li><p>Sports</p></li></ul><p>Your hobbies are full of tiny problems that can become tiny projects. Tiny projects are what get finished. Finished projects are what create momentum.</p><h2><strong>Too many ideas? Pick one.</strong></h2><p>Some people don&#8217;t have an activation energy problem. They have an overwhelming problem. They have a list of ideas, and they cannot pick the &#8220;best&#8221; one, so they pick none.</p><p>There is no best idea. There is only the idea you actually start.</p><p>If you have ten ideas, write them down and pick one. Literally pick one. Random number generator if you need it. You will learn more by building the &#8220;wrong&#8221; project than by spending three months optimizing your decision.</p><ul><li><p>Starting is a skill.</p></li><li><p>Scoping is a skill.</p></li><li><p>Finishing something small is a skill.</p></li></ul><p>Those skills transfer to every other project you will ever do.</p><h2><strong>Keep most variables fixed, or risk drowning</strong></h2><p>One practical guideline that saves people a ton of pain is this: don&#8217;t make everything new at once.</p><p>If you want to learn Postgres, don&#8217;t also simultaneously learn:</p><ul><li><p>a new language</p></li><li><p>a new framework</p></li><li><p>a new cloud provider</p></li><li><p>and a new deployment approach.</p></li></ul><p>That&#8217;s a recipe for stalling. The more unknowns you stack, the more likely you are to hit a wall, and once you hit the wall the motivation drops fast.</p><p>Instead, pick one or two things you want to learn and keep the rest familiar.</p><ul><li><p>If you are a C# developer and you want database experience, keep C# and learn Postgres.</p></li><li><p>If you want to learn Python, build a small service with a database you already know.</p></li><li><p>If you want to learn cloud deployment, keep your stack familiar and focus on the deployment pipeline.</p></li></ul><p>You are trying to create a learning environment, not a chaos environment.</p><h2><strong>Match process to goal, or risk wasted effort</strong></h2><p>This is where people get lost in the sauce. They start building, they get distracted by architecture, they rewrite everything twice, they chase the perfect framework, they reorganize folders for a week, and they feel productive because they were busy. But they aren&#8217;t necessarily moving toward their goal.</p><p>... Unless your goal was practicing refactoring and system rewrites. In which case, heck yeah!</p><p>If your goal is learning, you need to slow down enough to understand what you are doing. AI tools can help, but they can also trick you into thinking you learned something when you just shipped something. If you can&#8217;t explain it, you didn&#8217;t learn it. If you are using AI, use it to ask &#8220;why&#8221; questions, explore tradeoffs, and clarify concepts. Don&#8217;t use it like a slot machine until code appears that compiles.</p><p>If your goal is resume material, focus on projects that create good stories. You want to be able to walk someone through the situation, what you built, why you chose that approach, what you struggled with, and what you learned. That is what makes a project valuable. Not the number of stars, not the number of users, not whether it looks fancy in screenshots.</p><p>If your goal is customers or income, you need to bias toward shipping and stability:</p><ul><li><p>Reduce novelty.</p></li><li><p>Use known tools.</p></li><li><p>Build the smallest viable version.</p></li><li><p>Get it in front of people.</p></li><li><p>Iterate.</p></li></ul><p>Don&#8217;t turn the project into an excuse to rebuild your entire identity as an engineer.</p><h2><strong>A reality check before we wrap up</strong></h2><p>Building outside of work is optional. It&#8217;s a tool. It can be a great tool. But it&#8217;s not a moral requirement and it&#8217;s not the only path to growth. You can grow by:</p><ul><li><p>Taking on harder work at your job</p></li><li><p>By mentoring</p></li><li><p>By reading</p></li><li><p>By deliberate practice</p></li><li><p>By learning through reviews</p></li><li><p>By pairing with stronger engineers</p></li><li><p>AND by being intentional about the work you accept.</p></li></ul><p>If you <em>do</em> want to build outside of work, do it intentionally. Start with the <em><strong>why</strong></em>. Keep it aligned with your life. Reduce activation energy by aligning with interests. Keep most variables fixed. Match your approach to your goal. And build small enough that you can actually finish and learn.</p><p>That is how side projects become something that improves your career and your confidence instead of something that just makes you feel guilty on a Sunday night.</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_!AN16!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!AN16!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!AN16!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!AN16!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AN16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_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_!AN16!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!AN16!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!AN16!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!AN16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bf7f322-d4a7-4812-9a7a-a9fe96ab196f_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[FAANG interview tips ]]></title><description><![CDATA[A recording from Dev Leader's live video]]></description><link>https://weekly.devleader.ca/p/faang-interview-tips-e1f</link><guid isPermaLink="false">https://weekly.devleader.ca/p/faang-interview-tips-e1f</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Tue, 13 Jan 2026 04:35:29 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184396025/c47521d241029df3d66b1dd7f98d3271.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div class="install-substack-app-embed install-substack-app-embed-web" data-component-name="InstallSubstackAppToDOM"><img class="install-substack-app-embed-img" src="https://substackcdn.com/image/fetch/$s_!zuqM!,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"><div class="install-substack-app-embed-text"><div class="install-substack-app-header">Get more from Dev Leader in the Substack app</div><div class="install-substack-app-text">Available for iOS and Android</div></div><a href="https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&amp;utm_content=author-post-insert&amp;utm_source=devleaderweekly" target="_blank" class="install-substack-app-embed-link"><button class="install-substack-app-embed-btn button primary">Get the app</button></a></div>]]></content:encoded></item><item><title><![CDATA[FAANG Interview Tips]]></title><description><![CDATA[Dev Leader Weekly 122]]></description><link>https://weekly.devleader.ca/p/faang-interview-tips</link><guid isPermaLink="false">https://weekly.devleader.ca/p/faang-interview-tips</guid><dc:creator><![CDATA[Dev Leader]]></dc:creator><pubDate>Mon, 12 Jan 2026 17:12:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MnB0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_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/01/12/faang-interview-tips-dev-leader-weekly-122" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MnB0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MnB0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e8859e3-cb02-4708-8682-26af2d84fc4e_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;:138762,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://devleader.ca/2026/01/12/faang-interview-tips-dev-leader-weekly-122&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://weekly.devleader.ca/i/184337683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_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_!MnB0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 424w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 848w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_1080x720.webp 1272w, https://substackcdn.com/image/fetch/$s_!MnB0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8859e3-cb02-4708-8682-26af2d84fc4e_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>LeetCode, System Design, and Behavioral</p></li><li><p>... AI is likely going to change the landscape here</p></li><li><p><strong><a href="https://youtube.com/live/Dt4M0k_WIR0?feature=share">Discuss YOUR resolutions on the live stream on Monday, January 12th at 7:00 PM Pacific</a></strong>!</p></li></ul><div><hr></div><h2><strong>FAANG Interviews Aren&#8217;t One Skill Test</strong></h2><p>If you&#8217;re preparing for interviews at FAANG or other big tech companies, one of the biggest mistakes I see people make is assuming that being &#8220;good at coding&#8221; is enough.</p><p>It isn&#8217;t. Don&#8217;t get me wrong... it&#8217;s a BIG part of it, but it&#8217;s not the only part of it.</p><p>FAANG-style interview loops are intentionally multi-dimensional. You are not being evaluated on a single axis, and success in one round does not compensate for being unprepared in another. These interviews are designed to test <em>different skills</em>, in <em>different ways</em>, across <em>different contexts</em>.</p><p>At a high level, you should expect three major categories of interviews:</p><ul><li><p>Coding rounds: These are (generally) your LeetCode-style questions</p></li><li><p>System design rounds: These are (generally) &#8220;build me a clone of system X&#8221;</p></li><li><p>Behavioral rounds: These are (generally) &#8220;tell me about a time when...&#8221;</p></li></ul><p>And the key point I want to stress is this: <strong>each one requires deliberate, targeted preparation</strong>. You should <strong>NOT</strong> wing these. Relying on general experience alone is likely only going to get you so far. And you absolutely cannot treat them as interchangeable.</p><p>Let&#8217;s walk through each one.</p><h2><strong>Coding Rounds: Yes, You Still Have to Practice</strong></h2><p>Like it or not, coding interviews at FAANG companies are still largely LeetCode-style problem solving. And if you&#8217;ve heard me talk about this stuff online, whether it&#8217;s social media posts, videos, or live streams... I am NOT a fan of LeetCode style questions for interviews. I <strong><a href="https://www.youtube.com/watch?v=FUrKKlJEQvE">touch on it here on Code Commute</a></strong>:</p><div id="youtube2-FUrKKlJEQvE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FUrKKlJEQvE&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/FUrKKlJEQvE?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><p>I strongly dislike the format because I don&#8217;t think it reflects real-world software development, and I don&#8217;t think it does a good job of measuring engineering effectiveness. I&#8217;ve felt this way for years, both as an interviewer and as an engineering manager.</p><p>That said, your opinion on LeetCode is irrelevant to the outcome of your interview. Yeah -- I&#8217;ve also had to do the LeetCode grind for principal-level engineering management roles. I don&#8217;t like it, but it&#8217;s unfortunately what&#8217;s in place. If they ask me, they are absolutely going to ask you as a software engineer.</p><p>If you are interviewing at a FAANG company today, you should assume that you will be asked LeetCode-style questions. These questions are not just about getting <em>a</em> solution. They are about:</p><ul><li><p>Explaining your approach clearly</p></li><li><p>Identifying tradeoffs</p></li><li><p>Understanding time and space complexity</p></li><li><p>Refining a naive solution into a better one</p></li></ul><p>Even very strong engineers struggle here if they haven&#8217;t practiced recently, and I feel it&#8217;s because this style of problem-solving is more &#8220;artificial&#8221;. It rewards familiarity with patterns and tricks rather than day-to-day engineering tasks -- like working in existing large scale systems.</p><p>I&#8217;d recommend that you:</p><ul><li><p>Carve out time multiple times per week to practice questions. Daily is great if you can make the time for it.</p></li><li><p>Try not to look at the answers. Ideally, you&#8217;re not memorizing outcomes but instead navigating questions.</p></li><li><p>Build confidence in the &#8220;easier&#8221; questions before moving up. You&#8217;ll find the patterns/approaches can stack and layer.</p></li></ul><p>So if you&#8217;re preparing for interviews, you need to carve out time specifically for this. Daily practice or several sessions per week is not excessive. This is one of those areas where reps matter. You don&#8217;t have to like it. You do have to prepare for it. You can check out resources like:</p><ul><li><p><strong><a href="https://leetcode.com/">LeetCode</a></strong></p></li><li><p><strong><a href="https://neetcode.io/">NeetCode</a></strong></p></li></ul><p>One HUGE caveat to all of this... AI is absolutely changing the world we live in as software engineers. That means interviews are very likely going to be affected. At the time of writing this, we&#8217;re starting to see some companies (including Big Tech) start to explore changes here... So I am optimistic we&#8217;ll see this move away from the current LeetCode format to something more practical.</p><h2><strong>System Design: Understanding Beats Memorization</strong></h2><p>System design interviews are often misunderstood, especially by engineers earlier in their careers.</p><p>These interviews are not about drawing the &#8220;correct&#8221; architecture. There is no single right answer. What interviewers are evaluating is how you <em>think</em>, how you <em>reason about tradeoffs</em>, and how you <em>handle ambiguity</em>.</p><p>A typical system design question might sound like &#8220;Design a video sharing platform&#8221; or &#8220;Design a food delivery system.&#8221; The biggest mistake candidates make is jumping straight into solutions.</p><p>Don&#8217;t do that. I know -- it&#8217;s super hard because the gears start turning RIGHT away and you&#8217;re probably excited to get into it.</p><p>The first part of a strong system design interview is clarifying requirements:</p><ul><li><p>Functional requirements</p></li><li><p>Non-functional requirements</p></li><li><p>What&#8217;s in scope</p></li><li><p>What&#8217;s out of scope.</p></li><li><p>Scale assumptions</p></li><li><p>Latency expectations</p></li><li><p>Consistency tradeoffs</p></li></ul><p>Only after you&#8217;ve aligned on those should you start proposing components. These are often not directly told to you by the interviewer -- you&#8217;re expected to ask about these things. These constraints will influence the system you&#8217;re about to build in the interview.</p><p>So, yes, you should practice system design. But I want to be very clear about something: <strong>memorization is a trap</strong>.</p><p>If you&#8217;ve memorized a specific &#8220;Uber design&#8221; or &#8220;YouTube design&#8221; and the interviewer asks a follow-up question you don&#8217;t understand, it becomes painfully obvious very quickly. You end up describing boxes and arrows without actually knowing why they exist. Understanding why certain components are used matters far more than remembering that they exist.</p><p>If you don&#8217;t understand something while practicing:</p><ul><li><p>Stop and dig in! This is the perfect time for it!</p></li><li><p>Ask an LLM. Ask for pros and cons. Ask why one approach is preferred over another.</p></li><li><p>Build intuition, not scripts. What should happen to your design if one of the constraints changes?</p></li><li><p>Check out newsletters from awesome creators like <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;System Design Classroom&quot;,&quot;id&quot;:2391457,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/systemdesignclassroom&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdb90e4a-4569-433d-93c4-a4863e3d54ef_69x69.png&quot;,&quot;uuid&quot;:&quot;cc678a9a-8111-45ca-bbaf-5a97238328d2&quot;}" data-component-name="MentionToDOM"></span> and <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;The System Design Newsletter&quot;,&quot;id&quot;:1511845,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/systemdesignone&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1c8067a-95bb-416b-9114-e0b9fb8821d4_256x256.png&quot;,&quot;uuid&quot;:&quot;9d96249d-2b4d-4b17-952a-184d54f85b4e&quot;}" data-component-name="MentionToDOM"></span> </p></li></ul><p>As you move up in seniority, system design tends to carry more weight. Junior roles skew more heavily toward coding. Senior roles shift toward design, tradeoffs, and technical leadership. Every company will do this a little bit differently, but that&#8217;s a generalization that should be applicable.</p><p>Which brings us to the last category.</p><h2><strong>Behavioral Interviews Are Not About Technology</strong></h2><p>Behavioral interviews are where a lot of otherwise strong candidates stumble.</p><p>These questions are not asking you to explain your tech stack. They are not asking you to justify architectural decisions. They are asking you to demonstrate how you operate as a human being in a team. Questions like:</p><ul><li><p>&#8220;Tell me about a time you disagreed with a teammate.&#8221;</p></li><li><p>&#8220;Tell me about a time you handled conflict.&#8221;</p></li><li><p>&#8220;Tell me about a time you had to make a decision with limited information.&#8221;</p></li></ul><p>Even when the scenario is technical, the evaluation is not. This is the important thing to keep in mind, because it&#8217;s very easy for us as engineers to want to explain all of the interesting technical details -- it&#8217;s just not the right time for it.</p><p>Interviewers are listening for things like:</p><ul><li><p>How you communicate</p></li><li><p>How you handle disagreement</p></li><li><p>Whether you listen to others</p></li><li><p>How you navigate tradeoffs</p></li><li><p>Whether you can reflect on outcomes honestly</p></li></ul><p>The STAR method (Situation, Task, Action, Result) exists for a reason. It forces structure and clarity. If you struggle to frame answers, this is an area where using AI to rehearse and refine your stories can be incredibly effective.</p><p>One important tip here: many companies publish their core values. Those values directly influence behavioral interview questions.</p><p>If a company values &#8220;bias for action,&#8221; expect questions about acting under uncertainty. If they value &#8220;ownership,&#8221; expect questions about accountability and responsibility. If they value &#8220;collaboration,&#8221; expect questions about conflict and alignment.</p><p>Not only can you find these core values on company websites, you can work with your favorite LLM to help you out with these questions. For example, if you are practicing for your Meta interview, you could ask:</p><blockquote><p>I am applying for a level XYZ software engineering role at Meta. Factoring in Meta&#8217;s core values (optionally give it the link to assist with accuracy), give 10 level-appropriate example behavioral interview questions.</p></blockquote><p>(You can even steer the prompt to be more specific, so things like conflict resolution, project management, handling ambiguity, etc...)</p><p>You can and should practice behavioral interviews intentionally. This is not fluff. These rounds carry real weight, <strong>especially</strong> at senior levels.</p><h2><strong>AI Is Changing Interviews</strong></h2><p>I wanted to put this explicit reminder in here again that AI is already forcing changes in how interviews are run, especially coding interviews. LLMs can trivially solve many LeetCode problems. That reality isn&#8217;t going away, and I&#8217;m sure we&#8217;ll see more and more of this surfacing.</p><p>Some companies are experimenting with allowing AI during interviews. Others are shifting toward collaborative exercises. Others haven&#8217;t changed at all yet. But there <strong>IS</strong> change happening in the industry.</p><p>The important takeaway is this: <strong>you should prepare for the current reality, not the future you hope for</strong>. And as you are preparing for the current reality, keep tabs on how these processes are changing -- because change is happening rapidly.</p><p>Today, FAANG interviews still test coding, system design, and behavioral skills independently. Until that changes across the board, you need to be ready for all three. I&#8217;ll do my best to report on what I see changing as I see it changing because this is a critical part of getting your foot in the door to do awesome engineering work.</p><h2><strong>The Big Picture</strong></h2><p>FAANG interviews are not a test of how smart you are. They are a test of how prepared you are across multiple dimensions.</p><p>You need:</p><ul><li><p>Focused practice for coding rounds</p></li><li><p>Structured thinking for system design</p></li><li><p>Self-awareness and communication for behavioral interviews</p></li></ul><p>None of these are optional. None of them are interchangeable. Your level and which company you are applying to may dictate the weight of each of these categories... but you need them all.</p><p>If you approach interview prep intentionally, with respect for each category, your odds improve dramatically. If you assume one strength will carry you through the entire loop, you&#8217;re taking a risky bet.</p><p>Prepare accordingly. Feel free to <strong><a href="https://codecommute.com/contact">send in any questions</a></strong> so that I can help answer!</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_!hJ_8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hJ_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp" width="705" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc5af7e3-2ff1-432f-94d3-a5bc39beb938_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_!hJ_8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 424w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 848w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_705x397.webp 1272w, https://substackcdn.com/image/fetch/$s_!hJ_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5af7e3-2ff1-432f-94d3-a5bc39beb938_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>