<?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[Leading By Commit]]></title><description><![CDATA[Writing about engineering leadership, org design, the craft of software, and the messy human problems that sit underneath all of it.]]></description><link>https://blog.leadingbycommit.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!cwXt!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b74a1cd-2acb-473d-899f-686e0b65b669_512x512.png</url><title>Leading By Commit</title><link>https://blog.leadingbycommit.dev</link></image><generator>Substack</generator><lastBuildDate>Thu, 14 May 2026 03:32:08 GMT</lastBuildDate><atom:link href="https://blog.leadingbycommit.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Matias Luraschi]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[matiasluraschi@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[matiasluraschi@substack.com]]></itunes:email><itunes:name><![CDATA[Matias Luraschi]]></itunes:name></itunes:owner><itunes:author><![CDATA[Matias Luraschi]]></itunes:author><googleplay:owner><![CDATA[matiasluraschi@substack.com]]></googleplay:owner><googleplay:email><![CDATA[matiasluraschi@substack.com]]></googleplay:email><googleplay:author><![CDATA[Matias Luraschi]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Autonomy Paradox]]></title><description><![CDATA[Why service-oriented orgs ask teams to own what they can't deliver]]></description><link>https://blog.leadingbycommit.dev/p/the-autonomy-paradox</link><guid isPermaLink="false">https://blog.leadingbycommit.dev/p/the-autonomy-paradox</guid><dc:creator><![CDATA[Matias Luraschi]]></dc:creator><pubDate>Mon, 11 May 2026 14:05:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xmaf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>The Paradox</strong></h2><p><a href="https://teamtopologies.com/book">Team Topologies</a> promised us faster flow, stronger ownership, and autonomous delivery. Many companies have embraced it: small, cross-functional teams led by a PM and an EM, each owning a slice of the domain. It sounds clean and modern. But in a distributed architecture, this structure breaks down fast, and the paradox underneath becomes hard to ignore.</p><h2><strong>Where the Model Breaks</strong></h2><p>A service-oriented architecture promises modularity. Systems are broken down into smaller, independently deployable services, each owned by a team. The benefits are well-understood: teams can move faster, scale more predictably, and make decisions locally. From a platform and infra perspective, it makes sense. From an engineering perspective, it lets teams limit their cognitive load. But here&#8217;s where the first crack shows. A feature, especially a user-facing one, doesn&#8217;t care about team boundaries.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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><p>Most features a PM is tasked with delivering will span multiple domains and touch multiple systems. That&#8217;s the nature of any non-trivial product in this architecture. A simple tax-filing flow? That&#8217;s not just a UI. It&#8217;s customer data, service eligibility, authentication, document storage, invoicing, reconciliation, tax logic, submission APIs, and the list goes on. And each of those pieces? Owned by a different team.</p><p>But PMs don&#8217;t own systems. PMs own problems and outcomes. The moment we expect a PM embedded in a single team to &#8220;own&#8221; the delivery of a feature that relies on many systems outside that team&#8217;s scope, we&#8217;re setting up a contradiction. We tell the PM they have autonomy. We tell the team they are autonomous. But to deliver the thing, they are <strong>not</strong> autonomous. They depend on systems, and therefore on teams, outside their control.</p><p>The org might try to resolve this by encouraging &#8220;strong ownership&#8221; or &#8220;full accountability&#8221; within the team. But that creates another tension. For a team to own something end to end, it would have to take responsibility for systems it does not own, understand codebases it doesn&#8217;t touch daily, and coordinate work with people who don&#8217;t report into their EM or PM structure. That isn&#8217;t autonomy, that&#8217;s orchestration. We&#8217;re just not acknowledging it for what it is.</p><p>So we end up in this in-between state. The PM is measured on outcomes that require multi-team execution. The team is staffed and planned as if it can deliver independently. But reality doesn&#8217;t comply. The work needs cross-team coordination, dependency management, and shared priorities. And the way we&#8217;ve structured teams and leadership models assumes the opposite.</p><p>This is the autonomy paradox.</p><p>We want teams to own their domain, but we also want them to deliver outcomes that span many domains. We want PMs to drive features, but we anchor them in teams that only own fragments of the necessary scope. We say we value speed and flow, but the moment a feature crosses a team boundary, and most do, we hit coordination overhead, roadmaps misaligned by quarters, and duplicated discovery efforts. We push for &#8220;ownership,&#8221; but the things we&#8217;re asking people to own don&#8217;t match the boundaries we&#8217;ve drawn.</p><h2><strong>Local Optimization and the Legacy Trap</strong></h2><p>Engineering teams try to collaborate, but they don&#8217;t have time, because they also have a full roadmap. The team is still expected to deliver in the original timeframe. So they optimize for what they were assembled around: autonomy. They build their own solution, promise to migrate later, and ship it. Now there are duplicated systems to maintain. Migrations that need to be planned and prioritized never get prioritized. The new system becomes legacy from day one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xmaf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xmaf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xmaf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xmaf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!Xmaf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F077d48de-f7e2-4c72-8be1-8d68d8cf190b_1024x608.png 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><h2><strong>Conway&#8217;s Law in Action</strong></h2><p>It&#8217;s a textbook example of Conway&#8217;s Law in action: teams are structured to be autonomous, so they build autonomous systems, even when those systems duplicate logic or drift from shared architectural principles. The shape of the org leaks into the shape of the software.</p><blockquote><p><strong>Conway&#8217;s Law</strong>: &#8220;Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.&#8221; &#8212; <em>Melvin Conway, 1968</em></p></blockquote><p>It&#8217;s a structural tension between the way we define ownership and how systems are architected, not just a planning issue. The more we insist on holding both ends of the rope, &#8220;teams should be autonomous&#8221; and &#8220;PMs should deliver outcomes end to end,&#8221; the more strained it becomes.</p><p>At some point, we have to acknowledge this for what it is. A paradox born not out of bad intentions or poor planning, but out of the friction between product thinking and distributed systems design. Until then, we keep seeing teams caught in the gap: accountable for things they don&#8217;t control, delivering features that always seem harder than they should be, and wondering why autonomy feels so elusive.</p><h2><strong>Systems as Products, EMs as Owners</strong></h2><p>If we expect EMs to own the technical strategy for the systems they&#8217;re responsible for, and we should, then we also have to treat those systems as more than back-end infrastructure. They are products. Internal products, sure, but products nonetheless. Systems that map to specific business domains, evolve over time, and offer value to other teams through clear APIs. When these systems are built and maintained thoughtfully, they reduce what other teams need to build and own to deliver their own outcomes. They make everything faster and cheaper. They shrink the cost of change.</p><p>So if we&#8217;re already asking EMs to think this way, what&#8217;s the role of the PM? Do we need to pair every team with one? Can&#8217;t we expect EMs to weigh bugs, tech debt, and system improvements against the new features required for upcoming initiatives? And if so, why do we still treat PMs as the ones responsible for prioritizing every team&#8217;s backlog?</p><p>In many setups, PMs spend more time project-managing engineers than solving customer problems. Their calendar is filled with sprint planning, backlog grooming, and chasing alignment across three other PMs. Their role becomes more about coordination than clarity. That&#8217;s a poor use of a product function. We don&#8217;t need PMs babysitting engineers, we need them driving product thinking, working with design, research, analytics, and other disciplines to shape and refine real solutions. They should consult engineering on feasibility and iteration planning, yes. But once the initiative is shaped and prioritized, that work should be handed over to the teams whose systems are impacted.</p><p>The expectation, then, is that the business defines and prioritizes the initiatives. The PMs responsible for each initiative bring that list to the EMs, who assess which of their teams should contribute based on system ownership and available capacity. If something doesn&#8217;t align with their system, they shouldn&#8217;t be forced to own it. If it does, they step in. The negotiation happens at the boundaries. Questions get clarified between EMs and PMs. Tradeoffs are made. Once the picture is clear, the EMs commit to delivering the necessary changes in their systems. They own that delivery.</p><p>A given team might work across multiple initiatives at once. That&#8217;s fine. That&#8217;s how distributed systems work. Each team contributes to the pieces that intersect with the systems they own. EMs are the ones accountable for defining these collaborations and aligning with other EMs to make sure delivery happens. It&#8217;s honest, even when it&#8217;s neither clean nor neat. And it gives engineering leaders real responsibility, instead of pretending that every team is autonomous and every PM is the CEO of their own mini-startup.</p><p>This model acknowledges that systems are long-lived, and that the cost of building new features should decrease over time as systems evolve and become more reusable. It creates incentives to build the right abstractions, not just ship local solutions. It encourages teams to treat their systems like products. And it gives EMs the space to run their teams while holding them, and the engineers in them, accountable.</p><h2><strong>What the Business Must Provide</strong></h2><p>This setup also assumes something critical from the business: clarity of priorities. If we expect EMs to decide where their teams contribute, there needs to be a ranked, non-negotiable list of what matters most to the company at any given time. That list needs to be maintained, communicated, and respected.</p><p>This shouldn&#8217;t be controversial. Someone in leadership, the CEO or the CPO or a cross-functional exec group, should be able to say: &#8220;These are the most important problems we need to solve this quarter.&#8221; Without that, planning devolves into lobbying, local prioritization, and disconnected bets. You get misaligned teams, partially built features, and a lot of time spent doing work that doesn&#8217;t compound.</p><p>In a service-oriented setup, that kind of clarity matters even more. If initiatives are going to be staffed across multiple teams, each contributing just a piece, then everyone needs to be solving for the same goal. Otherwise, the architecture takes the blame for a prioritization failure.</p><p>Structure is only half the question. The other half is what teams are empowered to focus on, and who gets to decide what matters. If we want engineering teams to behave like owners, we need to give them clear signals, not vague mandates. We need to stop confusing autonomy with isolation, and stop pretending that PMs embedded in every team are the only way to deliver product value.</p><h2><strong>Decoupling Teams and Initiatives</strong></h2><p>The traditional PM&#8211;EM pairing tightly couples initiatives to teams. As the number of initiatives grows, the model pressures organizations to scale headcount, replicate roles, and anchor new PMs to new teams, even when the underlying systems don&#8217;t require that scale. But initiatives and teams don&#8217;t need to grow in lockstep. In fact, they shouldn&#8217;t. This model breaks that dependency. It lets initiatives scale independently, spanning systems and domains as needed, while the engineering organization stays focused. Engineering only scales when the domain grows in complexity, not when coordination grows in volume.</p><p>It&#8217;s Conway&#8217;s Law again, but in reverse. We&#8217;ve let organizational structure dictate not just the shape of systems, but the flow of initiatives. When every PM is tied to a specific team, we force initiatives to mirror that structure, splitting work across systems that don&#8217;t naturally align, or bloating teams just to reflect growing scope.</p><h2><strong>A Better Operating Model</strong></h2><p>This model is about product management as much as engineering, and about making sure they focus where it matters most. It pulls them out of backlog mechanics and into the harder work: problem discovery, customer understanding, cross-cutting initiative leadership. When both disciplines are trusted to operate at their highest level, we stop wasting cycles on ownership theater and start building systems and products that move together.</p><h2><strong>The Velocity Trap</strong></h2><p>If anything, AI sharpens this paradox. When a team can spin up its own version of an existing system in days instead of months, the duplication trap closes faster. The friction that used to slow a team down long enough to ask &#8220;wait, doesn&#8217;t another team already own this?&#8221; has gotten cheap to ignore. Without the discipline of treating systems as products and decoupling initiatives from teams, we get the same paradox at higher velocity, with more autonomy theater and faster legacy.</p><div><hr></div><blockquote><p><strong>Author Notes</strong></p><p>I&#8217;ve led engineering teams across more than 15 years and several companies, and I&#8217;ve seen both models in action. The teams operating under the second one were consistently the healthier ones &#8212; better architecture, stronger engagement, real ownership, engineers proud of what they shipped. They aligned with other teams without being told to. They had real technical discussions. They were proud of <em>how</em> they shipped, not just that they shipped.</p><p>What I keep coming back to is why the first model became so dominant, and why it&#8217;s so hard to challenge. The second one asks product to operate without a dedicated delivery team for every initiative, and shifts more responsibility onto engineering. Both costs feel real to the people paying them. Neither, in my experience, is bigger than what the first model quietly costs everyone else.</p><p>Next week&#8217;s piece picks this up with the AI lens turned on directly: what team boundaries, ownership, and coordination cost look like when so much of the work runs through models.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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>]]></content:encoded></item><item><title><![CDATA[The Mission Before the Metric]]></title><description><![CDATA[On change management, gamified incentives, and the easy way to lose the plot]]></description><link>https://blog.leadingbycommit.dev/p/the-mission-before-the-metric</link><guid isPermaLink="false">https://blog.leadingbycommit.dev/p/the-mission-before-the-metric</guid><dc:creator><![CDATA[Matias Luraschi]]></dc:creator><pubDate>Mon, 04 May 2026 10:49:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P9RW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>The Token Trap</strong></h2><p>Last week I was reading <a href="https://newsletter.pragmaticengineer.com/p/the-pulse-tokenmaxxing-as-a-weird-6b2">a piece by Gergely Orosz</a> on what he calls &#8220;tokenmaxxing.&#8221; Companies, eager to prove their employees are using AI, have started measuring adoption by tokens consumed. The more tokens you burn, the more &#8220;AI-native&#8221; you must be. The metric climbs, and the chart gets shared in the all-hands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P9RW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P9RW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P9RW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png&quot;,&quot;srcNoWatermark&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a111b74-bc15-4e16-a8aa-86cf5ca4bbc6_1024x608.png&quot;,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P9RW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!P9RW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8072a11-a5ed-4f50-961a-3369a4b23ceb_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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><p>And of course, humans being humans, the metric gets gamed. Long, padded prompts. Openclaw instances (or any other personal assistant tool) that don&#8217;t bring any real value. Tokens spent for the sake of spending tokens. Somewhere in the middle of that vertical climb, the question quietly disappears: <em>what were we trying to achieve in the first place?</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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><p>I read it and thought about every cultural change I&#8217;ve led, and every one I&#8217;ve been on the receiving end of. The pattern is older than AI. The names and the dashboards change with the times, but the underlying failure is consistent: we reach for the tactic before we&#8217;ve done the work that makes it earn anything.</p><h2><strong>What We Forget Before We Push</strong></h2><p>We&#8217;re driven by incentives. That&#8217;s an observation, not a moral statement. Gamifying things works. Carrots work and so do sticks. Public dashboards work, often well enough that leaders treat them as a substitute for the harder, slower work that needs to come first.</p><p>The harder work is two questions, and they need to live in people&#8217;s heads before any incentive is announced:</p><ol><li><p><strong>What are we changing?</strong></p></li><li><p><strong>Why? What business outcome are we expecting from this change?</strong></p></li></ol><p>If those two questions aren&#8217;t engrained, the metric becomes the goal and the dashboard becomes the work. People will hit the number, and the company will mistake the number for the change. By the time leadership realizes &#8220;tokens spent&#8221; doesn&#8217;t equal &#8220;better engineers,&#8221; a quarter has been spent training the wrong reflex.</p><p>This is the most common way change initiatives quietly fail. The incentive isn&#8217;t usually wrong on its own. The problem is that nobody finished the sentence before reaching for it.</p><h2><strong>The Three Groups</strong></h2><p>Once the <em>what</em> and the <em>why</em> are clear, you can think about who you&#8217;re moving.</p><p>In every change I&#8217;ve led, the room has split into roughly three groups.</p><p>The <strong>early adopters</strong> move on their own. They&#8217;ve already been thinking about it, or they trust the direction. You don&#8217;t need to convince them, you need to hand them the keys. Done well, they become your most credible promoters, much more credible than you, because they&#8217;re not the ones being paid to push it.</p><p>The <strong>vast majority</strong> are persuadable but not eager. They&#8217;ll come along because the <em>why</em> makes sense and the mission resonates. Leaderboards don&#8217;t move them on their own. The leaderboard might help once they&#8217;re already moving, but what really moves them is understanding why this matters, and trusting that the people asking aren&#8217;t doing it for a quarterly slide.</p><p>The <strong>detractors</strong> won&#8217;t be convinced. Some are protecting something. Others don&#8217;t like the idea for reasons they may or may not articulate. A few are right, and you should listen carefully before assuming they&#8217;re not. The rest will come along eventually, late, mostly out of fear of being left behind, and that&#8217;s fine. Not everyone needs to believe. Pretending otherwise just leads to performative agreement, which is worse than honest dissent.</p><h2><strong>The Path of Least Resistance</strong></h2><p>Something I&#8217;ve come to believe over the years: people don&#8217;t dislike change so much as they dislike <em>friction</em>. We&#8217;re creatures of habit, yes, but more precisely, we&#8217;re creatures of efficiency. The known path is paved while the new one is still gravel. When the choice is &#8220;do the thing I&#8217;ve always done in two clicks&#8221; versus &#8220;learn a new tool, fight an unfamiliar UI, and produce something I don&#8217;t even know is good yet,&#8221; the brain picks gravel last every time.</p><p>So the first job of the leader driving the change is to pave the new path so aggressively that the old one stops being the easier one. Pushing harder doesn&#8217;t accomplish much when the old path is still smoother.</p><p>Show people exactly how to do it the new way. Document it, build templates, run lunch-and-learns, find the early adopters and ask them to build the visible examples. Make the first attempt frictionless, even if you have to absorb the cost personally.</p><p>And then watch for the <em>first friction</em>. This is the part most leaders miss. People who are already feeling the discomfort of doing something unfamiliar will drop the new way the instant they hit a snag. Not the third snag, the first one. A link that 404s, or a doc that&#8217;s out of date. They quietly revert, and they don&#8217;t tell you, because reverting feels less like failure than persisting and looking foolish.</p><p>Your job is to anticipate that first friction and remove it before they hit it. If you can&#8217;t anticipate it, react within hours, not weeks. Every time someone hits a wall and you fix it before they give up, you protect a believer.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/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://blog.leadingbycommit.dev/subscribe?"><span>Subscribe now</span></a></p><h2><strong>The Contract Behind the Change</strong></h2><p>I wrote a few weeks ago about <a href="https://blog.leadingbycommit.dev/p/when-staying-becomes-the-betrayal">the unwritten contract</a> between engineering leaders and the engineers they lead. I keep coming back to it because it sits underneath almost everything we do, and change management is no exception.</p><p>If you&#8217;re driving a change you don&#8217;t believe in, your engineers will know. Not from anything you say, but from the half-beat of hesitation when you describe the <em>why</em>, or from the slogans that don&#8217;t quite match how you talk privately. They read posture better than slides.</p><p>A change initiative is one of the moments where that contract gets stress-tested most. You&#8217;re asking people to do something uncomfortable, and the only currency you have to spend is their trust that you&#8217;re asking for the right reasons. If you spend that currency on something you yourself don&#8217;t think is right, the cost compounds. Every future change you try to drive becomes harder.</p><p>The corollary: if you&#8217;re being asked to drive a change you don&#8217;t believe in, that&#8217;s information. The job is to push back upstream until either the change makes sense, or you decide you can&#8217;t honestly carry it. Performing conviction you don&#8217;t have isn&#8217;t the answer.</p><h2><strong>Then, the Tactics</strong></h2><p>Once the <em>what</em> and the <em>why</em> are clear, the new path is paved, the first frictions are being hunted down, and you&#8217;re honest about what you&#8217;re asking, <em>now</em> you can reach for the tactical levers.</p><p>This is where gamification, dashboards, leaderboards, and public progress reviews start to work. They amplify a change that&#8217;s already moving, but they can&#8217;t create one from nothing.</p><p>But set them with care. Pick metrics that measure the outcome you said the change would deliver, not a proxy that&#8217;s easy to count. And don&#8217;t set them alone. Set guardrail metrics next to the headline ones, the kind that tell you when the dashboard is being gamed, or when the new way is being adopted only on the surface. Review them together. If the headline number is climbing while the guardrails are flashing red, the change isn&#8217;t working, no matter what the chart says, and you have to steer.</p><p>Metrics can always be played. That&#8217;s why you should never trust a single one in isolation.</p><p>I had a manager once who told me that as a leader driving a change, you should talk about it until people start making jokes about it. About the change, or about you for talking about it. The joke is when you know it&#8217;s landed, not the dashboard. The joke means it&#8217;s part of the room now, internalized enough to mock and familiar enough to riff on. That&#8217;s what cultural change looks like from the inside: a running gag, and the surest sign you&#8217;ve done the slow work right.</p><h2><strong>What Tokens Can&#8217;t Buy</strong></h2><p>Back to the tokenmaxxing piece, because it&#8217;s a useful mirror.</p><p>The companies counting tokens aren&#8217;t wrong to want their engineers using AI more. They might even be right about the strategic urgency. What they got wrong was the order. They reached for the metric before doing the work that makes the metric mean anything. They never defined what the change looks like in practice, why it matters in terms the engineers could believe in, what the new path looks like, or where the first frictions live. Without t</p><p>hat groundwork, the metric ends up being the only visible artifact of the change, so it becomes the thing that gets optimized.</p><p>Token counts go up. The actual change, engineers using AI to do better work and keep their judgment intact, may or may not happen, and the dashboard can&#8217;t tell you which one you got.</p><p>So if you&#8217;re about to push a change in your org, before you build the dashboard or announce the leaderboard, ask yourself the two questions and don&#8217;t move on until they&#8217;re answered.</p><p>What are we changing?</p><p>Why?</p><p>If the answers are clear, the rest gets easier. If they&#8217;re not, no amount of tactical incentive will save you.</p><div><hr></div><blockquote><p><strong>Author Notes</strong></p><p>I started writing this after reading Gergely Orosz&#8217;s piece on tokenmaxxing and noticing how much it overlapped with patterns I&#8217;ve seen for years, long before AI was the thing being pushed. The change is always the new shiny, but the failure mode rhymes: people skip the <em>why</em> and mistake the dashboard for the work.</p><p>The thing I find myself thinking about most these days is how much trust gets spent in change initiatives, more than most leaders realize. You only get a few of these in a single tour at a company before people stop showing up to the all-hands. Spend it on changes you believe in, and do the slow work first.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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>]]></content:encoded></item><item><title><![CDATA[The Joy of Building Again]]></title><description><![CDATA[How AI reminded me why I started coding in the first place]]></description><link>https://blog.leadingbycommit.dev/p/the-joy-of-building-again</link><guid isPermaLink="false">https://blog.leadingbycommit.dev/p/the-joy-of-building-again</guid><dc:creator><![CDATA[Matias Luraschi]]></dc:creator><pubDate>Mon, 27 Apr 2026 10:30:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gqjQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>The Drift</strong></h2><p>I became an engineer because I&#8217;m curious. Not because I loved code, not at first. I wanted to understand how things work. Technology was one of those things. I&#8217;d pick something apart, try to make it do what I wanted, and when it didn&#8217;t work I couldn&#8217;t let it go. I&#8217;d stay with the problem until it did. That obsession is what pulled me into software. Code was just the tool that let me scratch that itch.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gqjQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gqjQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gqjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg" width="1024" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:79741,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.leadingbycommit.dev/i/195562539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gqjQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gqjQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009d133b-b7fb-4000-b9bc-b331e62a0224_1024x576.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But curiosity doesn&#8217;t stay in one lane. The same thing that made me dig into how systems work made me want to understand how businesses work. How decisions get made. How teams organize around problems. How domains break down into smaller, simpler pieces. And it turned out that ability, to quickly digest a domain, understand how it works, break it apart, translated very well into leadership and eventually management.</p><p>So I followed it. I led a project. Then a team. Then a few teams. I was still close to the code at first, reviewing PRs, jumping into architecture discussions, maybe shipping a fix here and there on a weekend. But slowly, the distance grew. My calendar filled up with 1:1s, planning sessions, stakeholder syncs, hiring loops. The IDE stayed closed for longer stretches. And at some point, without a specific moment I can point to, I realized I hadn&#8217;t written anything meaningful in months.</p><p>And for a while, that was fine. The curiosity was being fed, just differently. New domains to understand, new organizational problems to break down, new people dynamics to figure out. The leverage was real. I was helping ten, twenty, fifty engineers do their best work. That mattered. But eventually, that too became familiar. The patterns repeated. The novelty faded. The same curiosity that had pushed me into management started to feel unsatisfied by it. It wasn&#8217;t enough anymore. It got boring.</p><p>And the builder in me, the one who&#8217;d gone quiet, started to feel restless.</p><p>What made it worse was the growing sense that the gap had become too wide to close. The ecosystem moves fast. New frameworks every year. New languages gaining traction. The frontend world alone had reinvented itself three times since I&#8217;d last built a UI. I&#8217;d look at a modern React codebase and feel like a tourist. I still understood the fundamentals, architecture, systems thinking, tradeoffs, but the hands-on fluency? That was gone. And with it, a quiet resignation: maybe I&#8217;m just not a builder anymore. Maybe that chapter is over.</p><p>Then AI happened.</p><h2><strong>The Barrier That Disappeared</strong></h2><p>I don&#8217;t mean AI as a concept. I mean AI as a tool you sit down with and build things. The moment I opened a code assistant for the first time, described what I wanted in plain English, and watched it produce working code, something clicked. The code wasn&#8217;t perfect. But the barrier I&#8217;d been staring at for years, the one between &#8220;I know what I want to build&#8221; and &#8220;I can actually build it,&#8221; had just gotten a lot smaller.</p><p>Think about what used to stand between an idea and a working prototype. You needed to pick a language. A framework. A build system. You needed to understand whatever frontend ecosystem was trending that year. Bundlers, state management, component libraries. You needed a backend. A database. Authentication. Deployment. Each of these was its own learning curve, its own rabbit hole. And if you&#8217;d been away from it for a few years? The rabbit holes had moved.</p><p>This was the classic fullstack problem. You know that meme?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8hjB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8hjB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8hjB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg" width="991" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:991,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142585,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.leadingbycommit.dev/i/195562539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8hjB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8hjB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4636de70-3660-408a-821e-8c23a30ba684_991x704.jpeg 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><p>That was every engineer who tried to do it all. You could be great at the backend and ship a UI that looked like it was built in 2008. Or you could nail the frontend and have an API that fell over under any real load. Being truly fullstack, the kind where both halves of the horse look good, was rare. It required constant investment across multiple disciplines that were each evolving on their own.</p><p>AI erased that problem. Not entirely, but enough to change the game. I don&#8217;t need to know the latest React patterns to build a decent-looking UI. I don&#8217;t need to remember the exact syntax for setting up an Express server or configuring a Docker container. I describe the intent, review what comes back, adjust, iterate. The cycle that used to take days now takes hours.</p><p>Funny enough, the first thing I built with an AI assistant was something I&#8217;d been thinking about for over a year but never started because the frontend work alone felt like a weekend I didn&#8217;t have. I had it running in a few hours. It wasn&#8217;t production-ready, it wasn&#8217;t pretty, but it worked. And I remember thinking: I haven&#8217;t felt this in a long time.</p><p>The joy came back. Having an idea on a Sunday morning and a working prototype by the afternoon. I hadn&#8217;t felt that in years. AI didn&#8217;t just lower the barrier to entry. It gave me back something I thought I&#8217;d lost.</p><h2><strong>The New Reality</strong></h2><p>This isn&#8217;t just my story. It&#8217;s happening everywhere. A designer can prototype a working app without writing a line of code. A product manager who used to file tickets and wait three sprints can now build the internal tool themselves over a weekend. I&#8217;ve seen teenagers ship real products without knowing what a framework even is. The entry point to software has moved from &#8220;learn to code&#8221; to &#8220;describe what you want.&#8221;</p><p>And that&#8217;s exciting. For personal projects, for experimentation, for scratching your own itch, this is a great time to be alive. The cost of trying has dropped to near zero. You don&#8217;t need to learn a new framework every time you want to build something. You don&#8217;t need to understand the full stack. You don&#8217;t need years of experience. AI gets that part done for you.</p><p>So should everyone code? For their own things, personal tools, side projects, things that make their lives easier, yes. Absolutely. The ability to turn an idea into working software is powerful, and AI has made it accessible to a lot more people. That&#8217;s a good thing.</p><p>But here&#8217;s where I stop.</p><h2><strong>The Profession Behind the Code</strong></h2><p>Being able to produce code is not the same as being able to produce software. AI has turned <strong>writing code</strong> into a commodity. Translating intent into syntax is something it handles well. But software engineering was never just about writing code. It was about knowing <em>which</em> code to write, where to put it, and what happens when it fails.</p><p>Can AI generate a login flow? Sure. Will it handle rate limiting, session management, token rotation, CSRF protection, and audit logging correctly out of the box? Probably not. Will it know that the database schema it just designed will cause a full table lock under concurrent writes? No. Will it understand that the microservice it just scaffolded violates the bounded context you&#8217;ve spent six months defining? Definitely not.</p><p>These aren&#8217;t edge cases. They&#8217;re what separates a prototype from a production system. A demo from a product. Something that works on your laptop from something that serves a million users without falling over, leaking data, or costing ten times what it should.</p><p>So when someone says &#8220;AI will replace software engineers,&#8221; I think they&#8217;re confusing coding with engineering. The typing part got easier. The thinking part didn&#8217;t. If anything, it got harder, because there&#8217;s more code being generated faster than ever, and someone still has to decide whether it should exist, whether it&#8217;s correct, and whether it belongs. Reading code now matters more than writing it.</p><p>And honestly, if I had to tell an engineer one thing about staying relevant: stop worrying about whether AI can write your code. Start worrying about whether you can tell good code from bad code when it&#8217;s generated at ten times the speed you&#8217;re used to reviewing it. That&#8217;s the real challenge now.</p><h2><strong>The Joy and the Responsibility</strong></h2><p>So here I am. Building again. Shipping side projects on weekends. Prototyping ideas that have been sitting in my head for years. The gap I thought was too wide to close turned out to be smaller than I feared. AI didn&#8217;t replace what I know. It just removed the friction that was keeping me from using it.</p><p>I still carry something that a non-engineer using the same tools doesn&#8217;t: the instinct for when something is wrong. That feeling when a pattern is off, or a dependency feels risky, or a shortcut is going to cost more than it saves. A surgeon and a first-year med student can both hold a scalpel. The difference is knowing where to cut. That&#8217;s not gatekeeping. That&#8217;s the profession.</p><p>So if you&#8217;re an engineering leader who&#8217;s been feeling the same drift, too many meetings, too far from the code, quietly convinced that modern tooling has moved on without you, just try it. Open a code assistant. Describe something you&#8217;ve wanted to build for months. Start small. You&#8217;ll be surprised how quickly the muscle memory comes back. What you know hasn&#8217;t gone anywhere. And the joy is still there.</p><p>And this isn&#8217;t just for leaders. If you&#8217;re an engineer earlier in your career, AI won&#8217;t replace what you know, it&#8217;ll amplify it, if you&#8217;re building real judgment underneath. If you&#8217;re a student, treat AI as the most patient tutor you&#8217;ll ever meet, but don&#8217;t confuse using it with learning the thing itself. And if you&#8217;re a parent, like I am, wondering what your kid should study, don&#8217;t worry about the specific degree. What matters is judgment. Understanding how things work. Being able to think clearly. AI will change most professions. It won&#8217;t change our need for people who can make good calls.</p><div><hr></div><blockquote><p><strong>Author Notes</strong></p><p>I wrote this article partly for myself. The transition from builder to manager is something most engineering leaders go through, and very few talk honestly about what it costs. You gain leverage and influence, but you lose the direct connection to the craft. That simple, addictive loop of write, run, see. It goes away so gradually you almost don&#8217;t notice.</p><p>AI gave me that back, and I&#8217;m grateful for it. But it also made me think about what I actually bring to the table after all these years. And I think the answer isn&#8217;t the code. It&#8217;s everything around the code. The context, the judgment, the scar tissue from systems that failed in ways you only understand after you&#8217;ve lived through them.</p><p>The tools changed. The craft didn&#8217;t.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/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://blog.leadingbycommit.dev/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/p/the-joy-of-building-again?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://blog.leadingbycommit.dev/p/the-joy-of-building-again?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[When Staying Becomes the Betrayal]]></title><description><![CDATA[On the unwritten contract between leaders and the engineers who trust them.]]></description><link>https://blog.leadingbycommit.dev/p/when-staying-becomes-the-betrayal</link><guid isPermaLink="false">https://blog.leadingbycommit.dev/p/when-staying-becomes-the-betrayal</guid><dc:creator><![CDATA[Matias Luraschi]]></dc:creator><pubDate>Mon, 20 Apr 2026 10:12:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cwXt!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b74a1cd-2acb-473d-899f-686e0b65b669_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>The Quiet Part</strong></h2><p>There&#8217;s a moment, and it&#8217;s never the one you expect, where you realise you&#8217;re going to leave. It doesn&#8217;t come during a heated argument or a bad quarter. It comes on a Tuesday afternoon, mid-sentence in a meeting, when someone says something and you feel nothing. No pushback. No frustration. Not even the energy to disagree. Just a flat recognition that the gap between what you believe and what you&#8217;re being asked to do has gotten too wide to bridge.</p><p>I&#8217;ve led engineering organisations for over fifteen years. I&#8217;ve weathered bad quarters and difficult reorgs, strategies I didn&#8217;t love, people decisions that kept me up at night. That&#8217;s part of the job. You don&#8217;t leave because things are hard, you stay because the hard things are worth doing. Because you believe the direction is right even when the path is rough.</p><p>But what do you do when you stop believing?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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 Means</strong></h2><p>I want to be precise about this, because alignment gets thrown around a lot in leadership circles and it&#8217;s worth defining what I mean.</p><p>Alignment is not agreement. I&#8217;ve disagreed with my manager and my peers. That&#8217;s healthy. If you&#8217;re surrounded by people who agree with you on everything, you have a different problem. Disagreement on strategy, on timelines and/or on sequencing is the normal friction of building something complex. You argue, you commit, you move forward.</p><p>Alignment breaks somewhere deeper. It breaks when the values shift. When the way a company thinks about its product and its people changes in a way you can&#8217;t reconcile with your own principles. It&#8217;s not about a single decision. It&#8217;s about a pattern. The company you joined, the one whose mission made you show up early and stay late, starts making choices that feel wrong. The company stops caring about building a great product. Engineering judgment, the kind that says &#8220;we can build this, but we shouldn&#8217;t build it <em>like that</em>,&#8221; starts getting treated as an obstacle rather than a contribution. Requirements become mandates. Timelines become deadlines with no negotiation. And the question &#8220;is this the right thing to do?&#8221; is replaced by &#8220;when will it be done?&#8221;. And then, people stop raising their voice. No one challenges or questions anymore.</p><p>That&#8217;s not misalignment on tactics. That&#8217;s a fundamental divergence in what the company values are.</p><h2><strong>The Invisible Cost of Ignoring Engineering Judgment</strong></h2><p>Here&#8217;s something that&#8217;s always bothered me. If a civil engineer tells you a bridge can&#8217;t support a certain load, nobody asks them to prove their calculus. The conversation is over. The load gets reduced or the design changes. There&#8217;s a respect for professional judgment that&#8217;s built into how we treat physical engineering.</p><p>Software engineering doesn&#8217;t get that. And I think I understand why: the consequences are invisible. A bridge built wrong collapses. A system built wrong degrades slowly. It accumulates operational burden, creates on-call nightmares, becomes the thing every new hire is warned about. The organisational scar tissue builds up over months and years, and by the time anyone outside engineering notices, the cost is already enormous.</p><p>So when a senior engineer or an EM says &#8220;yes, it&#8217;s technically possible, but the cost of building and maintaining it this way would be irresponsible,&#8221; that gets heard as &#8220;they&#8217;re being difficult.&#8221; Because the thing <em>can</em> be done. &#8220;Technically possible&#8221; is all some stakeholders need to hear. Feasibility isn&#8217;t binary, the real cost isn&#8217;t just in the initial build but in the years of maintenance, the operational overhead, the cognitive load spread across the entire organisation gets lost. Or worse, it gets dismissed.</p><h2><strong>The Contract</strong></h2><p>This is the part that made leaving inevitable.</p><p>When you lead engineers, they trust you and you have a contract with them. It&#8217;s unwritten, but it&#8217;s real, and if you&#8217;ve ever been on either side of it you know exactly what I&#8217;m talking about. You represent their craft upstream. When a business decision will compromise the quality of what they build, you push back. When timelines are unrealistic, you say so. You make sure the cost of shortcuts is understood before anyone commits to them. You protect their ability to do work they can be proud of. That&#8217;s what professional leadership looks like in any discipline.</p><p>And in return, they trust you. They follow your judgment. They take on hard problems because you&#8217;ve told them it matters, and they stretch beyond what&#8217;s comfortable because they believe you wouldn&#8217;t ask if it wasn&#8217;t worth it.</p><p>The moment you can no longer honor that contract, when you&#8217;re asked to push decisions downstream that you know are wrong, when the requirements you&#8217;re told to deliver make you uncomfortable, that&#8217;s when staying becomes the betrayal.</p><p>I thought about this a lot before I made my decision. Could I compartmentalise? Just execute, disagree privately, let the results speak for themselves? Maybe some leaders can. I couldn&#8217;t. Maybe I was wrong. You always have to ask yourself that question honestly. But then I&#8217;d talk to my engineers, hear the frustration in their voices when describing what they were being asked to build, and I&#8217;d know. This wasn&#8217;t me being inflexible. This was the organisation losing something it shouldn&#8217;t have lost.</p><p>I wasn&#8217;t willing to spend my credibility pretending otherwise.</p><h2><strong>Leaving</strong></h2><p>People assume leaving is the hard part. It&#8217;s not. By the time you actually resign, the decision has been made for weeks, sometimes months. The hard part is everything before it. The part where you&#8217;re still trying. Where you show up to meetings hoping something has changed, that someone will say the thing that makes it make sense again. The part where you wonder if you&#8217;re overreacting, or if your standards are too high, or if this is just what companies do when they scale.</p><p>I didn&#8217;t leave angry, and I didn&#8217;t leave with a desire to burn anything down. I left disappointed because the job was not done, because I still believe that products should be built with care, that engineering judgment is an asset, that you owe the people you lead honesty about what you&#8217;re asking them to do and why.</p><p>Those beliefs aren&#8217;t going to bend. And the company&#8217;s direction isn&#8217;t going to change because I want it to. At some point, you have to accept that the paths have diverged and no amount of influence will bring them back together.</p><p>So you go.</p><div><hr></div><p><strong>Author Notes</strong></p><p>This is my first piece on this Substack, and it felt right to start here, with the thing that set this in motion.</p><p>I&#8217;m writing this Substack because, after fifteen years of leading engineering organisations, I&#8217;ve accumulated a set of convictions about how to build products and lead teams that I want to put somewhere permanent. Somewhere that doesn&#8217;t depend on an employer&#8217;s direction or a company&#8217;s appetite for honesty. I&#8217;ve spent my career thinking about engineering leadership, org design, the craft of software, and the messy human problems that sit underneath all of it. That&#8217;s what you&#8217;ll find here.</p><p>I&#8217;m still in the arena. Still building. Still leading. Just from a place where the principles aren&#8217;t negotiable.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.leadingbycommit.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Leading By Commit 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><p></p>]]></content:encoded></item></channel></rss>