<?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[Lean Product Growth: Product]]></title><description><![CDATA[Everything about the product and technology side of building a product organisation]]></description><link>https://www.enlighten.services/s/product</link><image><url>https://substackcdn.com/image/fetch/$s_!hEd8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png</url><title>Lean Product Growth: Product</title><link>https://www.enlighten.services/s/product</link></image><generator>Substack</generator><lastBuildDate>Fri, 15 May 2026 21:16:52 GMT</lastBuildDate><atom:link href="https://www.enlighten.services/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[M Stojanovski]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[leanproductgrowth@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[leanproductgrowth@substack.com]]></itunes:email><itunes:name><![CDATA[Marina]]></itunes:name></itunes:owner><itunes:author><![CDATA[Marina]]></itunes:author><googleplay:owner><![CDATA[leanproductgrowth@substack.com]]></googleplay:owner><googleplay:email><![CDATA[leanproductgrowth@substack.com]]></googleplay:email><googleplay:author><![CDATA[Marina]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The One Thing Your Roadmap Can't Do]]></title><description><![CDATA[You can&#8217;t schedule a breakthrough.]]></description><link>https://www.enlighten.services/p/the-one-thing-your-roadmap-cant-do</link><guid isPermaLink="false">https://www.enlighten.services/p/the-one-thing-your-roadmap-cant-do</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 18 Mar 2026 09:20:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FsZz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FsZz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FsZz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FsZz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg" width="727" height="408.9375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:727,&quot;bytes&quot;:135957,&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://www.enlighten.services/i/188112540?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.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_!FsZz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FsZz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59c2041c-53e2-45a9-b829-e1be868484fc_1920x1080.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><em>You can&#8217;t schedule a breakthrough.</em></p><p>Roadmaps are designed to align teams and drive execution. Traditionally, they answered one question: <em>What will be delivered by when?</em></p><p>Today, many organizations use outcome-driven roadmaps &#8212; focused on impact rather than features. A meaningful step forward. But even outcome-driven roadmaps are still instruments of execution. They optimize toward defined objectives and assumed directions.</p><p>Innovation begins earlier. Before the outcome is defined and the metrics are known.</p><p>It begins with uncertainty and exploration. With the question: <em>What if&#8230;?</em></p><p>This is where organizations get stuck. They want innovation &#8212; but their operating model is built primarily for execution. And execution is hungry. It consumes time, talent, and unprotected ideas. The system is optimized for today &#8212; not tomorrow.</p><p></p><h2><strong>Common Reasons Why Innovation Fails</strong></h2><p>Organizations optimized for execution unintentionally suppress exploration. Their systems reward predictability, efficiency, and delivery &#8212; not discovery.</p><p>Three patterns come up repeatedly:</p><p><strong>Execution consumes all capacity.</strong> Roadmaps, targets, and operational pressure expand to fill every available hour. Exploration becomes something to do later, when things calm down. In reality, later never comes.</p><p><strong>Innovation becomes an event.</strong> Hackathons and idea days create real energy. People get excited, ideas flow, and for a moment it feels like anything is possible. Then Monday arrives. Without a continuation plan, ideas fade and everyone returns to their real work. Until the next hackathon.</p><p><strong>Innovation gets detached from reality.</strong> Innovation labs and dedicated task forces are a genuine step forward. But the real risk is drifting too far from real users and real constraints. They produce interesting concepts that struggle to land back in the core product. The ideas can be good. The distance is what makes them impractical.</p><p>In all three cases, innovation isn&#8217;t rejected. It just doesn&#8217;t have enough space &#8212; or structure &#8212; to survive.</p><h2><strong>The Innovation Track</strong></h2><p>An Innovation Track is a deliberately protected space alongside your delivery roadmap &#8212; designed for exploration, not execution.</p><p>It exists to investigate opportunities that don&#8217;t yet fit into quarterly targets, but could materially shape the future of the business. It may explore emerging technologies, new customer segments, new value propositions, or shifts in the business model itself.</p><p>Its purpose is simple: test what might matter next &#8212; before committing the organization to build it.</p><p>It is time-bound, hypothesis-driven, and importantly, focused on real problems. It&#8217;s a structured way to reduce uncertainty before an idea enters the roadmap.</p><h2><strong>What Makes It Work</strong></h2><p>A small, focused, startup-like container inside your company &#8212; built to explore one meaningful opportunity with intention. An effective Innovation Track has three key components: a clear charter, the right people, and a deliberate time window.</p><p><em>The Charter</em></p><p>A charter is a simple one-pager that sets direction without prescribing output. It should capture:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vlf1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vlf1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 424w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 848w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 1272w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vlf1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png" width="727" height="503.8070054945055" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1009,&quot;width&quot;:1456,&quot;resizeWidth&quot;:727,&quot;bytes&quot;:263787,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.enlighten.services/i/188112540?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vlf1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 424w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 848w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.png 1272w, https://substackcdn.com/image/fetch/$s_!vlf1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F340c25ca-3e68-4bf9-a919-9436751a3850_1764x1222.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><p><em>The Team</em></p><p>Innovation doesn&#8217;t require a large team. In fact, small team learns much faster. The ideal setup looks like a startup founding team: 1&#8211;3 people, cross-functional by default, empowered to decide without permission, and connected to real users.</p><p>Small, sharp, and autonomous. That&#8217;s the formula.</p><p><em>The Time Window</em></p><p>Innovation Tracks are intentionally short. Four to eight weeks is the typical window &#8212; long enough to learn something real, short enough to avoid drifting. The expected outcome isn&#8217;t a polished feature. It&#8217;s a decision: do we continue, pivot, or stop?</p><h2><strong>Protecting the Track Without Isolating It</strong></h2><p>An Innovation Track only works if the team can explore freely &#8212; without being pulled in day-to-day execution. But there&#8217;s an equally dangerous failure mode: complete isolation so that the work loses touch with reality.</p><p>The art is in building a protective bubble with a door.</p><p><strong>Protected from delivery pressure.</strong> No sprint commitments. No last-minute requests. The team needs to be temporarily removed from the urgent dealines so they can think clearly and be creative.</p><p><strong>Stay connected to the real world.</strong> Exploration without grounding becomes fantasy. The team must have access to engineering realities, domain expertise, business stakeholders or real users. This is what keeps the Track connected to the real world.</p><p><strong>Join only the rituals that matter.</strong> Monthly demos to share learning. A regular check-in with the sponsor. Visible to the organization &#8212; but not interrupted by it.</p><p><strong>Make expectations explicit.</strong> Everyone around the Track should know what the team is working on, how long it runs, and why they aren&#8217;t available for delivery work. Clarity protects the team better than isolation.</p><h2><strong>Governance: Keeping It Light</strong></h2><p>At the end of every cycle, gather the team, the sponsor, and a few key stakeholders. The question on the table is straightforward: what did we learn, and what does that learning mean?</p><p>The conversation centres on three things: the story of the work, the strength of the signal, and the path forward. The decision itself is:</p><ul><li><p><strong>Continue</strong> &#8212; the signal is promising enough to dig deeper.</p></li><li><p><strong>Pivot</strong> &#8212; the opportunity still feels real, but the hypothesis needs to shift.</p></li><li><p><strong>Pause</strong> &#8212; the idea is sound, but timing or dependencies aren&#8217;t right.</p></li><li><p><strong>Stop</strong> &#8212; the exploration served its purpose. But the idea isn&#8217;t worth pursuing further.</p><p></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SD5f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SD5f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 424w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 848w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 1272w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SD5f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png" width="1452" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:1452,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114257,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.enlighten.services/i/188112540?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!SD5f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 424w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 848w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.png 1272w, https://substackcdn.com/image/fetch/$s_!SD5f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5001fcbe-7667-4de1-8bb2-6dc1d516e788_1452x544.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><figcaption class="image-caption">Innovation track lifecycle: 4-8 weeks. Outcome = learnings.</figcaption></figure></div><h2><strong>From Exploration to the Roadmap</strong></h2><p>Graduation is the moment an idea stops being a possibility and starts becoming a plan. An Innovation Track should never drift into delivery by accident &#8212; graduation is a conscious, evidence-based step.</p><p>A Track is ready to graduate when three things are true: </p><ul><li><p>there is a real signal (not a perfect metric, but enough evidence to believe the opportunity is meaningful), </p></li><li><p>the idea is buildable (the team understands feasibility well enough to move into structured experimentation), and </p></li><li><p>there is a value case (you know who benefits, how, and why it matters).</p></li></ul><p>From there, the work becomes more tangible. It&#8217;s not yet time for full delivery, but for more structure than exploration. The team defines the smallest meaningful version, builds early prototypes, validates core assumptions with real users, and identifies early risks.</p><p>Once that work shows consistent value, the idea is ready for the roadmap: ownership defined, scope agreed, investment committed. Good graduation is about commitment informed by evidence.</p><h2><strong>How to Start in 2 Weeks</strong></h2><p>Getting started doesn&#8217;t require a special team, a new budget cycle, or a grand announcement. You can launch your first Innovation Track in two weeks &#8212; with the people and knowledge you already have.</p><p><strong>Step 1 &#8212; Pick the opportunity.</strong> One problem or emerging question that keeps resurfacing. The kind of thing people say &#8220;we should look into this&#8221; about, but never do. Frame it as a question worth exploring, not a solution to build.</p><p><strong>Step 2 &#8212; Form the team.</strong> Identify 1&#8211;3 curious, cross-functional people. Not the busiest &#8212; the most motivated. Nominate a sponsor who will protect the team and own the graduation decision.</p><p><strong>Step 3 &#8212; Write the charter.</strong> One page. The problem, your hypotheses, the signals you&#8217;re looking for, the boundaries, and the timebox. Do it together in a single session. That conversation is the first act of exploration.</p><p><strong>Step 4 &#8212; Set the conditions.</strong> Give the team temporary protection from delivery work. Make expectations explicit to everyone around them &#8212; what they&#8217;re working on, how long it runs, and why they aren&#8217;t available for other requests.</p><p><strong>Step 5 &#8212; Start exploring.</strong> Let the team run. Talk to customers, review data, test early assumptions. The goal isn&#8217;t a polished output &#8212; it&#8217;s to start reducing uncertainty.</p><p>The first governance conversation happens at the end of the cycle, 4&#8211;8 weeks in. That&#8217;s when you decide what comes next.</p><h2><strong>The Real Question</strong></h2><p>Innovation thrives in a space that is intentional, protected, and connected &#8212; where ideas can be tested without pressure, explored without drifting, and evaluated with evidence.</p><p>The organizations that sustain innovation through scale aren&#8217;t the ones with the best ideas. They&#8217;re the ones that built systems where good ideas can survive long enough to become something.</p><p>The roadmap will always be there. Execution will always feel urgent. The question for every product and tech leader is whether they&#8217;ve built anything to protect the space before the roadmap &#8212; the uncertain, generative space where the next version of the company is beginning to take shape.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p><p>Enjoyed this read? Subscribe to Lean Product Growth for regular updates on building and scaling a successful product organization.</p>]]></content:encoded></item><item><title><![CDATA[Rebuild, Fix, or Walk Away? Making the Right Call on Tech Debt]]></title><description><![CDATA[Most teams agree that technical debt is a problem.]]></description><link>https://www.enlighten.services/p/rebuild-fix-or-walk-away</link><guid isPermaLink="false">https://www.enlighten.services/p/rebuild-fix-or-walk-away</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Thu, 10 Jul 2025 09:29:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B2h7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most teams agree that technical debt is a problem.</p><p>But far too often, it&#8217;s treated as a technical concern, not a strategic one.</p><p>In reality, technical debt is a business cost &#8212; one that compounds silently until it blocks product progress.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B2h7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B2h7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 424w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 848w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 1272w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B2h7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707" width="566" height="500.2025" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9169272a-df5f-4727-8d66-b88d00e89f1c_800x707&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:707,&quot;width&quot;:800,&quot;resizeWidth&quot;:566,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TechDebtCartoon.png&quot;,&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="TechDebtCartoon.png" title="TechDebtCartoon.png" srcset="https://substackcdn.com/image/fetch/$s_!B2h7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 424w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 848w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 1272w, https://substackcdn.com/image/fetch/$s_!B2h7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9169272a-df5f-4727-8d66-b88d00e89f1c_800x707 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><figcaption class="image-caption">credits: https://www.aboutwayfair.com/</figcaption></figure></div><h3>Software Is More About Maintenance Than New Development</h3><p>&#128073; Data shows that 70&#8211;80% of a software product&#8217;s total lifecycle cost goes to maintenance.</p><p>Not new features.<br>Not exciting launches.<br>Just&#8230; keeping the current system alive.</p><p>That includes:</p><ul><li><p>Troubleshooting fragile code</p></li><li><p>Rewriting messy logic</p></li><li><p>Updating dependencies and adapting to changing APIs</p></li></ul><blockquote><p><em>For every line of code you ship, expect to spend five<strong> </strong>times more effort maintaining it over time than it took to build.</em></p></blockquote><h3>Size and Software Complexity Matter</h3><p>As complexity builds, teams slow down. And because the slowdown is gradual, it often goes unnoticed &#8212; until it&#8217;s too late.</p><p>Every new feature means more code.<br>And more code means more effort to maintain.</p><p>This is why early development feels fast: there&#8217;s no legacy, no detours.<br>But as the system grows, so does the burden. Developers inherit old decisions. Logic becomes tangled. Even small updates start to feel risky and slow.</p><blockquote><p><em>The more complex the architecture, the steeper the growth curve in effort required.<br>Teams want to build forward &#8212; but are constantly pulled back to fix the past.</em></p></blockquote><p>&#128073; Studies show that maintaining poor-quality code can require 2&#8211;3&#215; more effort than working with clean, well-structured systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LAHW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAHW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 424w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 848w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png" width="574" height="313.2645590682196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1202,&quot;resizeWidth&quot;:574,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Impact of size on software development effort &quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Impact of size on software development effort " title="Impact of size on software development effort " srcset="https://substackcdn.com/image/fetch/$s_!LAHW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 424w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 848w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.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><figcaption class="image-caption">image source: www.scaler.com</figcaption></figure></div><h3>So Why Do We Delay It?</h3><p>Because the cost of not addressing tech debt feels invisible &#8212; until it suddenly isn&#8217;t.</p><p>Teams push it aside because:</p><ul><li><p>&#8220;<em>We&#8217;ll fix it next sprint</em>&#8221; (but we don&#8217;t)</p></li><li><p>&#8220;<em>New features have a priority</em>&#8221; (but they take longer each time)</p></li><li><p>&#8220;<em>It&#8217;s not urgent</em>&#8221; (until we&#8217;re blocked)</p></li></ul><p>The longer we delay, the harder &#8212; and more expensive &#8212; it is to fix.</p><h3>Making the Call: Refactor, Rebuild, or Leave It?</h3><p>When tech debt builds up, you&#8217;re not facing a code issue anymore &#8212; you&#8217;re making a strategic call.</p><p>Here are the three most common paths forward:</p><ul><li><p>Do nothing, accept it and leave it as is.</p></li><li><p>Refactor parts of the system</p></li><li><p>Rebuild in parallel</p></li></ul><p>Each path has trade-offs. What you choose depends on timing, team maturity, product lifecycle, and business goals.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fU1Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fU1Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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_!fU1Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.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>&#128073; Want the full breakdown?</p><p><br>Read the deep dive here: <strong><a href="https://www.enlighten.services/p/technical-debt-decision-making">Technical Debt Decision-Making: Refactor, Rebuild, or Stand Pat</a></strong></p><h3></h3><p>Have you made a business case for refactoring or rebuilding?<br>What worked? What didn&#8217;t?</p><p>Reply or comment &#8212; I&#8217;d love to hear your examples.</p><p></p><p><em><strong>Enjoyed this Article?</strong></em></p><p><em>Subscribe to Lean Product Growth for regular updates on building and scaling a successful product organization. Don&#8217;t miss out on insights, strategies, and actionable tips&#8212;delivered straight to your inbox.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Digitising Your Operations: The Product Way to Scale Your Business]]></title><description><![CDATA[How applying product principles to internal processes unlocks speed, clarity, and trust.]]></description><link>https://www.enlighten.services/p/digitising-your-operations-the-product</link><guid isPermaLink="false">https://www.enlighten.services/p/digitising-your-operations-the-product</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 11 Jun 2025 09:17:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pAwh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Internal operations rarely get the spotlight. But they quietly determine how fast, resilient, and scalable your business really is.</p><p>In early-stage companies, scrappy workflows are a strength, simple slack messages, spreadsheets are sufficient. But once a company starts to scale, those same workflows become friction. Coordination slows. Quality drops. People duplicate effort or lose track of who&#8217;s doing what.</p><p>Now, with AI reshaping the landscape, many companies are turning their attention inward. They&#8217;re asking: <em>How can we improve internal productivity without adding overhead?</em></p><p>The answer isn&#8217;t more tools. It&#8217;s applying product thinking to how your business runs.</p><p>When you treat internal operations like a product&#8212;with users, feedback loops, testing, and continuous improvement&#8212;you don&#8217;t only digitize. You simplify. You identify hidden gaps and unlock opportunities. And you build effective systems that scale.</p><p>This article shares how to bring product principles into your internal operations so your company can scale with clarity instead of chaos.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pAwh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pAwh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pAwh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201337,&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://www.enlighten.services/i/164869235?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.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_!pAwh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pAwh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13ac56d8-7fbb-4674-a687-44e367e41d93_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Recognize Your Superpower: Your Users are Right Here</h2><p>One of the biggest advantages of building internal tools?<br>Your users are sitting right next to you&#8212;or at worst, one Slack message away.</p><p>You don&#8217;t need formal research studies or stakeholder discovery calls.<br>You don&#8217;t have to navigate complex client org charts to arrange a call with a user.<br>You have direct access to the people you're building for&#8212;every day.</p><blockquote><p><em>It&#8217;s a product manager&#8217;s dream: a direct line to your audience, in their own environment, every single day.</em></p></blockquote><p>Bring the user into the process. This makes the development much more effective, the adoption more organic.</p><ul><li><p>Co-create user journeys to uncover friction points.</p></li><li><p>Share mockups and wireframes for validation.</p></li><li><p>Run quick feedback sessions.</p></li><li><p>Define clear success criteria (not just "it works").</p></li><li><p>Track real adoption, not just release dates.</p></li></ul><p>Apply the same rigor you'd use for customer-facing products. You'll earn deeper engagement and build trust across teams.</p><h2>Start With Discovery: What&#8217;s Actually Happening in Your Operations?</h2><p>Many companies digitize their operations by taking what already exists and building a tool around it. They might hire a consultant to collect process documentation and define product requirements out of it.</p><p>That&#8217;s a mistake.</p><p>Before you automate or rebuild anything, understand the real workflows. Not the ones written in documents, but the ones happening in chats or email threads.</p><p>Start with structured discovery:</p><ul><li><p><strong>Shadow internal users</strong>: Observe how people actually do the work. Where do they get stuck? What do they skip?</p></li><li><p><strong>Map the journey</strong>: Visualize the end-to-end flow. Where are the delays, handoffs, or points of failure?</p></li><li><p><strong>Surface pain points</strong>: What slows people down? What do they avoid doing? Where are they relying on ad-hoc fixes?</p></li></ul><blockquote><p><em>When we started our discovery, we uncovered huge opportunities&#8212;gaps and inefficiencies that had never been named. People were making the same decisions twice, doing work that could easily be automated, or improvising their own solutions to navigate unclear processes.</em></p></blockquote><p>This is where product thinking shines: you're not gathering &#8220;requirements&#8221;&#8212;you&#8217;re observing user behavior, uncovering unmet needs, and spotting opportunities to simplify.</p><p>And just like with external products, what you learn here will change how you build. </p><p>You could even realise that the biggest win isn&#8217;t automation but clarity.</p><h2>UX Matters - Even Internally</h2><p>Internal products often don&#8217;t receive the same level of care as customer-facing ones. They rarely have good UX, and they&#8217;re expected to &#8220;just work.&#8221;</p><p>After all, your users are your colleagues. They&#8217;ll tolerate friction and adapt.</p><p>Maybe.</p><p>But if you believe quality and UX matter for external product adoption, why wouldn&#8217;t they matter just as much internally?</p><p>Internal users are still users. If a product is unclear, unreliable, or difficult to use, they&#8217;ll find workarounds&#8212;or stop using it altogether.</p><p>Yes, you should release fast. But speed isn&#8217;t an excuse for poor experience.<br>A buggy internal tool won&#8217;t cause churn&#8212;but it will damage trust.<br>And once that trust is gone, adoption stalls and motivation fades.</p><p>Here&#8217;s what you&#8217;d need to keep in mind:</p><ul><li><p><strong>Design matters.</strong> Not because it needs to look pretty&#8212;but because clear, simple flows make a tool usable from day one.</p></li><li><p><strong>Early adoption is fragile</strong>. If the first release disappoints, re-engagement is 10&#215; harder.</p></li><li><p><strong>Momentum compounds.</strong> Each small, reliable release builds confidence&#8212;and lowers resistance to change.</p></li></ul><p>Treat your colleagues like users you need to motivate and inspire. </p><p>Because when they trust what you&#8217;re building, they won&#8217;t just use it, but improve it with you.</p><h2>Simplify Before You Build</h2><p>It&#8217;s tempting to custom-build internal tools that mirror every edge case and replicate all the complexity of current processes. </p><p>But many of those processes aren&#8217;t truly unique&#8212;they&#8217;re just undocumented, inconsistent, or unnecessarily complicated.</p><p>The goal isn&#8217;t to rebuild the mess in software. It&#8217;s to simplify and systematize the work behind it.</p><p>Start by asking: Is the problem the process&#8212;or the lack of one?</p><p>Before you write a single line of code, try this:</p><ul><li><p><strong>Clarify the workflow: </strong>Can it be simplified or standardized before being digitized?</p></li><li><p><strong>Borrow what works</strong>: Lean on proven patterns and best practices instead of reinventing everything.</p></li><li><p><strong>Avoid overengineering:</strong> Don&#8217;t automate what you can simply eliminate.</p></li></ul><p>The best internal tools aren&#8217;t the most complex&#8212;they&#8217;re the most clear and useful.</p><h2>Momentum <strong>Is the Multiplier</strong></h2><p>The early stages of digitizing operations can feel painfully slow. You&#8217;re aligning stakeholders, untangling messy workflows, testing early versions, and constantly fixing what breaks.</p><p>But then something shifts.</p><p>Once internal users start seeing real improvements&#8212;faster approvals, smoother handovers, fewer manual steps&#8212;momentum begins to build.</p><p>And this changes everything.</p><p>Momentum builds trust. Trust drives adoption. And adoption creates pull instead of push.</p><p>Suddenly, teams are volunteering to be part of the next pilot. They&#8217;re suggesting their own use cases. Users are proactively sharing feedback. Your internal product shifts from being &#8220;just another tool&#8221; to becoming essential to how the business runs.</p><p>Staying patient is important&#8212;but you can also actively build momentum. </p><ul><li><p><strong>Share progress:</strong> Highlight wins&#8212;time saved, errors reduced, increased adoption. These metrics fuel motivation and confidence.</p></li><li><p><strong>Be responsive</strong>: You should not build everything people ask for. But when you act on feedback, make it visible. &#8220;You asked for X&#8212;we delivered it this week.&#8221;</p></li><li><p><strong>Show what&#8217;s next: </strong>Don&#8217;t just demo what&#8217;s done. Share your vision for what&#8217;s coming. Paint a clear, realistic picture of how things will improve.</p></li></ul><p>You don&#8217;t need perfection&#8212;just visible progress.</p><p>When users can see that progress and believe in the future you&#8217;re building, they become your champions.</p><h3>Closing Thoughts</h3><p>Digitizing internal ops is more than building a tool&#8212;it&#8217;s a rare opportunity to make your company run better. </p><p>You&#8217;re in an exceptional position: your users are close, your impact is direct, and the complexity is real. </p><p>Apply product thinking, and you won&#8217;t just ship a tool&#8212;you&#8217;ll build clarity across teams, surface what really needs fixing, and create momentum. </p><p>Let the product do what it does best: simplify, scale, and make your COO breathe a little easier.</p><p></p><p><em><strong>Enjoyed this Article?</strong></em></p><p><em>Subscribe to Lean Product Growth for regular updates on building and scaling a successful product organization. Insights, strategies, and actionable tips&#8212;delivered straight to your inbox.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Why Your Product Features Are Taking Forever to Ship]]></title><description><![CDATA[The hidden challenges behind shipping product feature delays]]></description><link>https://www.enlighten.services/p/why-your-product-features-are-delayed</link><guid isPermaLink="false">https://www.enlighten.services/p/why-your-product-features-are-delayed</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 11 Dec 2024 09:46:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!05Bj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!05Bj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!05Bj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!05Bj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136610,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!05Bj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!05Bj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44c8699e-7ad7-4b3e-835c-3a79304dc77d_1920x1080.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>In the last product review meeting, the same concerning question came up: &#8220;<em>Why is this product feature taking so long? Wasn&#8217;t it just a small software change that should&#8217;ve been wrapped up in a few hours? Why is the engineering team holding the next deal back?</em>&#8221;</p><p>And while you might be easily pointing fingers at the engineering teams because of the missed deadline, the reality is far more nuanced.</p><p>The truth?</p><p>Software delays are rarely caused by laziness or lack of effort. </p><p>Instead, they&#8217;re the result of an entangled web of reasons that span across the whole organization. They are deeper, systemic issues that affect both developers and stakeholders.</p><p>Misaligned priorities, communication breakdowns, and technical debt all play a role, and until these challenges are addressed, the delays will continue.</p><h2><strong>Most Common Reasons Why Shipping Is Slower</strong></h2><p>Let&#8217;s dive into the most common obstacles behind slower feature delivery. Understanding these factors is the first step toward tackling them effectively.</p><h3><strong>The Illusion of Perfect Planning</strong></h3><p>Time estimates in software engineering are most often inaccurate.</p><p>Yet, as flawed as they may be, estimates are essential. They are the communication bridge between teams, stakeholders, and customers. </p><p>When timelines for the next product feature are estimated, several things commonly go wrong.</p><ul><li><p><strong>Pressure to be optimistic. </strong>Engineers may feel compelled to give overly optimistic estimates to satisfy stakeholders and avoid disappointment. This &#8220;best-case scenario&#8221; approach often overlooks hidden complexities, leading to unrealistic expectations that later fall short.</p></li><li><p><strong>Overcompensation. </strong>On the flip side, some engineering teams go to the other extreme&#8212;adding excessive buffers to their timelines to confidently meet their promise. While this avoids disappointment, <strong><a href="https://www.enlighten.services/p/how-the-over-promise-and-under-deliver">it slows overall progress and limits the team's ability to take on bigger challenges</a>.</strong> </p></li><li><p><strong>Top-Down timelines. </strong>A worse scenario? Stakeholders set deadlines without consulting the engineering team. Sure, these timelines might be necessary to close the new deal, but without understanding the technical complexity, they create significant risks - disappointed customers or engineers being forced to implement "quick fixes" that damage the overall software health.</p></li></ul><p>These mismatched expectations create a vicious cycle of frustration. Stakeholders feel let down by missed deadlines or slower progress. Engineering teams feel trapped between pressure to deliver quickly and the reality of their complex work.</p><h3>Software Maintenance Matters</h3><p>Software engineering isn&#8217;t just about development of new features&#8212;it&#8217;s also about keeping the existing codebase stable and functional.</p><p>In reality, a significant portion of a developer&#8217;s time is dedicated to maintaining the existing codebase. Bug fixes, upgrading outdated libraries, and adapting to evolving requirements aren&#8217;t optional&#8212;they&#8217;re essential to keeping the product functional and stable. </p><p>Beyond that, the process of launching a feature to production involves much more than just coding. Design, testing, deployments, and handling operational issues are all integral parts of the engineering workflow.</p><p>When this effort isn&#8217;t accounted for in planning, missing a critical deadline due to an urgent bug fix can be incredibly frustrating. However, rather than treating it as bad luck or using the bug as an excuse for the delay, maintenance work should be acknowledged as a fundamental part of the development process. It must not be overlooked or undervalued.</p><p>Software development isn&#8217;t a one-time effort. When estimating the cost of a new feature, don&#8217;t just plan for the development phase&#8212;factor in ongoing maintenance costs. </p><p>A good rule of thumb? </p><p>Expect to <strong><a href="https://www.enlighten.services/p/the-software-development-reality">spend five times as much effort on maintenance over the lifetime of a feature as you do on building it.</a></strong></p><h3><strong>The Domino Effect: Dependencies Among Teams</strong></h3><p>The product team is building a new feature. To ship it, they need the platform team to make changes in the SAP platform foundation. But the platform team can&#8217;t start because they&#8217;re waiting on a bug fix from an external vendor. And just like that, the planned timeline starts to collapse.</p><p>Here is the problem: </p><p>The product team creates their timeline based solely on their own effort, assuming the platform team will prioritize their request. But the platform team has its own list of urgent issues, and by the time they finally get to this &#8220;small update,&#8221; they hit yet another roadblock&#8212;a minor issue requiring action from an external vendor. The domino effect begins.</p><p>Dependencies between teams are one of the most frustrating and underestimated causes of delays. They create a fragile web of interconnected tasks, and the more complex the connections, the greater the risk of a cascading effect when even one link in the chain breaks.</p><p><strong>What makes dependencies so problematic?</strong></p><ul><li><p><strong>Complex software and team architecture, inefficient processes. </strong>When the <strong><a href="https://www.enlighten.services/p/set-up-a-product-development-team-for-success">teams&#8217; structure does not reflect the software system&#8217;s architecture,</a></strong> dependencies inevitably arise with every new feature development. Combined with weakly enforced processes or poor coordination, these seemingly minor dependencies can quickly snowball into significant delays.</p></li><li><p><strong>Wrong estimates and unmet commitments. </strong>If each team underestimates the true complexity of their work or downplay their dependencies on other teams, unrealistic commitments start to spread. When reality hits, timelines are blown, significantly extending the lead time for delivering the new feature.</p></li><li><p><strong>Diminishing urgency with each handoff. </strong>What begins as urgent for the product team gradually loses priority as it moves down the chain. For the next team, it&#8217;s just another task in the queue. The further the ball is passed, the less urgency remains&#8212;leaving a task critical for one team to stagnate in the backlog of another team.</p></li></ul><h3>Too Many Priorities, Not Enough Focus</h3><p>I know how intense product review meetings can get. </p><p>Multiple stakeholders are anxiously waiting for their preferred feature to ship, each believing their initiative is the top priority. Or a business leader insisting that <em>all</em> the listed initiatives are of high priority&#8212;with a seemingly valid reason for each one.</p><p>As a result, the product and engineering teams chooses the route to work on all these &#8220;equally important&#8221; priorities in parallel. </p><p>The outcome? </p><p>Instead of speeding up delivery, everything ends up in the &#8220;In Progress&#8221; state and the lead time for any of the items to cross the finish line increases significantly.</p><p>While it might seem comforting for stakeholders to see all their preferred features marked as &#8220;In Progress,&#8221; the reality is, nobody wins. </p><p>Success isn&#8217;t about starting everything&#8212;it&#8217;s about finishing something. Until features cross the finish line, everyone remains stuck in a deadlock, waiting for progress that feels painfully slow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1i7r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1i7r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 424w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 848w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 1272w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1i7r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png" width="1456" height="2052" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2052,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:275717,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!1i7r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 424w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 848w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.png 1272w, https://substackcdn.com/image/fetch/$s_!1i7r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28fa476a-8eb4-46c5-ab10-fd65a7806a56_2489x3508.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><p></p><h3><strong>Context Switching: The Hidden Productivity Killer</strong></h3><p>You&#8217;ve probably asked&#8212;or been asked&#8212; before: <em>&#8220;Do you have five minutes for a small question?&#8221;</em> </p><p>Sure, it might only take five minutes to address that small question, but the mental capacity you need to context switch and later return to your original task is a completely different story.</p><p>Software engineering, in particular, requires deep focus and sustained concentration. Each interruption&#8212;whether it&#8217;s a quick question, a meeting, or an urgent issue&#8212;disrupts this flow, impacting both the quality and productivity of the work. The more different the context of the interruption is from the task at hand, the greater the cognitive load required to refocus.</p><p>In fact, research shows that <strong><a href="https://addyo.substack.com/p/it-takes-23-mins-to-recover-after">it takes 23 minutes to regain your mental state after being interrupted during deep work</a></strong><a href="https://addyo.substack.com/p/it-takes-23-mins-to-recover-after">.</a> This means even small, seemingly harmless interruptions come at a much larger cost than they appear.</p><p>But it doesn&#8217;t stop there. Small distractions and low-value meetings add up over time, further eroding productivity. </p><p>The impact becomes even more pronounced when engineers are  juggling multiple priorities: fixing an urgent issue that pops up while working on a deep research activity has a high productivity cost.</p><p>This constant context switching not only slows progress but also increases the likelihood of mistakes and missed details.</p><h3>Quick Fixes That Backfire Later</h3><p>Engineers often face this decision to make: build a future-proof feature or deliver a partial solution - a quick fix necessary to meet the tight deadline. </p><p>With pressure arising and no time to spare, they&#8217;re forced to choose the shortcut, promising themselves they&#8217;ll revisit and fix it later.</p><p>But that "later" moment rarely comes.</p><p>As new features, deadlines, and priorities pile up, these shortcut improvements get buried in the backlog, forgotten until they show their ugly face at the worst possible moment - during an important go-live. <strong><a href="https://www.enlighten.services/p/technical-debt-decision-making">The cost of that quick fix then resurfaces and technical debt now has to be paid off.</a></strong></p><p>Shortcuts are a ticking time bomb in software development, and their true cost is always paid&#8212;just later, and often at a higher price.</p><h3><strong>Burdened By Legacy Decisions</strong></h3><p>A software system is built on decisions made in the past. </p><p>While these decisions were valid at the time, as business evolves, growth accelerates, and technology advances, those once-sound solutions can quickly become outdated. The architecture that effectively served the business yesterday becomes a bottleneck for the business today.</p><p>Modernization&#8212;whether through <strong><a href="https://www.enlighten.services/p/it-migration-ahead-why-you-need-to">IT migrations</a></strong>, re-architecting systems, or adopting newer technologies&#8212;is a natural and necessary part of the software lifecycle. </p><p>Yet, when engineering teams bring these issues to the table, they&#8217;re often met with resistance.</p><p>Why?</p><p>The investment required for big changes is significant, and the benefits aren&#8217;t always immediately visible. For business leaders focused on securing the next deal or expanding market share, prioritizing a migration is a hard sell. After all, a migration won&#8217;t win the new contract, but it could delay one.</p><p>This lack of awareness about the long-term benefits leads to modernization efforts being deprioritized. </p><p>The result? </p><p>Teams continue to patch and work around outdated systems, creating inefficiencies and increasing the risk of failure. The business might feel like it&#8217;s saving time and money, but in reality, it&#8217;s gambling with the future software stability and team&#8217;s productivity.</p><h1><strong>To Sum Up</strong></h1><p>The reasons behind software delays are rarely straightforward. They stem from a web of interconnected challenges&#8212;ranging from organizational priorities and team structures to inefficient processes and the technical quality of the software itself.</p><p><strong>This isn&#8217;t an engineering problem only.</strong></p><p> It&#8217;s a shared responsibility. From company leadership setting realistic priorities, to stakeholders understanding the complexities, to product managers prioritising effectively, and engineers advocating for better practices&#8212;everyone has a role to play in addressing these issues.</p><p>In the next articles, I&#8217;ll dive into practical solutions and explore what each group&#8212;leaders, stakeholders, PMs, and engineers&#8212; can do to tackle these challenges and help ship features faster and more predictably.</p><p>Stay tuned!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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">Enjoyed this read? Subscribe to Lean Product Growth for regular updates on building and scaling a successful product organization.</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><p>Access other relevant content on <em>Lean Product Growth</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;19ba7641-322d-4960-b45f-2f913cf4b42b&quot;,&quot;caption&quot;:&quot;Software development is costly.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Technical Debt Decision Making: Refactor, Rebuild, or Stand Pat&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-18T08:00:48.810Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/technical-debt-decision-making&quot;,&quot;section_name&quot;:&quot;Product&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:137613557,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d6b97ec5-3b36-440a-a26a-48d93be5ba0c&quot;,&quot;caption&quot;:&quot;If you&#8217;ve spent more time in the software industry, you&#8217;ve likely encountered an IT migration at some point. Migrating systems can be one of the most challenging phases of product development, often filled with unexpected hurdles.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;IT Migration Ahead? Why You Need to Reassess Your Strategy&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-11-13T09:32:36.082Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/it-migration-ahead-why-you-need-to&quot;,&quot;section_name&quot;:&quot;Product&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:150558683,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8743bf6b-86c2-4d8a-b88a-6bc079702a28&quot;,&quot;caption&quot;:&quot;In every organization I&#8217;ve encountered, leaders consistently seek ways to increase their team&#8217;s capacity and bring new members on board.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Is More Headcount Necessary? How and When to Scale a Team?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-11-15T14:00:57.038Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40322bea-6074-472c-b810-b53b018e6288_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/how-to-scale-a-team&quot;,&quot;section_name&quot;:&quot;Strategy&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:137472368,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>]]></content:encoded></item><item><title><![CDATA[IT Migration Ahead? Why You Need to Reassess Your Strategy]]></title><description><![CDATA[What makes an IT migration project so complicated and&#160;how can you navigate the risks to ensure a smoother transition?]]></description><link>https://www.enlighten.services/p/it-migration-ahead-why-you-need-to</link><guid isPermaLink="false">https://www.enlighten.services/p/it-migration-ahead-why-you-need-to</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 13 Nov 2024 09:32:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WLfT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WLfT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WLfT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WLfT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A third scene of a mountain climber ascending a rugged mountain, with steep rocky paths and unpredictable weather. The climber is wearing safety gear and navigating cautiously, facing heavy mist and strong winds that make the path ahead unclear. The summit is barely visible, symbolizing the end goal of IT migration, with rocks and clouds adding to the intense atmosphere. Realistic style, highlighting the challenges and perseverance needed to reach the peak.&quot;,&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="A third scene of a mountain climber ascending a rugged mountain, with steep rocky paths and unpredictable weather. The climber is wearing safety gear and navigating cautiously, facing heavy mist and strong winds that make the path ahead unclear. The summit is barely visible, symbolizing the end goal of IT migration, with rocks and clouds adding to the intense atmosphere. Realistic style, highlighting the challenges and perseverance needed to reach the peak." title="A third scene of a mountain climber ascending a rugged mountain, with steep rocky paths and unpredictable weather. The climber is wearing safety gear and navigating cautiously, facing heavy mist and strong winds that make the path ahead unclear. The summit is barely visible, symbolizing the end goal of IT migration, with rocks and clouds adding to the intense atmosphere. Realistic style, highlighting the challenges and perseverance needed to reach the peak." srcset="https://substackcdn.com/image/fetch/$s_!WLfT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!WLfT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c59985e-7031-4a30-b8d1-0a34761a71ee_1792x1024.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><p>If you&#8217;ve spent more time in the software industry, you&#8217;ve likely encountered an IT migration at some point. Migrating systems can be one of the most challenging phases of product development, often filled with unexpected hurdles.</p><p>Unfortunately, the statistics aren&#8217;t encouraging. <a href="https://www.curiositysoftware.ie/how-to-avoid-costly-data-migration-failures-ebook">Over 80% of migration projects either exceed their budgets or end up being abandoned altogether.</a> These figures emphasize the importance of having a solid plan and strategy in place to navigate the migration journey successfully.</p><p>IT migrations can take many forms, here are some typical examples:</p><ul><li><p><strong>Data Migration </strong>involves transferring data from one storage location to another.</p></li><li><p><strong>Application Migration</strong> occurs when software needs to be refactored, rebuilt, or replaced entirely with a new system, often requiring also migration of data.</p></li><li><p><strong>Cloud Migration</strong> refers to shifting systems from traditional on-premise data centers to cloud environments or moving from one cloud provider to another.</p></li></ul><p>This article covers:</p><p>&#10148; Examples of IT migrations and when do you need them?</p><p>&#10148; What makes an IT migration project so complicated? </p><p>&#10148; How can you navigate the risks to ensure a smoother transition?</p><h2>When Do IT Migrations Become Necessary?</h2><p>There are many reasons why software companies may face the need for migration. Let&#8217;s look at some of the most common scenarios:</p><h4><strong>Outdated Technology</strong></h4><p>Technology evolves rapidly. New, more efficient solutions  enter the market, offering improved performance, better ROI, and lower maintenance costs. This evolution often necessitates moving away from legacy systems. In some cases, companies are forced to migrate to a newer technology because the one they rely on is no longer supported.</p><p>A good example is COBOL-based systems, which many businesses had to retire due to a shrinking talent pool, lack of support, or high mainframe costs.</p><p>Another example is the shift from on-premise systems to cloud applications, as cloud solutions provide greater flexibility and scalability and have become the new norm in the market.</p><h4><strong>Scalability Limitations</strong></h4><p>Another very common driver for migration in growing companies is the inability of current systems to scale with business growth. Often, architectural or technology decisions made during the early stages of a company&#8217;s development&#8212;while suitable at the time&#8212;become bottlenecks as the user base expands and business needs evolve.</p><p>It&#8217;s a harsh reality, but at some point, investing in an upgraded, scalable solution becomes inevitable. Otherwise you can&#8217;t keep pace with future business demands.</p><h4><strong>Mergers and Acquisitions</strong></h4><p>Mergers and acquisitions often create an urgent need for migration. Companies must consolidate multiple systems into a unified platform to streamline operations effectively. </p><p>The primary drivers for this consolidation include reduced maintenance costs, improved scalability, and enhanced return on investment (ROI).</p><h4><strong>Accumulated Technical Debt</strong></h4><p>Migration due to accumulated technical debt is not something to be proud of. <a href="https://www.enlighten.services/p/technical-debt-decision-making">However, if you haven&#8217;t kept an eye on continuously optimizing the quality of your product, rebuilding becomes the most viable option </a>at some point.</p><p>When teams rush to meet deadlines or prioritize short-term deliverables, corners are often cut in code quality, architecture, or documentation. Eventually, companies reach a point where a tough decision must be made: either refactor or entirely rebuild the platform to regain efficiency and lay a solid foundation for future growth.</p><h2>The Compelling Benefits of Migration</h2><p>Whether migration is a necessary transition or a strategic choice, the advantages are clear and substantial. </p><p>A successful IT migration can unlock significant financial and operational benefits:</p><ul><li><p>Enhanced development productivity</p></li><li><p>Decreased maintenance costs</p></li><li><p>Accelerated development cycles</p></li><li><p>Improved scalability</p></li><li><p>Stronger positioning to meet evolving business needs</p></li></ul><h2>The Biggest Challenges of an IT Migration</h2><p>While the benefits of IT migrations are real and appealing, the reality often strays far from the plans laid out on paper. </p><p>Why is this the case?</p><p>What are the most significant challenges companies face when tackling an IT migration?</p><h4>Legacy Systems as Revenue Drivers</h4><p>The current systems may be outdated and costly to maintain, driving the need for migration. </p><p>However, these "legacy" solutions often form the backbone of revenue generation. Typically, they are stable and reliable, having undergone years of stability improvements.</p><p>Replacing them too quickly or without sufficient planning can risk essential business operations, leading to potential revenue loss and customer dissatisfaction.</p><h4>Knowledge Gaps and Unsupported Technology</h4><p>Migrating a system effectively requires a deep understanding of the current solution. </p><p>In many cases, the developers who have built the software are no longer available, and documentation is sparse or outdated. This forms a lot of critical knowledge gaps. </p><p>Without access to the expertise needed to interpret or rebuild these systems, teams can struggle to understand how they function, making the migration complex and prone to errors.</p><h4>Resistance to Feature Deprioritization</h4><p>Imagine the following scenario: multiple company divisions are running their own platform, each tailored to specific customer needs. To reduce maintenance costs and enable scalability, a migration project is launched to unify these platforms, migrating all customers to a single, centralized system.</p><p>The new system must meet the diverse requirements of each division, but ensuring full functional compatibility can be extremely challenging.</p><p>This approach not only places a heavy burden on the migration project, but also makes the new system highly complex and difficult to maintain. Deprioritizing certain features and finding the right balance is essential, but it can generate substantial resistance from stakeholders who fear the unified system won&#8217;t fully meet their needs.</p><h4>The Need of Extensive Testing and Iteration</h4><p>Legacy systems have achieved stability over time. The new system will still require rigorous testing and refinement to reach an acceptable level of reliability. Underestimating the time needed for testing and rushing to go to production to soon can lead to disruptions and unexpected bugs.</p><p>With many customers already using the current platform, there&#8217;s little tolerance for issues. Whether the migration is invisible to them or changes their experience, the only acceptable outcome is a system that performs as good as, or better than, the old one.</p><h4>The Human Challenges of Migration</h4><p>Migration is not just a technical challenge&#8212;it can significantly impact people and can pose considerable obstacles.</p><p>Employees workflows and customer interactions are often disrupted. Employees need training on new processes, and customers may need to adapt to different ways of engaging with your product or services.</p><p>Without a comprehensive change management strategy that includes training, clear communication, and a gradual transition to ease adjustment, the risk of a failed migration is too high.</p><h4>Maintaining Dual Platforms During Transition</h4><p>During the migration, you need to maintain both the old and new platforms. This duality can be resource-intensive and costly. </p><p>Next to that, customers expect continued improvements to the legacy system even as the migration is underway. </p><p>Deciding how much to invest in the old platform versus focusing on the new system becomes a strategic balancing act, adding pressure on resources and timelines.</p><h2>A Realistic Approach to IT Migration</h2><p>Successfully managing an IT migration requires a realistic strategy that accounts for its complexities. Here are some practical strategies to consider:</p><h4><strong>Plan Realistically</strong></h4><p>A migration project is rarely a quick fix. Depending on the complexity of your systems and business needs, it will likely take more than a year&#8212;not weeks.</p><p>Treat migration as a complex project requiring dedicated time and attention. Be prepared for unexpected challenges, and set clear expectations early to avoid unnecessary frustrations.</p><h4><strong>Dedicate Migration Teams</strong></h4><p>Managing both the current platform and a migration simultaneously is resource-intensive and often unsustainable. It is unrealistic to rely on a single team for both.</p><p>Instead, consider setting up dedicated migration teams who can focus fully on the migration project.</p><p>You might also<a href="https://www.enlighten.services/p/outsourcing-or-in-house-development"> choose to outsource specific tasks</a>, like data migration, to specialists. A data migration specialist would bring expertise in anticipating potential complexities and would follow a robust process to ensure high data accuracy, making the migration more efficient and reliable.</p><p>Does the migration impact operational workflows or directly affect customers? Be sure to include these considerations in the migration roadmap. If the scope is significant, it&#8217;s worth dedicating a team specifically to manage change. As this is essential prerequisite of a successful migration.</p><h4><strong>Migrate in Phases: A Cohort-Based Approach</strong></h4><p>Phased migration is one of the most effective ways to reduce risk.</p><p>When migrating customer data, consider a cohort-based approach. Cohorts are groups of customers segmented by specific criteria, such as feature usage, migration ROI, or migration risk level. For example, you might start by migrating new customers to the new platform, followed by those using only core features, and finally, customers with more complex or customized needs.</p><p>This step-by-step approach allows for gradual learning and adaptation. It gives you time to identify and resolve issues early, while minimizing disruption and risk for both customers and your business.</p><h4><strong>Resist the Urge to Improve the Old System</strong></h4><p>One of the difficult decisions during a migration is whether to continue enhancing the old system while transitioning to the new one. </p><p>Unless there is a compelling return on investment or a significant risk in leaving the old system as is, avoid investing resources in it. Focus your efforts on the new platform instead. </p><p>This will reduce the time it takes to deliver the new system. It will also ensure that any effort spent on improvements has long-term benefits.</p><h4><strong>Be Prepared to Lose Some Customers</strong></h4><p>During the migration, there will likely be features that some existing customers won&#8217;t have immediate access to. </p><p>Are you prepared to say "no" to certain customers, knowing there is a potential risk of churn? If you are not ready for this, you may need to reconsider whether your migration strategy will truly deliver the expected benefits. </p><p>Avoid falling into the trap of making the process too complex in an attempt to please everyone. This can drain resources, delay the migration project and make the product overly complex to maintain on long term.</p><h2>Final thoughts</h2><p>IT migrations are never simple. They involve technical challenges, change management, and detailed planning.</p><p><a href="https://www.linkedin.com/pulse/how-ai-transforms-legacy-code-understanding-migration-suyash-sumaroo-2l7tc/">AI can help make parts of this process much easier</a>. By automating tasks like <a href="https://www.pwc.ch/en/insights/digital/ai-in-data-migration.html">data mapping and error detection</a>, there is a lot of potential to reduce errors and save time.</p><p> However, significant challenges will still remain&#8212;particularly in managing expectations, ensuring system compatibility, maintaining operational stability, and adjusting workflows for employees and customers.</p><p>Avoid the temptation to rush your next migration project. Stay alert to the complexities that may arise, and regularly reassess the feasibility of your plan to ensure a successful transition.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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">Enjoyed this read? Subscribe to Lean Product Growth for regular updates on building and scaling a successful product organization.</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><p><strong>Access other relevant content on Lean Product Growth</strong></p><p></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2efbf6c1-067b-41d9-8c75-e30c1ab9b1a0&quot;,&quot;caption&quot;:&quot;Software development is costly.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Technical Debt Decision Making: Refactor, Rebuild, or Stand Pat&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-18T08:00:48.810Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/technical-debt-decision-making&quot;,&quot;section_name&quot;:&quot;Product&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:137613557,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;116bcff9-a11e-4fba-a16d-b339f606e4b6&quot;,&quot;caption&quot;:&quot;In product development, one critical decision you'll face is whether to choose outsourcing or in-house development for building your product.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Outsourcing or In-house Development: How to Choose Wisely&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-05-29T08:17:02.081Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe55ee244-de0a-46e8-9345-8405e0773603_1792x1024.webp&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/outsourcing-or-in-house-development&quot;,&quot;section_name&quot;:&quot;Strategy&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:143800245,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;03e7c127-074b-4316-b413-9f5a51b35e6d&quot;,&quot;caption&quot;:&quot;At TechWavve headquarters, a new announcement has brought excitement&#8212;a green light for the upcoming merger. New exciting opportunities, substantial growth, a doubled customer base, and fresh market openings are on the horizon. This is going to be a game-changer.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;The Software Development Reality: The Need for Scalable Architecture&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:149910576,&quot;name&quot;:&quot;Marina&quot;,&quot;bio&quot;:&quot;Head of Product at Gradyent.\nAdvisor. Author. PhD in Computer Science.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/defa6a9b-5d37-4bcd-9082-dad5932a8f78_879x1020.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-01-26T08:20:21.639Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.enlighten.services/p/the-software-development-reality&quot;,&quot;section_name&quot;:&quot;Product&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:140760179,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Lean Product Growth&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff88552ef-9b8d-4ef4-96aa-8d95d0168bc5_663x663.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div>]]></content:encoded></item><item><title><![CDATA[How to Establish Architecture Principles for Successful Scaling]]></title><description><![CDATA[Today&#8217;s newsletter is about architecture principles.]]></description><link>https://www.enlighten.services/p/how-to-establish-architecture-principles</link><guid isPermaLink="false">https://www.enlighten.services/p/how-to-establish-architecture-principles</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 06 Mar 2024 05:56:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GYwW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GYwW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYwW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191771,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GYwW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GYwW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec1c9c98-d4fa-4136-939a-0c09f341576d_1920x1080.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>Today&#8217;s newsletter is about architecture principles.</p><ul><li><p>What are architectural principles and why are they essential?</p></li><li><p>How to define these principles?</p></li><li><p>What are some examples of common principles that promote scalability?</p></li></ul><p>When designing and implementing a software system, numerous decisions must be made. Where the team is small, these decisions may be handled or overviewed by a single individual. The need for principles may not be immediately apparent.</p><p>However, as the software and company grow, multiple stakeholders become involved in making daily design choices.</p><p>Without following any principles, software can become complex, its structure inconsistent and confusing, technical debt increases with irreversible decisions that hinder future progress. </p><p><em>Architecture principles serve as guiding boundaries, providing direction for the software design decisions. They are high-level rules that should be adhered to, ensuring that the system remains cohesive and aligned with business needs.</em> </p><h3>How to define architecture principles</h3><p>Think about the value statements displayed in a company's office. While creating a list of principles is essential, true success lies in embedding these principles into the organization's culture and guiding people's behavior based on them.</p><p>The same applies to architectural principles. Drafting a document with a list of principles that nobody pays attention to is simply a waste of time. Success lies in building a culture where the technical team feels connected to and empowered by these principles.</p><p><strong>Start with the goals of the product</strong></p><p>Principles serve as a bridge between the overarching vision of a product and its practical implementation. They are derived from the primary goals.</p><p>Consider the goal tree example depicted below. </p>
      <p>
          <a href="https://www.enlighten.services/p/how-to-establish-architecture-principles">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Empowering Growth: The Importance of Performant Scalable Architecture]]></title><description><![CDATA[Key Principles and Best Practices for Scalable Architecture and Future-Proofed Growth]]></description><link>https://www.enlighten.services/p/performant-scalable-architecture</link><guid isPermaLink="false">https://www.enlighten.services/p/performant-scalable-architecture</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 21 Feb 2024 09:00:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vbXV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vbXV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vbXV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vbXV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143057,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vbXV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vbXV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98901897-b6d7-422a-be70-1666a366599b_1920x1080.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>Scalable architecture is foundational for business growth. It's not merely a technical decision but rather a strategic imperative essential for supporting growth and gaining a competitive edge.</p><p>In the <a href="https://www.enlighten.services/p/the-role-of-flexibility-in-scalable">previous article,</a> we delved into scalability from a functional standpoint, examining the system&#8217;s flexibility to evolve in terms of functionality without the need for significant reengineering.</p><p>This article shifts the focus to scalability from a performance perspective, often referred to as Performance Scalability, or simply Scalability.</p><h3><strong>What is Performance Scalability</strong></h3><p><em>Performance Scalability refers to the ability of a system to handle increasing traffic (Load Scalability) and data volumes (Data Scalability) without compromising its responsiveness or speed. In this context, Scalability ensures that the system can maintain its speed and responsiveness as demand grows over time.</em></p><p>As the business expands, the number of users placing load on the system grows as well. This creates pressure to the extent that the initially allocated resources become insufficient to handle the increased load. Consequently, the system needs to "scale," necessitating additional resources to accommodate the increased load.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tsos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tsos!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 424w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 848w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 1272w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tsos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png" width="554" height="311.68130081300814" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1230,&quot;resizeWidth&quot;:554,&quot;bytes&quot;:160111,&quot;alt&quot;:&quot;Scalable vs non-scalable system&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Scalable vs non-scalable system" title="Scalable vs non-scalable system" srcset="https://substackcdn.com/image/fetch/$s_!Tsos!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 424w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 848w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 1272w, https://substackcdn.com/image/fetch/$s_!Tsos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee45290b-1c7a-49de-9814-42bf414ab35c_1230x692.png 1456w" sizes="100vw"></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">Scalable vs non-scalable system</figcaption></figure></div><p>Scaling can take two approaches.</p><p><em>Vertical scaling</em>, also known as <em>scaling up,</em> involves enhancing the resources of a single server or machine to manage higher loads. This may include upgrading the CPU, memory, storage, or other components to boost performance and capacity. However, this approach has limitations in terms of scalability and cost-effectiveness.</p><p>Alternatively, <em>horizontal scaling</em>, also referred to as <em>scaling out</em>, entails expanding the system by adding more servers and distributing the workload across them.</p><p><strong>Scalability vs Elasticity</strong></p><p>A special type of scalability is <em>elasticity</em>. Although similar in concept, these terms have distinct meanings.</p><p>Scalability refers to the system's ability to manage gradual increases in traffic and data as the number of users grows. As the load gradually increases over time, the ability of the system to scale only manually is often sufficient.</p><p>However, there are instances where gradual scalability is not sufficient, and the system requires support for elasticity. Elasticity refers to the system&#8217;s capacity to handle sudden peaks in load and swiftly return to normal behavior afterward. </p><p>To achieve elasticity, the system must be capable of automatically scaling servers based on the current load. Alternatively, dedicating excessive capacity upfront is an option, but this is of course not desirable, as it leads to underutilization during periods of low demand and therefore unnecessary high costs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bTgU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bTgU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 424w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 848w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 1272w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bTgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png" width="410" height="369.59134615384613" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:832,&quot;resizeWidth&quot;:410,&quot;bytes&quot;:52744,&quot;alt&quot;:&quot;Scalability vs elasticity&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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="Scalability vs elasticity" title="Scalability vs elasticity" srcset="https://substackcdn.com/image/fetch/$s_!bTgU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 424w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 848w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.png 1272w, https://substackcdn.com/image/fetch/$s_!bTgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187d0cc1-358b-4475-9fb5-e08d01f0478e_832x750.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><figcaption class="image-caption">Scalability vs elasticity</figcaption></figure></div><p>A typical example illustrating elasticity is a platform for purchasing tickets to a newly released movie. When ticket sales open, there is a significant surge in traffic as everyone attempts to buy tickets before they are sold out.</p><p>An elastic system would seamlessly manage this increased traffic without any disruption. However, a system lacking scalability and elasticity will struggle to cope with the new situation. This could result in broken system performance or even make the system completely unavailable during peak periods.</p><h3><strong>Scalable Architecture is a Business Choice</strong></h3><p>Scalable architecture is often seen solely through a technical lens. Yet it's crucial to recognise that this is a strategic decision. Investing in a scalable architecture should be driven by clear business needs and aligned with broader organisational objectives.</p><p>The benefits of this architecture include:</p><p><strong>Cost-effective growth</strong>: Cost is the primary driver for scalable architecture. While investing in expensive migration to scalable architecture might not be justified for businesses with stagnant growth, it is crucial for growing businesses anticipating an increased customer base. Scaling the architecture becomes a pivotal asset and a key enabler for growth.</p><p><strong>Agility</strong>: Scalable architecture (both functional and performance scalability) brings a significant benefit in agility. A company supported by an agile software landscape has the advantage of swiftly adapting to evolving business needs, whether it involves entering new markets, introducing new products or services, or adjusting to changing customer preferences.</p><p><strong>Resilience</strong>: Businesses supported by a scalable foundational architecture can maintain uninterrupted operations even amidst unforeseen challenges such as sudden spikes in traffic, hardware failures, or cyber threats. This not only reduces operational costs and headaches but also enhances the user experience.</p><p><strong>Competitive advantage</strong>: Scalable architecture provide a significant competitive advantage. By fostering agility and adaptability to new market conditions and enhancing user experience, companies supported by scalable foundations can outpace competitors.</p><h3><strong>How to Achieve Scalable Architecture</strong></h3><p>There is no simple blueprint for building a scalable architecture. It demands expertise, a scalability mindset, and an understanding of the business. Let's review the key principles to consider when aiming for scalable architecture.</p><p><strong>Understand your scalability needs</strong></p><p>Designing an architecture involves striking a careful balance of trade-offs and considering various "what if" scenarios. Understanding the business goals is essential for this task.</p><p>Questions such as who the end customers are, their expectations, the projected number of users, and potential growth are crucial. Additionally, identifying peak periods of activity, assessing the business impact of system failures, and determining the need for handling confidential data are key considerations.</p><p>The defined business goals drive the architecture principles and guidelines for implementation. These aspects should not only exist on paper but should be deeply integrated into the product organization. Designing a system that requires 99.999% uptime differs significantly from one where occasional downtime may be tolerated without significant impact.</p><p><strong>Embrace decoupling from the start: transition to services when ready</strong></p><p>Large monolithic applications are difficult and expensive to scale due to their single deployable unit nature. Scaling such applications requires scaling the entire system's functionality, resulting in rapidly escalating costs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!izFc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izFc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 424w, https://substackcdn.com/image/fetch/$s_!izFc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 848w, https://substackcdn.com/image/fetch/$s_!izFc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 1272w, https://substackcdn.com/image/fetch/$s_!izFc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png" width="292" height="279.905325443787" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:676,&quot;resizeWidth&quot;:292,&quot;bytes&quot;:58829,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!izFc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 424w, https://substackcdn.com/image/fetch/$s_!izFc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 848w, https://substackcdn.com/image/fetch/$s_!izFc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.png 1272w, https://substackcdn.com/image/fetch/$s_!izFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10ac89f0-0580-4488-b5e6-14bc71e6c50f_676x648.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><figcaption class="image-caption">Monolitic architecture: horizontal scaling requires scaling of the whole system functionality</figcaption></figure></div><p>A fundamental principle for achieving scalability is to break down a large codebase into services. These smaller deployable units can be maintained, deployed, or scaled independently. This approach is known as service-oriented architecture (SOA) or micro-services architecture when the services are more granular and there is also separation of data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ULGQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ULGQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 424w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 848w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 1272w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ULGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png" width="500" height="252.30414746543778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65f45983-793e-4ea4-b823-86c564716b54_868x438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:868,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:69560,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!ULGQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 424w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 848w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.png 1272w, https://substackcdn.com/image/fetch/$s_!ULGQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65f45983-793e-4ea4-b823-86c564716b54_868x438.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><figcaption class="image-caption">Micro-services architecture: services with high load can scale out in isolation</figcaption></figure></div><p>To promote high scalability of a larger system, this pattern is inevitable. However, moving to micro-services architecture must be approached carefully, as it has its own downsides.</p><ul><li><p>The shift from in-memory to network-based communication between services introduces latency and performance concerns. Imagine substituting an existing call to a component in a loop with a network call; this could cause substantial performance degradation and potentially lead to system failure.</p></li><li><p>Micro-services often depend on each other; a failure in one service can trigger cascading failures. System success depends on how well the system is designed for resilience and the failover mechanisms implemented.</p></li><li><p>Security poses a greater challenge with micro-services as they expose individual APIs. Establishing security measures in the distributed environments becomes critically important.</p></li></ul><p>Maintaining and managing micro-services is inherently more complex compared to monolithic applications, yet when executed effectively, it offers significant advantages.</p><p>Transitioning directly to micro-services is not recommended. Instead, it is advisable to begin with a modular architecture and decoupled components. This approach ensures that as the codebase expands, transitioning to separate services becomes much more manageable.</p><p><strong>Coding best practices can make a significant difference</strong></p><p>Ensure that best practices are applied during coding to optimize application performance before considering scaling. This involves implementing efficient algorithms and adhering to coding guidelines. For instance, minimizing the use of complex nested loops, leveraging caching mechanisms to reduce traffic between components, and optimizing communication between distributed components can significantly enhance application efficiency.</p><p>Developing with a performance-oriented mindset can yield substantial improvements in application performance. While these optimizations have their limitations and scaling at a later stage would still be necessary, they can mitigate the need for unnecessary early scaling, ultimately resulting in cost savings for the business.</p><p><strong>Stateless services</strong></p><p>A fundamental principle of scalable architecture is the use of stateless services, essential for enabling horizontal scaling. The concept revolves around ensuring that each request to a service is self-contained and independent of past interactions (state). This approach simplifies the distribution of incoming traffic across multiple service instances.</p><p><strong>Asynchronous communication</strong></p><p>Another crucial principle is minimizing synchronous communication between services. Asynchronous communication decouples system components, enabling independent operation without reliance on one another to complete tasks. Implementing asynchronous communication patterns enhances overall system performance, system responsiveness, and resource utilization.</p><p><strong>Utilize cloud services</strong></p><p>Cloud platforms provide elastic resources, auto-scaling capabilities, and managed services, simplifying scalability. This can yield significant benefits, positively impacting costs and scalability.</p><p>However, migrating to the cloud doesn't automatically resolve all issues. Many organizations are embracing this trend, only to realize that simply lifting their applications to the cloud without proper preparation does not yield the expected benefits. While the cloud offers great potential, applications need to be cloud-native and need to follow the practices mentioned above to fully leverage its advantages.</p><p><strong>Monitor, analyze and optimize</strong></p><p>Monitoring is essential for achieving optimal system performance. Utilizing monitoring and analytics tools can provide valuable insights into system performance, scalability, and resource utilization. This becomes particularly important in a micro-services setup, where identifying and resolving slowdowns within the network of services is essential for maintaining overall system efficiency.</p><h3>Building a Scalable Architecture in an Agile World</h3><p>Making the right architecture choices is crucial for creating a future-proof system that can adapt and grow alongside your business needs. However, this can be challenging in today's agile environment where the future is unpredictable.</p><p>According to Gartner's report on "From Fragile to Agile Software Architecture" (2019), traditional architectural practices often clash with modern agile software development methodologies, leaving teams without clear guidance on how to architect their systems effectively.</p><p>It's important to recognize that building great architectures is a gradual process that requires continuous iteration, feedback, and adjustment. Take, for example, companies like Uber or Spotify, known for their flexible microservices architecture. These architectures evolved over time through iterative development and refinement.</p><p> As Adam Gluck from Uber Engineering puts it,</p><blockquote><p> "Evolving a microservice architecture is more like 'trimming a hedge'&#8212;a dynamic and progressive process&#8212;rather than a one-time, top-down effort."</p></blockquote><p></p><div><hr></div><p>This blog is part of the series on Scalable Software Architecture. Below, you'll find an index of the articles in this series:</p><ol><li><p><a href="https://www.enlighten.services/p/the-software-development-reality">The Software Development Reality: The Need for Scalable Architecture</a></p></li><li><p><a href="https://www.enlighten.services/p/the-role-of-flexibility-in-scalable">The Role of Flexibility in Scalable Architecture</a></p></li><li><p><em><a href="https://www.enlighten.services/p/performant-scalable-architecture">Empowering Growth: The Importance of Performant Scalable Architecture</a></em></p></li><li><p><a href="https://www.enlighten.services/p/how-to-establish-architecture-principles">How to Establish Architecture Principles for Successful Scaling</a></p></li></ol><p>Subscribe to receive the latest insights.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Role of Flexibility in Scalable Architecture]]></title><description><![CDATA[Building Flexible Software Architectures: Principles and Strategies]]></description><link>https://www.enlighten.services/p/the-role-of-flexibility-in-scalable</link><guid isPermaLink="false">https://www.enlighten.services/p/the-role-of-flexibility-in-scalable</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 07 Feb 2024 10:20:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!g2KA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g2KA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g2KA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g2KA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:683585,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g2KA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!g2KA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1ad9532-267b-4334-af68-c46ed87da4f1_1920x1080.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>In my <a href="https://www.enlighten.services/p/the-software-development-reality">previous article</a>, I discussed why adopting a scalable architecture is necessary to enhance business acceleration. In this article I will delve deeper into the concept of scalable software architecture and in particular Flexibility as one important aspect of a scalable architecture.</p><h3><strong>Flexibility - one angle of Software Architecture Scalability</strong></h3><p>Scalable software architecture is designed to expand seamlessly with the growth of a business. It's agile, adaptable, and has the capacity to accommodate dynamic changes.</p><p>When discussing scalable architecture, there are multiple angles to consider:</p><p><strong>Functional scalability</strong>, often referred to as <strong>Flexibility</strong>, is one aspect of software scalability. It highlights a system's ability to adjust to changing requirements, allowing for the addition of features, fixing bugs, or updating the system without significant effort or requiring a complete redesign.</p><p><strong>Load scalability</strong> views scalability from a different perspective. It's about the system's ability to handle increased traffic without compromising performance efficiency. A scalable system can manage high-peak traffic, ensuring reliable and high-performance operation at optimal costs.</p><p><strong>Data scalability</strong> is similar to load scalability, but the focus here is on the system's efficiency in managing growing volumes of data. It becomes crucial how optimally the software processes, stores, archives, or integrates scalable data storage solutions to maintain optimal performance.</p><h3><strong>What do we expect from a Flexible Software Architecture</strong></h3><p>If a flexible architecture enables fast and effective implementation of system changes into production, it should embody a high degree of:</p><ol><li><p>Maintainability - Simplifying updates and issue resolution within the system.</p></li><li><p>Testability - Streamlining the testing process post-update implementation.</p></li><li><p>Deployability - Ensuring rapid deployment of tested changes into production.</p></li></ol><p>These three elements are crucial stages in the process of implementing changes in a system and transitioning it to production. A flexible architecture should support each of these areas.</p><h3>How to achieve Flexible Architecture</h3><p>So, what principles do we need to follow to build an architecture that is flexible and supports easy maintenance, testing, and deployment?</p><h4><strong>1. Build the system in well-defined modules</strong></h4><p>At the heart of a Flexible Architecture lies Modularity.</p><p><em>Modularity entails a software system characterized by a clearly defined structure. It involves constructing software using smaller, well-defined modules (or components) that have minimal interaction with each other. These modules adhere to the same modular approach internally, consisting of submodules with an optimal number of dependencies.</em></p><p>An analogy for modular architecture is a library, where bookshelves represent modules. In a well-organised library, each bookshelf serves a specific genre, easily managed independently. Additionally, each bookshelf is further divided into categories based on titles, making it effortless for visitors to find a specific book. This stands in stark contrast to a disorganised library, where finding the series of your favourite books can be nearly impossible, and chaos ensues when multiple people search simultaneously.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xz7H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xz7H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 424w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 848w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 1272w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xz7H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png" width="676" height="360.1749502982107" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:1006,&quot;resizeWidth&quot;:676,&quot;bytes&quot;:222879,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!Xz7H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 424w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 848w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.png 1272w, https://substackcdn.com/image/fetch/$s_!Xz7H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bc4d348-ab4b-48e8-88ef-5e692dc9eb3b_1006x536.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><figcaption class="image-caption">Modular architecture: Module A split into modules, each of them in smaller submodules. </figcaption></figure></div><p>There are a few key principles of a modular architecture:</p><p><strong>Principle 1: Single responsibility modules.</strong> Each module is dedicated to a specific function; it should have a single responsibility. When a module's purpose isn't clearly defined, it tends to accumulate unrelated logoc over time, growing into a large module that becomes a maintenance bottleneck.</p><p><strong>Principle 2: Clear interface hides implementation details.</strong> Modules maintain well-defined interfaces for communicating with other components. This ensures that a module's code interacts solely through its interface, encapsulating the implementation details. In the figure above, Module A communicates with the external system through a dedicated submodule. This setup enables seamless replacement of the external system by updating only the relevant submodule, minimising disruptions in the rest of the system.</p><p><strong>Principle 3: Minimising dependencies.</strong> Modular design aims to minimise connections between components. Fewer dependencies lead to decoupled modules, making it easier to replace one with less impact on the system. This emphasis on minimising dependencies is particularly vital for higher-level modules, although lower-level submodules may accommodate more intricate connections.</p><p><strong>Modular architecture facilitates Maintainability</strong></p><p>In a modular system, implementing small updates becomes easier, as developers can quickly pinpoint where a change should be made within the well-defined modules. The fix remains encapsulated, preventing changes from affecting the entire system.</p><p>Expanding the system with new functionality is also manageable within the well-defined modular system framework, where each component has its designated place.</p><p>Additionally, replacing a component is more manageable compared to a non-modular system because it only affects a small portion of the codebase. This flexibility enables seamless changes to the system.</p><h4><strong>2. From Modules to Deployable Units</strong></h4><p>Before we proceed further, let's delve into the concept of a deployable unit and monolithic architecture.</p><p><em>A deployable unit refers to a single piece of executable code.</em></p><p><em>In a monolithic architecture, the entire system is contained within a single deployable unit, commonly known as a monolith.</em></p><p>While discussing modularity, we didn't explicitly mention that modules are independently executable units. Consequently, a system with a modular architecture can still be a monolith - a modular monolith. In such cases, the entire system functions as a single executable component, with a well-organised codebase structured into software modules.</p><p>A monolithic architecture is simple and straightforward, making it a suitable choice for smaller systems.</p><p>However, it does come with limitations. As the system and the team responsible for its maintenance grow in size, sustaining it as a monolith becomes progressively challenging.</p><p><strong>Smaller deployable units enhance Deployability</strong></p><p>Monolithic architecture presents limitations in deployability. Even minor modifications in the system necessitate deploying the entire system, posing obstacles for the entire team. This leads to code freezes, lengthy and intricate testing procedures, and prolonged deployment cycles spanning weeks.</p><p>The concept of frequent deployments becomes unfeasible, and introducing new changes for customers on a regular basis becomes both risky and unfavorable for the business. This often results in delayed implementation of new features or bug fixes, leaving them in production for weeks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Gpn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Gpn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 424w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 848w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 1272w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Gpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png" width="1408" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68353,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!1Gpn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 424w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 848w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.png 1272w, https://substackcdn.com/image/fetch/$s_!1Gpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50dd25d6-cb19-448e-9e7c-dfd905ed7239_1408x730.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><figcaption class="image-caption">Left side: Application as one monolith; Right side: Two system modules isolated as separate deployable units</figcaption></figure></div><p>To address these challenges, segmenting the application into distinct deployable components (or services) proves advantageous.</p><p>Applications with smaller deployable units experience quicker time to market and increased agility. Deployment processes are shorter, risks are smaller, and customers can benefit from more frequent code updates.</p><p><strong>Smaller deployable units promotes Testability</strong></p><p>Large monolithic applications also add complexity to the testing process. Even if the monolithic application has a comprehensive suite of regression tests, implementing a change and redeploying the entire application entails executing an extensive list of tests, making the process slow and often frustrating for the engineering team.</p><p>Partitioning the monolith into smaller deployable units, when done correctly, can significantly enhance testability. When a change is made only in a smaller deployable component, the testing scope becomes more focused, and testing becomes faster. Additionally, maintaining unit tests for smaller deployable units is considerably easier. </p><p><strong>How to approach the decomposition process</strong></p><p>However, the process of decomposing a monolithic structure into separate components must be approached with careful consideration and a clear rationale.</p><p>Companies often aspire to transition to a micro-services architecture (where the system is divided into very small deployable units, each with its dedicated data storage), expecting direct benefits. However, if not executed correctly, this intricate renovation process can significantly increase the existing challenges.</p><p>The most daunting scenarios arise when attempting to prematurely separate small services from a large monolith. Not only is the separation itself challenging, but replacing software code dependencies within the monolith with (network) dependencies between deployable units can significantly impact the system's performance efficiency.</p><p>To transition from a monolithic to a service-oriented architecture, the initial step is to modularise the architecture and then gradually isolate the most independent modules as deployable units.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M7_O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M7_O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 424w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 848w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 1272w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M7_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png" width="598" height="276.6448598130841" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:1284,&quot;resizeWidth&quot;:598,&quot;bytes&quot;:74438,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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_!M7_O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 424w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 848w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.png 1272w, https://substackcdn.com/image/fetch/$s_!M7_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18028840-dc52-4272-a2d8-d090bd25f044_1284x594.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><figcaption class="image-caption">Left size: monolithic system lacking modularity principles. Right side: modules extracted as deployable components leading to complex network dependencies and performance degradation.</figcaption></figure></div><p><strong>Final thoughts</strong></p><p>The path toward scalable and flexible software architecture is a strategic imperative for businesses pursuing agility and growth.</p><p>It's essential to recognise the trade-offs and challenges that are part of this journey. Software architecture is defined by these trade-offs. It's crucial to carefully weigh the pros and cons and find the right balance. Achieving perfection in every aspect is impossible.</p><div><hr></div><p>This blog is part of the series on Scalable Software Architecture. Below, you'll find an index of the articles in this series:</p><ol><li><p><a href="https://www.enlighten.services/p/the-software-development-reality">The Software Development Reality: The Need for Scalable Architecture</a></p></li><li><p><a href="https://www.enlighten.services/p/the-role-of-flexibility-in-scalable">The Role of Flexibility in Scalable Architecture</a></p></li><li><p><em><a href="https://www.enlighten.services/p/performant-scalable-architecture">Empowering Growth: The Importance of Performant Scalable Architecture</a></em></p></li><li><p><a href="https://www.enlighten.services/p/how-to-establish-architecture-principles">How to Establish Architecture Principles for Successful Scaling</a></p></li></ol><p>Subscribe to receive the latest insights.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Software Development Reality: The Need for Scalable Architecture]]></title><description><![CDATA[Why software development is slower than we expect?]]></description><link>https://www.enlighten.services/p/the-software-development-reality</link><guid isPermaLink="false">https://www.enlighten.services/p/the-software-development-reality</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Fri, 26 Jan 2024 08:20:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QBxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QBxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QBxg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QBxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:305034,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QBxg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QBxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff74f90ac-0a16-4cc4-bdbe-e1ac2f4de62f_1920x1080.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>At TechWavve headquarters, a new announcement has brought excitement&#8212;a green light for the upcoming merger. New exciting opportunities, substantial growth, a doubled customer base, and fresh market openings are on the horizon. This is going to be a game-changer.</p><p>During this executive team's excitement, a big cloud of concern over the head of engineering. Immersed in the ongoing complex projects, the engineering team cannot even comprehend the scale of the challenge ahead. Merging or transitioning the already complex software landscape with the software from another company is a formidable task, like scaling Everest.</p><p>What hinders the software landscape from supporting the desired business agility?</p><h2><strong>The complex reality of software development</strong></h2><p>In today's era of software development, numerous tools, technologies, and programming languages are available, simplifying development and making it accessible to a wider audience. With this modern technology, there is a prevailing expectation that the entire product development process should be more straightforward and efficient.</p><p>However, the reality for many companies doesn't quite match this expectation of effortlessly building software applications. Why is that?</p><p>When we look back at product development from a decade ago and compare it to the present, we must acknowledge significant improvements. Systems can now be built more swiftly, with better product quality and an incomparable user experience.</p><p>But despite these advancements, fundamental forces persist, making software development more complex than we expect.</p><p><strong>Software development is more about maintenance than development</strong></p><p>A seemingly minor addition to meet a customer's request involved just 10 new lines of code. However, this new code is expected to function reliably for the next 5, 10, or even more years, as long as it's in use by any customer in a production environment. Consequently, sustained maintenance of this code is necessary during these years, requiring a team member who thoroughly understands its functionality.</p><p>Software maintenance consists of post-release activities, including updates after the code has been released to production. This can involve addressing outdated features, improving performance, fixing bugs, or adapting to evolving technologies.</p><p>Unfortunately, the significance of code maintenance is often overlooked. Despite the belief that code is a one-time creation, the reality is that, at some point, this code will either malfunction or, at the very least, increase the cognitive load for the team.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eC4l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eC4l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 424w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 848w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 1272w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eC4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png" width="296" height="298.54077253218884" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298.54077253218884,&quot;width&quot;:296,&quot;resizeWidth&quot;:296,&quot;bytes&quot;:37001,&quot;alt&quot;:&quot;Software maintenance vs software development&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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="Software maintenance vs software development" title="Software maintenance vs software development" srcset="https://substackcdn.com/image/fetch/$s_!eC4l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 424w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 848w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.png 1272w, https://substackcdn.com/image/fetch/$s_!eC4l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb242973-88e5-47c8-913e-e6f4a223ac96_466x470.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><p>Statistical data shows that software maintenance accounts for 80%-90% of the total software development effort. On average, on a yearly basis, software maintenance costs may range from 15% to 25% of the initial development cost. In simpler terms, to build an application and keep it live in production for at least 5 years, you should anticipate dedicating five times more effort (and cost) than initially planned for development.</p><p><strong>Size and complexity matter</strong></p><p>Each line of code introduced into a system necessitates ongoing maintenance. Consequently, the size and complexity of the software significantly influence the productivity of development.</p><p>That&#8217;s why creating a new system from scratch is typically a swift process. During the initial development phase, the focus is solely on construction, free from the weight of past code created by someone else. Developers are also enthusiastic and motivated to introduce a brand-new innovative feature.</p><p>However, the scenario shifts as the system expands, and the once-new code ages into what is commonly known as legacy code. The complexity of the legacy code is further compounded by frequent changes, making it less organised and understandable when new developers join the team.</p><p>Despite the team's eagerness to progress with fresh new features, the challenges of correcting issues from past code pull them back into the realm of addressing and maintaining the existing system.</p><p>Research has explored the relationship between system size and the effort needed for maintenance. The simplified formula within the <a href="https://www.scaler.com/topics/cocomo-model-in-software-engineering/">COCOMO</a> model is:</p><p><code>Effort = a * (Size)^b</code></p><p>where, "<code>a</code>" represents the productivity of the development team, and "<code>b</code>" indicates the scalability of the product.</p><p>Without delving into complex mathematics, it's clear that size significantly impacts effort. And even more, the more complex the software architecture, the steeper the growth trajectory in terms of required effort.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LAHW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAHW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 424w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 848w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png" width="476" height="259.7803660565724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1202,&quot;resizeWidth&quot;:476,&quot;bytes&quot;:728318,&quot;alt&quot;:&quot;Impact of size on software development effort &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&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="Impact of size on software development effort " title="Impact of size on software development effort " srcset="https://substackcdn.com/image/fetch/$s_!LAHW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 424w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 848w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LAHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b019550-b348-4bd6-ad98-6931e3867d6d_1202x656.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><figcaption class="image-caption">Impact of size on software development effort (image source www.scaler.com)</figcaption></figure></div><h3><strong>Software development beyond software programming</strong></h3><p>Software development goes beyond mere programming. Typically, the software implementation constitutes less than 50% of the total time invested in bringing the code to production.</p><p>The entire software delivery process involves more than just coding&#8212;it includes design, code testing, deployments, and handling operational issues. Maturing this processes and automation can significantly reduce the effort required for these supporting activities. However, achieving these improvements requires allocating time for technical enhancements, which is often challenging alongside the demand for new features.</p><p>Adding to this complexity, bringing a feature to production involves addressing new compliance and security requirements, aligning with stakeholders, and accommodating inevitable changes in requirements. Over time, the cumulative impact of these factors intensifies, especially as the system expands.</p><h3><strong>Business agility through scalable software architecture</strong></h3><p>In today's dynamic business landscape marked by swift shifts, mergers, and heightened competition, software systems demand agility. The speed of software development hinges on key factors &#8211; size and scalability. While optimising size through lean features is important, the natural growth of a system over time is inevitable.</p><p>Crucially, the scalability and complexity of a software system, rooted in its architecture, significantly impact agility. A large, non-modular system with complex code obstructs new feature additions and timely bug fixes. A monolithic structure managed by multiple teams cannot support releasing new features fast. The downsides of such architecture become clear as data volumes and incoming requests increase, leading to performance issues and rising scaling costs.</p><div><hr></div><p>This blog is part of the series on Scalable Software Architecture. Below, you'll find an index of the articles in this series:</p><ol><li><p><a href="https://www.enlighten.services/p/the-software-development-reality">The Software Development Reality: The Need for Scalable Architecture</a></p></li><li><p><a href="https://www.enlighten.services/p/the-role-of-flexibility-in-scalable">The Role of Flexibility in Scalable Architecture</a></p></li><li><p><em><a href="https://www.enlighten.services/p/performant-scalable-architecture">Empowering Growth: The Importance of Performant Scalable Architecture</a></em></p></li><li><p><a href="https://www.enlighten.services/p/how-to-establish-architecture-principles">How to Establish Architecture Principles for Successful Scaling</a></p></li></ol><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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">Lean Product Growth 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><item><title><![CDATA[Technical Debt Decision Making: Refactor, Rebuild, or Stand Pat]]></title><description><![CDATA[This guide delves into the pivotal choices software teams face when dealing with technical debt. Learn about code refactoring, rebuilding, or maintaining the status quo to keep your codebase manageable and your team effective.]]></description><link>https://www.enlighten.services/p/technical-debt-decision-making</link><guid isPermaLink="false">https://www.enlighten.services/p/technical-debt-decision-making</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Wed, 18 Oct 2023 08:00:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P0x1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P0x1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P0x1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg" width="648" height="364.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:648,&quot;bytes&quot;:106560,&quot;alt&quot;:&quot;Rope balancing symbolizing managing technical debt risks&quot;,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Rope balancing symbolizing managing technical debt risks" title="Rope balancing symbolizing managing technical debt risks" srcset="https://substackcdn.com/image/fetch/$s_!P0x1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P0x1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe01cb56-a140-4364-bf8e-a0df1c23a9ed_1920x1080.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>Software development is costly.</p><p>Introducing a seemingly high-value new feature to your product can present substantial challenges that test the mettle of your development teams.</p><p>Consider the time investments necessary for feature development, the inevitable troubleshooting of unforeseen issues (often surpassing initial estimates), and the frequently underestimated aspect of ongoing code maintenance.</p><p>Data indicates that an astonishing 70-80% of the total lifecycle costs of a software application are attributed to maintenance alone. This statistical insight underscores the importance of an often-underestimated aspect: ongoing code maintenance.</p><p>What's more, when code is delivered without a keen focus on quality, it worsens the problem significantly, substantially increasing the complexity of your teams' work. This leads to a considerable accumulation of technical debt within the codebase.</p><p>At some point, a pivotal decision must be made: continue to manage the existing code, undertake a comprehensive code refactoring project, or embark on a complete rebuild of the product?</p><h3><strong>How Did We Accumulate So Much Technical Debt?</strong></h3><p>Technical debt is a familiar concept in software development. It emerges when developers take shortcuts or compromise to meet pressing project deadlines or immediate deliverables.&nbsp;</p><p>Every product's codebase naturally collects some technical debt, which is normal and not necessarily a problem. However, issues arise when this debt keeps piling up over time and slows down the velocity of software development. This slowdown reorients the focus from innovation and feature enhancement to issue resolution.&nbsp;</p><p>This shift means that a disproportionate amount of developmental bandwidth is allocated towards 'firefighting' rather than advancing the product roadmap.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_lwh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_lwh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_lwh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg" width="432" height="347.52" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:900,&quot;resizeWidth&quot;:432,&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_!_lwh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_lwh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa404b2fb-0571-420b-bf5c-149b7df172cd_900x724.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>So, what contributes to the accumulation of technical debt within a software development lifecycle?&nbsp;</p><p><strong>Foundational Decisions</strong></p><p>Just as a solid foundation is crucial when building a house, the decisions made during the initial phases of software development have a lasting impact on the project's trajectory. Choices concerning software architecture or technology selection are strategic imperatives. If these decisions aren't made correctly from the start, they might lead to substantial challenges as the project evolves.</p><p>Initial architectural decisions may not exhibit immediate drawbacks, especially in smaller teams.&nbsp; However, as the scope of the project broadens and the size of the development teams scales, these initial decisions can gradually evolve into primary bottlenecks. They may inhibit workflow efficiency, obstruct seamless communication, and escalate operational costs. Eventually, it can reach a point where releasing even a simple software feature becomes a substantial challenge and a source of significant frustration for the product teams.</p><p><strong>Poor Approach Towards Quality</strong></p><p>A lack of commitment to clean and quality code is dangerous.</p><p>Similar to the regular maintenance required to preserve the value of a sturdy house, software quality demands continual attention. A lapse in this commitment can convert software from a strategic asset to a burgeoning liability.</p><p>Some product teams may not fully grasp the consequences of subpar quality. They lack quality assurance mechanisms or best practice quality frameworks integrated into their operational procedures.</p><p>However, more commonly, teams recognise the implications of low quality but often lack the authority to prioritise quality improvements over the pressing need to deliver the next set of features. They work under the pressure of impending deadlines, which makes it challenging to shift their focus towards enhancing quality. There's often the false optimism that the following month will provide the bandwidth for quality improvement initiatives, yet more often than not, things get even worse.</p><p>These scenarios often highlight a disconnect between the "business" and "technology" aspects, where technology teams tend to follow the business directives. While business stakeholders understandably pursue feature expansion as a strategic goal, such a focus often deviates from the path of investing in the reduction of technical debt.</p><p><strong>Desire For More Features</strong></p><p>New features are exciting. They enhance the product, enrich user engagement, and increase its core value.</p><p>But did you know that every new feature, regardless of its code footprint, carries associated and often underestimated overheads? It entails added efforts for testing, maintenance, and bug fixing. And not to ignore, it increases the overall complexity of the product and demands more mental effort from the product team to maintain the entire codebase.</p><p>Think of it like buying another coffee machine. While it enhances your daily routine, it also requires regular maintenance to operate at peak performance. And if you make the wrong choice, or if you fail to maintain it regularly, it becomes more clutter than a useful addition to your household.</p><h3><strong>Strategic Decision-Making Amidst Mounting Technical Debt</strong></h3><p>When you are at the stage when there is a lot of debt accumulated in your codebase, you find yourself at a critical decision-making vertex. The weight of each choice you make is inescapable, carrying significant implications for both your product teams and broader business objectives.&nbsp;</p><p>So, what strategic options should you consider?</p><p><strong>Option 1: Maintain The Status Quo</strong></p><p>You have the option to retain the current situation. This may translate to zero immediate financial or time investment. While this route may appear cost-effective on the surface, it carries the risk of stagnation or even deterioration as your project or team scales.</p><p>You might identify some low-hanging fruit - easy-to-fix issues. While addressing these issues can bring some positive changes, the fundamental problem will likely persist, and the overall impact may be limited.</p><p>Retaining the status quo can be a strategic move under specific circumstances, such as when your product is approaching the end of its lifecycle or requires minimal ongoing maintenance, remaining stable with infrequent updates. Alternatively, it can be a suitable option when you're nearing a significant milestone, like a new investment round or a major product launch. In these instances, delaying decisive action on underlying issues could be justifiable as a short-term strategy.</p><p><strong>Option 2. Prioritise Refactoring Over New Development</strong></p><p>Another scenario involves code refactoring, which means renovating and improving the codebase.</p><p>This approach works well when executed cautiously. Without the discipline to delay or slow down the pace of new feature development, extensive refactoring can lead to unfavorable outcomes. It carries inherent risks, and if not carried out with care, it can introduce numerous new issues into the product.</p><p>The benefit of this approach is that, if successful, it leads to an enhanced codebase. It also offers the flexibility to choose which parts of the codebase to refactor, eliminating the need for a complete rebuild.</p><p>This option is most appropriate when you've identified a specific foundational issue that doesn't require a full codebase rebuild. For example, it could involve breaking down a large component or resolving a performance bottleneck at the interface level.</p><p>Before starting any renovation initiative, conduct an initial assessment of the effort and associated risks. Sometimes, refactoring a single component of the software can have a profound impact on the entire product. Refactoring a database, for instance, can have ripple effects across the entire product, even if it initially appears to affect only one part. In fact, the more modular and higher quality the code, the smoother the refactoring process becomes.</p><p><strong>Option 3: Parallel Rebuild And Migration</strong></p><p>It might seem overwhelming, but when dealing with a product of exceptionally low quality, opting for a complete rebuild is often the most practical solution. In fact, it can frequently be a simpler and cleaner choice than extensive refactoring.</p><p>While it does require an investment, projecting the costs of rebuilding and maintaining a high-quality solution over a five-year period typically yields a more favorable outcome compared to persisting with and maintaining a low-quality codebase or refactoring it.</p><p>The positive aspect of this approach is that building a new product can occur in parallel with ongoing development. This can involve a dedicated team focused on the new product, which is a much cleaner and more productive approach. It presents the opportunity to make the right architectural decisions, leverage the most suitable technological stacks, and modernize the product.</p><p>However, it's essential to remember that once the new product is ready, the migration process comes into play. Be prepared: migrations are substantial projects on their own and require a serious commitment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fU1Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fU1Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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_!fU1Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fU1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86a94edb-1c1a-4bba-82d0-7d85bf806c94_1456x819.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><h3><strong>Strategic Imperatives For Mitigating Technical Debt&nbsp;</strong></h3><p>None of the options listed above are straightforward; they bring risks and financial commitments and may decrease the team morale. After all, who would naturally gravitate towards the difficult task of refactoring over developing an innovative and shiny new feature?</p><p>The most effective strategy lies in preventive action&#8212;averting a scenario where such a complex decision becomes necessary. Here&#8217;s how you can do that:</p><p><strong>Quality Awareness</strong></p><p>Understanding that a low-quality product can have adverse effects on your business is the essential starting point.</p><p>However, ensuring a high-quality product is not solely the responsibility of the technology teams; it should be a company-wide mindset. Cultivate a culture where your product managers and stakeholders prioritize quality while pursuing new developments without compromising it.</p><p>Resisting the urge to cut corners in the face of pressing deadlines is undeniable. Remember, shortcuts must be the exception rather than the rule. Frequent reliance on shortcuts might bring exponential costs over time.</p><p>Support your product development team with the tools and best practices to seamlessly integrate quality into their work. Doing so elevates the standard of excellence consistently across your product and technological offerings.</p><p><strong>Thoughtful Architectural Decisions</strong></p><p>Unwise architectural choices have the potential to undermine the success of your product, even when you have a team of top-tier developers producing high-quality code. The foundational structure of a product is not easily altered in the future.</p><p>When setting up the fundamental architecture of your product, it's crucial to approach this task with great care, weighing the advantages and disadvantages of different options. Rather than focusing solely on the current state, consider the product's future growth. <a href="https://www.enlighten.services/p/unlocking-the-architectural-scalability-of-software-products">Opt for solutions that can scale</a> and adapt as your product expands. Ensure comprehensive documentation of your decisions and the rationale behind them.</p><p>While it's impossible to guarantee a completely future-proof solution, making well-informed choices significantly reduces the risk of costly errors.</p><p><strong>Maintain A Lean Approach</strong></p><p>Approach product development with a lean mindset. A product free from unnecessary clutter is easier to manage, visually appealing, and more user-friendly.</p><p>Resist the temptation to introduce a new feature solely because it seems like a good opportunity or because one of your customers has asked for that.</p><p>Instead, aim for a balance, focusing on truly essential features. Prior to incorporating new features, ensure their necessity is supported by data. Embrace experimentation and validation before committing the product development team to a two-month project, followed by three times the effort for ongoing maintenance.</p><p>This lean-centric approach should be embraced on every level of the organization&#8212;from executive strategy-making and sales initiatives to product management's feature-value assessments and the software development team's quest for efficiency and optimal performance.</p><h3><strong>Final Thoughts</strong></h3><p>Let's acknowledge the inevitable: attaining absolute certainty against future renovations is an unrealistic goal. Technologies evolve, past decisions may misalign with the new strategic objectives, and significant migration projects may still be required. Yet, by following diligent preventative measures, you can significantly reduce the risks and be better prepared when challenging decisions become unavoidable.</p><div><hr></div><h3><strong>Before you leave</strong></h3><p>Decisions regarding code refactoring, rebuilding, or maintaining the status quo can significantly impact your organization's future.</p><p>Take that proactive leap and avoid standing at a costly crossroads by subscribing to my newsletter, where I regularly provide valuable insights on building and scaling products.&nbsp;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/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://www.enlighten.services/subscribe?"><span>Subscribe now</span></a></p><p><strong>Share</strong> this article with others. By doing this, I&#8217;ll collect more questions from readers and ensure more relevant articles.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.enlighten.services/p/building-teams-that-execute-product-strategy?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&amp;token=eyJ1c2VyX2lkIjoxNDk5MTA1NzYsInBvc3RfaWQiOjEzNjY1OTU2NywiaWF0IjoxNjk3NDU3OTAyLCJleHAiOjE3MDAwNDk5MDIsImlzcyI6InB1Yi0xNzIyNzYzIiwic3ViIjoicG9zdC1yZWFjdGlvbiJ9.dKsWibZvR4CmGF3mkCLtfGDTau6hg7HR7sIVNLWJV2o&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.enlighten.services/p/building-teams-that-execute-product-strategy?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&amp;token=eyJ1c2VyX2lkIjoxNDk5MTA1NzYsInBvc3RfaWQiOjEzNjY1OTU2NywiaWF0IjoxNjk3NDU3OTAyLCJleHAiOjE3MDAwNDk5MDIsImlzcyI6InB1Yi0xNzIyNzYzIiwic3ViIjoicG9zdC1yZWFjdGlvbiJ9.dKsWibZvR4CmGF3mkCLtfGDTau6hg7HR7sIVNLWJV2o"><span>Share</span></a></p><p>Thank you, </p><p>Marina </p>]]></content:encoded></item><item><title><![CDATA[Quality of Minimum Viable Products]]></title><description><![CDATA[The common misconception that MVP equals low quality]]></description><link>https://www.enlighten.services/p/quality-of-minimum-viable-product</link><guid isPermaLink="false">https://www.enlighten.services/p/quality-of-minimum-viable-product</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Tue, 28 Feb 2023 06:24:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c412483e-3a28-4371-9bd8-cce3a5bf09ee_1000x562.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j5bY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j5bY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j5bY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Damaged apple representing low-quality software&quot;,&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="Damaged apple representing low-quality software" title="Damaged apple representing low-quality software" srcset="https://substackcdn.com/image/fetch/$s_!j5bY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!j5bY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee5cb1a9-575d-4d77-8ad6-ae007992ec72_1000x562.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>The common misconception that MVP equals low quality</h2><p>A Minimum Viable Product (MVP) is a crucial concept to build a successful new product. However, there is a common misconception about this term. MVP is often seen as a product with basic set of features and with low-quality. Therefore, companies consider that they need to choose between building an MVP or a high-quality product.</p><p>Unfortunately, this misconception makes many companies (both startups and established brands) averse to the MVP approach. They avoid going the MVP route because they don't want to damage the quality of their product or the reputation of their brand.</p><h2>What is actually quality of a software product?</h2><p>Before we talk about quality of MVPs, let's first explore what software quality actually means?</p><p>Software quality refers to the degree to which a software product meets specified requirements, customer expectations, and industry standards. It encompasses various quality characteristics, such as performance efficiency, reliability, usability, security, maintainability, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g3tZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g3tZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 424w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 848w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 1272w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g3tZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Software quality characteristics&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Software quality characteristics" title="Software quality characteristics" srcset="https://substackcdn.com/image/fetch/$s_!g3tZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 424w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 848w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 1272w, https://substackcdn.com/image/fetch/$s_!g3tZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd20c81de-1e16-473f-8706-b15e15dc2495_1000x610.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>This means that software quality is not limited to the absence of defects only, but it is about the overall user's experience with the system, how easy it is to use, and how it performs in different environments and situations.</p><p>For example, a software application with high number of defects is considered to be of low reliability. However, reliability is just one aspect of software quality. Even if an application is completely defect-free, it may still have other issues, such as slow loading times, which indicate poor performance efficiency. Similarly, the software may have a high level of complexity that makes it difficult to make changes and maintain, leading to low maintainability.</p><h2>MVP is NOT about low quality</h2><p>The MVP approach was introduced in detail by Eric Ries in his book "<a href="https://theleanstartup.com/">The Lean Startup</a>". But in the book Eric never explained MVP as a minimum product from quality point of view. He did not talk about cutting corners during product development, leaving defects in the software and launching a software of poor quality.</p><p>The idea of MVP is to think "lean" during product development and to challenge yourself on how to deliver high value with minimal effort and how to maximise the amount of learning during this process. (I've explained in my previous <a href="https://www.enlighten.services/post/does-p-in-mvp-stand-for-product">post</a> the concept of MVP in detail).</p><p>But even if you deliver a "Lean" product, it needs to be valuable for the user, and even more, it needs to stand out from the competition and delight the user. Otherwise why would the user choose for this new product when there are already other alternatives.</p><h2>Low quality MVP can be harmful</h2><p>Delivering a low quality product comes at a risk.</p><p>First and most important, a user testing a buggy software would unlikely be delighted. The low quality will lead to damaged user experience, and would hinder the user from seeing the real value of the product.</p><p>Low quality is also very harmful for the product development team. Although you might benefit from launching the product faster, this is only a short term win, and over time, ignoring software quality means accumulating so called <em>technical debt,</em> i.e., technical issues that should be fixed at some point.</p><p>Maintaining a good quality software is like keeping a house well maintained and tidy. This requires fixing small issues right after they occur, keeping it tidy continuously, and establishing a system or a process to help you keep everything tidy. If you just keep things polished from outside and you hide all the damages and clutter, all issues would accumulate over time. At some point you would need to spend so much time and even money to bring it to a desirable level.</p><h2>How to approach quality in MVP</h2><h3><strong>Understand what are the quality criteria for your early users</strong></h3><p>When building a Minimum Viable Product (MVP), the importance of software quality depends on the specific context and goals of the product. While a high level of software quality is always desirable, the MVP is designed to test the viability of the product idea with minimal investment of time and resources. Therefore, it may be acceptable to compromise on certain aspects of software quality in order to deliver the MVP quickly and cost-effectively.</p><p>However, before you compromise on any quality aspects, you need to make sure that this is not going to be harmful for the user experience. So it's crucial to identify the key quality criteria that your early users expect and focus on those.</p><p>Which are the quality criteria for your product? This can be very different and depends on the type of your business and the expectations of your early users. Evaluate all the quality criteria and consider how much each of them is important for your product at this stage? Questions to consider include:</p><ul><li><p>What do your users value most?</p></li><li><p>How tech-savvy are your early users?</p></li><li><p>Is there any critical data your system is processing?</p></li><li><p>What is the business impact of a system failure?</p></li><li><p>Would a great UX design be the key differentiator for your application?</p></li></ul><p>For example, if you are building a software application for online-shopping, and you discover that your competitor's disadvantage is poor performance, performance becomes a high priority for your product.</p><p>Good UX design is typically an important criterion for most users today. However, if for example you are building a highly innovative software product for medical professionals, users might value more the accuracy of the tech algorithm than the UX design.</p><h3><strong>Define measurable quality requirements</strong></h3><p>Once you have your key quality criteria, it's a good practice to define concrete measurable quality requirements. These requirements should then be treated in the same manner as the functional requirements (the features), which means that with every release of the software, the product development team should ensure that these requirements are met.</p><p>For example, if performance efficiency is you key criteria, a requirement might be defined as "every page should respond in maximum one second".</p><p>If Usability is a key differentiator of your product, you might consider a measurable requirement like "the user should be able to purchase the desired product in no more than 3 steps".</p><p>When these characteristics are measurable, you can also monitor them and improve over time.</p><h3><strong>Select the right technology and architecture</strong></h3><p>The key quality criteria that you've selected drive many decisions in the product development. And one of the key decisions is the selection of the technology and the architecture foundation.</p><p>If you have chosen a short-term technical solution (such as a low-code platform that you plan to use until you have a proven business model and you plan to rebuild before scale), the decision you make now would not have a significant impact.</p><p>However, if the software you build now will serve as a foundation for the long-term, selecting the right technology and architecture is critical. This includes selecting a foundation framework (potentially a commercial off-the-shelf software), or choosing a frontend, backend, database technology, or specific payment technology. Making the wrong decision could result in the need to fully rebuild the software in the future, which is definitely something you'd want to avoid.</p><h3><strong>Integrate quality best practices in the development process</strong></h3><p>An important practice is defining quality coding guidelines, particularly when working with multiple software engineers. These guidelines help ensure that everyone on the team is working towards the same level of software quality.</p><p>In addition, integrating automated testing is another important practice that can greatly increase the reliability of the software while also improving the efficiency of testing. Automated testing helps catch defects earlier in the development cycle, allowing for quicker identification and resolution of issues.</p><h2>Conclusion</h2><p>Software quality is as important as is the functionality of your product. Even when you are introducing your product to the early users, quality should not be sacrificed in the pursuit of building an MVP faster.</p><p>While you should not invest in the most advanced software quality tools or make the software extremely reliable or scalable, a satisfactory level of quality is needed. This will ensure that the user is able to see the real value of your product without hindrance.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p0aQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p0aQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 424w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 848w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 1272w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p0aQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Designing for emotion, Aaron Walter, Approach to quality in MVP&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Designing for emotion, Aaron Walter, Approach to quality in MVP" title="Designing for emotion, Aaron Walter, Approach to quality in MVP" srcset="https://substackcdn.com/image/fetch/$s_!p0aQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 424w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 848w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 1272w, https://substackcdn.com/image/fetch/$s_!p0aQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a55a1c4-b200-441a-bb8a-bfd38b6be82e_1000x335.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In his book"<a href="https://www.amazon.com/Designing-Emotion-Aaron-Walter/dp/1937557006 ">Designing for emotion", </a>Aaron Walter introduces different characteristics that a product should have. Great products are not only functional, but are also pleasant to work with.</p><p>MVP is not about implementing partially features only, and ignoring everything else. Instead, an MVP is about implementing a satisfactory level of everything that matters to the user, including both functionality and quality.</p>]]></content:encoded></item><item><title><![CDATA[Why two decades after the MVP concept was introduced, MVPs still fail]]></title><description><![CDATA[The same story repeats over an over.]]></description><link>https://www.enlighten.services/p/why-after-two-decades-mvps-still-go-wrong</link><guid isPermaLink="false">https://www.enlighten.services/p/why-after-two-decades-mvps-still-go-wrong</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Sat, 12 Nov 2022 12:27:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/13204cb9-659b-487f-beaa-33581e04710f_1000x628.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8YY0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8YY0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 424w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 848w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 1272w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8YY0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c15538e2-444e-408f-a740-590b7259084c_1000x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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_!8YY0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 424w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 848w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 1272w, https://substackcdn.com/image/fetch/$s_!8YY0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc15538e2-444e-408f-a740-590b7259084c_1000x628.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>The same story repeats over an over. An entrepreneur has an idea, sets a budget, develops a Minimum Viable Product (MVP), but launching the product leads to a disappointment. There is almost no chance that the investment will be returned.</p><p>So why is building a successful product anything but easy? Why 90% of the products built today end up with a failure?</p><p>In our recent <a href="https://www.enlighten.services/post/does-p-in-mvp-stand-for-product">post</a>, we introduced in detail the concept and the definition of MVP. We introduced MVP as a vehicle that moves the users from the current state to their desired state. The key idea behind the MVP concept is that building the MVP is done in iterations, small steps, each of them continuously validated with the user.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b4o6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b4o6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 424w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 848w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 1272w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b4o6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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;: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_!b4o6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 424w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 848w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 1272w, https://substackcdn.com/image/fetch/$s_!b4o6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F704e854f-ee99-4b63-91de-f440f964cce2_1000x356.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Although the term MVP resonates pretty well intuitively with entrepreneurs, the following mistakes are very common and are the biggest contributor to the 90% of failed products.</p><h2>Mistake #1. Insufficient understanding of the user</h2><p>I know this is becoming a cliche, but it is still one of the most common mistakes entrepreneurs make in practice. As described above, an MVP is a vehicle to help the users reach their desired state. Starting directly with prototyping and building that vehicle without knowing the users' current state or their desired state, is like targeting with closed eyes. And this is almost never going to work.</p><p>Before starting to build an MVP, conducting market research is necessary. We need to have a good understanding of the user, their problem, emotions and desires. Where are the users now, and where do they want to be, what is their desired state. It&#8217;s better not to save time when it comes to talking to users and understanding the market. Understanding them better will significantly accelerate the process to achieve a product market fit.</p><p>And importantly, when you talk to users, you don't pitch a solution, you only listen to understand the problem.<strong> </strong>The solution comes after the problem - always.</p><h2>Mistake #2. Building a basic product with no competitive advantage</h2><p>Despite being "minimum", an MVP has to provide value to the user, it needs to delight the user, and even more it needs to differentiate from other similar products. A new product, and a new brand in case of a startup company, is likely competing already with existing products (or even sometimes the status-quo can be the biggest competitor). So, an MVP needs to have something extremely valuable, in order to be able to capture the attention of the user, and make the user choose your product instead of another alternative.</p><p>This is probably the most difficult part when building a product. Finding that single component, that strategic competitive advantage, that would make a new product stand out from the rest and capture the attention of the user. This requires strategic mindset and knowledge of the competitors and the users, and of course frequent validation with the users.</p><h2>Mistake #3. Building a working MVP without any prior validation</h2><p>Because MVP by definition is a "product", entrepreneurs interpret it as a <em>working</em> product, and they start with validation after the working product is ready. They forget that even during the process of building this minimum version of the working product, there should be a lot of validation.</p><p>Validating the idea, validating the marketing message, validating the usability of the product via a prototype are often forgotten. But without these validation steps, the risk is high that we are investing in a product that is not going to be accepted by the user.</p><p>Validation starts from the moment you have the idea. Validation is done during the Discovery phase, validation is done during the Design when you build an MVP concept or a prototype, and it is done after the product is live. It&#8217;s just that the validation techniques you can apply in each stage are different. In the Discovery phase, you rely heavily on interviews or surveys, while once the product is live, you can involve more advanced quantitative techniques, like product analytics or A/B testing.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CNbe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CNbe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 424w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 848w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 1272w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CNbe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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_!CNbe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 424w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 848w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 1272w, https://substackcdn.com/image/fetch/$s_!CNbe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed3eecb7-e4c9-4dff-b60e-e55d3808f266_1000x455.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>Mistake #4. Failing to keep it "Minimum"</strong></h4><p>The meaning of "Minimum" in the term MVP is often well understood, but still applying it in practice is somehow difficult. Minimum viable products often become products with a lot of features that are not necessary in the first iterations. The result is not only spending a lot of time and money on development, but also making a product that is complex and confusing for the user.</p><p>Building a minimum viable product requires a lean mindset. It requires critical evaluation of the value and effort of the features you want to implement, and applying the 80/20 rule - selecting the key features that bring the highest value to the user.</p><h2>Mistake #5. Forgetting the quality of the product</h2><p>Focusing on minimum features only, and forgetting to embed certain level of quality when building the product is a common mistake many entrepreneurs make. But insufficient usability, reliability, or performance efficiency for example, will damage the user experience of the user and will hinder the user to see the real value of the product.</p><p>Even when building an MVP, quality is important. You don't need to invest in the most advanced quality best practices, but you should aim for sufficient quality that is necessary to provide good user experience.</p><h2>Mistake #6. Committing to output-driven roadmaps</h2><p>The term roadmap is often understood as a timeline with milestones, each with concrete features to be delivered. But this way of working now belongs to the traditional product development.</p><p>When we build a minimum viable product, of course we need to select the scope of the product, we should select which user stories should be implemented. But we don't commit to a long-term roadmap with concrete milestones. After the product is live, we should focus on learning from customers and shaping the next iterations of the product based on the customers feedback.</p><p>And importantly, within this process, the focus should not be on the Output, but on the Outcome. So when setting the milestones, it's better to set an outcome-oriented milestone, what value do you want to bring. For example, "in this quarter we want to decrease the delivery time by 25%", is better than "in this quarter we want to build these features".</p><h2>Mistake #7. Aiming to grow before having a "sticky" product</h2><p>In their book <a href="https://leananalyticsbook.com/">Lean Analytics</a>, Alistair Croll and Benjamin Yoskovitz propose that every successful startup company goes through five stages and in this order: Empathy, Stickiness, Virality, Revenue, and Scale.</p><p>The first phase is Empathy, where the focus is to learn your users and their needs. Then you move to Stickiness, the phase when you are building the product. The goal at this stage is to build a product that resonates with the users and is very well accepted. Only after you optimise the product, and you make it "sticky" for the user, you should move to the next stage, where the focus is growth.</p><p>And this is where it often goes wrong in practice. Too often, this order is not respected and the focus is on Virality and increasing user acquisition as much as possible without understanding what the users are going to do with the product.</p><p>When improving your product, focus on one objective at a time. What to focus on depends on your business, but as a general rule, first stickiness, and then growth.</p><h2>The MVP concept still works</h2><p>Even after two decades since the term MVP was introduced, the theory is still the same. The MVP concept still works. And there are great examples of extraordinary products that all started as MVPs, for example, Dropbox, Facebook, Instagram. It is all about finding how this basic MVP concept could best be applied for your specific situation and the product you are building.</p>]]></content:encoded></item><item><title><![CDATA[Does "P" in MVP stand for "Product"? ]]></title><description><![CDATA[Minimum viable product (MVP) is one of the most important concepts in the process of building a software product.]]></description><link>https://www.enlighten.services/p/does-p-in-mvp-stand-for-product</link><guid isPermaLink="false">https://www.enlighten.services/p/does-p-in-mvp-stand-for-product</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Thu, 27 Oct 2022 14:28:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/08cfbc76-bc9d-4705-b881-3d6959d7738e_1000x562.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pTyI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pTyI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pTyI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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_!pTyI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!pTyI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8cb13a3-20a3-4cbc-acf9-9a360658ad69_1000x562.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Minimum viable product (MVP) is one of the most important concepts in the process of building a software product. The concept was introduced by Frank Robinson in 2001. However, even after more than two decades since the term was introduced, and more than a decade that this concept is actively practiced in the tech world, the statistical data is still disappointing. About 90% of the startups end up with a failure.</p><p>While the term Minimum Viable Product resonates quite well intuitively with everyone, there is still a lot of confusion about what this term actually is, and even more how to apply this concept in practice.</p><p>Eric Ries, the author of the bestselling book <a href="http://theleanstartup.com/">,Lean Startup</a>, describes MVP as <em>a </em><a href="http://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html">,</a><em><a href="http://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html">version of a new product that allows a team to collect the maximum amount of validated learning about customers with the least effort</a>.</em></p><p>But is MVP actually a <em>product</em>? This is often a debate. Some people believe that an MVP is only a prototype, it should never be a working product. For others an MVP is the minimal version of a live working product that we can sell to customers.</p><p>Before we talk about the definition, let's first understand the idea behind the MVP concept.</p><p>To build a product, we need to have users of that product. A user should have a need, or a desire, for example a problem to solve or a desire to become better in something. We build a product in order to satisfy this need of the users. A product in simple words is a vehicle that can move the users from the current state to their desired state.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!noqy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!noqy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!noqy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!noqy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!noqy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!noqy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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;: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_!noqy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 424w, https://substackcdn.com/image/fetch/$s_!noqy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 848w, https://substackcdn.com/image/fetch/$s_!noqy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 1272w, https://substackcdn.com/image/fetch/$s_!noqy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ae74fdf-36fe-4c39-bc93-6689d2eecd7f_1000x562.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>But the idea we have for a product relies on a lot of hypotheses. This is why we don't build the complete product in one go. We build it in iterations, as small as possible loops, and within each iteration, we do validation with users. During this process, we validate our hypotheses, starting with the riskiest one. The goal of this approach is failing fast: If the initial idea is not valid, it's better to fail fast before making a big investment. And this is the meaning of the MVP concept - working in small iterations, and frequent validation with users.</p><p>To conduct this validation, we need something tangible, something we can show to the user and get feedback, we need an MVP.</p><p>So is the MVP a working product? Not necessarily. Depending on what we want to validate, we can use different types of MVP. A landing page is an example of a marketing MVP type, where we test the marketing message and the idea we have for a product. A wireframe or a mockup MVP can be used to test the user experience of the product. Wizard of Oz is another type of MVP, it is a working product, but where some of the basic but complex functionality is replaced by manual work in the background. So with Wizard of Oz MVP, we validate only part of the functionality of the product.</p><p>And because implementing the product is an iterative process, in practice we would typically go through multiple stages. An example scenario would be to start with a landing page MVP, then a wireframe MVP, a prototype MVP, maybe move to a Wizard of Oz MVP, and at some point during this journey, we would have the minimum viable version of a live product that we can sell to users. Having a live version of the product does not mean we stop there, instead we should iterate, improve, add more features and gradually increase the value to the users.</p><p>With every iteration during this process, the feedback we get from users allows for changing direction, correcting the course and getting closer to the product market fit.</p><p>Let's now go back to the definition of MVP. The "P" in MVP could refer to a product, but also a prototype, or concept of the product. Sometimes to avoid confusion, the MVP versions that are not working products are referred to as "MVP tests" or even "Minimum viable prototypes", while MVP is reserved for the live working sellable product.</p><p>I would not strongly advocate which terminology is best to use. Choose the one that you best feel comfortable with. But no matter what term you use, don't forget to apply frequent validation, not only after the working product is ready, but during the whole journey, starting from having the idea and onwards.</p><p>Until when do we use the term MVP for a new product, so when is it not "Minimum" anymore? I don''t think there is a clear boundary between MVP and a product. I'd say that's the moment when we feel confident about the product, when it resonates well with the market, and when we have found the product market fit.</p>]]></content:encoded></item><item><title><![CDATA[How to remove waste in software development]]></title><description><![CDATA[In my previous blog post, I indicated that minimising waste in the software development process is one of the key components for successful product growth.]]></description><link>https://www.enlighten.services/p/how-to-remove-waste-in-software-development</link><guid isPermaLink="false">https://www.enlighten.services/p/how-to-remove-waste-in-software-development</guid><dc:creator><![CDATA[Marina]]></dc:creator><pubDate>Mon, 07 Jun 2021 08:19:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6a557a58-73a0-45a1-8404-5c49c19d9384_1000x455.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my <a href="https://www.enlighten.services/post/_is-your-digital-product-ready-to-grow">previous blog post</a><a href="https://marinastojanovski.medium.com/is-your-digital-product-ready-to-grow-e2b2c13f55ad">,</a> I indicated that minimising waste in the software development process is one of the key components for successful product growth. In this post, I explain this in more detail: why is removing waste important in every process, what are the common types of waste in software development, and how to structurally approach the problem of waste removal.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zeoO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zeoO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 424w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 848w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 1272w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zeoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&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_!zeoO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 424w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 848w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 1272w, https://substackcdn.com/image/fetch/$s_!zeoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58281a11-6a2b-426f-b781-67d9392b81c2_1000x455.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2><strong>Wasteful process can lead to enormous losses</strong></h2><p><em>Waste is any expense or effort expended that does not add value to the customer.</em></p><p>Waste is unwanted and unusable, and when not managed well, can lead to enormous losses. In the fashion industry for example, it is estimated that better waste management could save <a href="https://www.globalfashionagenda.com/publications-and-policy/pulse-of-the-industry/">&#8364;4 billion per year up to 2030</a>. Around 35% of waste occurs only during the supply chain before the garment reaches the end consumer.</p><p>I am not aware of such estimates in the domain of software product development. As this domain is a lot more abstract compared to manufacturing, quantifying waste is a far more difficult topic. I believe however that in software development, it is even more likely to have waste, because it is often hidden and not obvious to identify. Organisations who are aware of the importance of eliminating wasteful practices certainly benefit from higher productivity and more satisfied customers.</p><h2><strong>Common types of waste in software development</strong></h2><p>The term waste is closely related to the concept of <em>lean manufacturing</em>, a methodology that focuses on minimising waste and maximising productivity within manufacturing systems. The origins of lean manufacturing are based on the Toyota Production system, developed in the 1950s by Taichi Ohno, a Japanese industrial engineer. Taichi devised the <a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29#Toyota%27s_%28Ohno%27s%29_Seven_Forms_of_Waste">seven wastes</a> in a manufacturing system: <em>Inventory, Overproduction, Extra Processing, Transportation, Waiting, Motion and Defects.</em></p><p>Lean as a philosophy has emerged over the recent decades and became an inspiration for all branches of industries. The idea of removing waste became so popular in the 90s that inspired lean software development as well as Kanban. The seven types of waste in lean manufacturing have been translated to seven types of waste in software development.</p><p>Although this translation captures quite well some common inefficiencies in software development, we should not fully rely on it, because software development is a very different domain from manufacturing. In manufacturing a physical product is built following a defined number of steps, while in software development we built something intangible following a very complex process. In manufacturing building a second product means repeating the same process, while in software development, the source code can simply be reused without the need to reimplement. There are types of wastes in software development that are not typical for manufacturing and vice versa.</p><p>In the table below I have listed the most common inefficiencies I have encountered in many organisations. The first seven of them originate from lean manufacturing, the others are common wastes but specific for software development.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4dBS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4dBS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 424w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 848w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4dBS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Figure 1. Common wastes in the software development process&quot;,&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="" title="Figure 1. Common wastes in the software development process" srcset="https://substackcdn.com/image/fetch/$s_!4dBS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 424w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 848w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!4dBS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b5f029d-87ad-46ef-bf7b-c4dca12eb701_874x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>How to remove waste in software development</strong></h2><p>Sometimes organisations integrate <strong>focused waste reduction</strong> approach. Employees dedicate a special period when they work on waste removal. This can be a useful practice because this is time when there are no other feature development priorities. However, as the time dedicated to reduce waste is usually limited, this period often results in cleaning the issues that are very easy to tackle, e.g. removing unused code, cleaning the backlog. Problems that require more crucial change, like redesigning a system, or adjusting the governance approach would remain unsolved.</p><p>Another practice is <strong>continuous waste reduction</strong>, when part of the product development (10&#8211;15%) is continuously allocated on improvements. The positive side of this approach is that it is a continuous process and it does not block the feature development. In practice however, it can happen that this 10&#8211;15% never get a priority due to pressing deadlines for delivering features. To make it happen, teams should have a good discipline and make sure to regularly include waste reduction issues in their sprint backlog.</p><p>While both approaches are valuable, what I often see missing is that they capture limited scope. In the first approach, the decision of which problem to tackle might be made by an individual, in the second approach, it is typically a team&#8217;s decision. During a retrospective meeting, the development team might identify a critical bottleneck in their work, but if this is not something the team could solve autonomously (e.g ineffective communication with another team or with the product managers), they would leave the problem unsolved.</p><p>And that&#8217;s unfortunate, because it might lead to spending effort on solving small issues while the basis is still wrong. The product development is a complex system and requires a joint effort between different stakeholders and teams. There should be an efficient flow of information in the complete system to make the work of this system optimal. One way to address this challenge is to form a team of diverse roles, who will make decisions about waste reduction in a more strategic and structured way.</p><h2>Identify the wastes in your process</h2><p>A good way to start with waste reduction is to evaluate each phase of the feature development process we follow. We evaluate whether each phase is performed effectively and efficiently and whether it produces high quality as output. The list of common wastes (Figure 1) can be used as a guidance, but we should not limit our thinking to only those types of waste. Each process is unique and might very well contain its own unique hidden wastes.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gWQ9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gWQ9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 424w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 848w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 1272w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gWQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Figure 2. Example of a software development process&quot;,&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="" title="Figure 2. Example of a software development process" srcset="https://substackcdn.com/image/fetch/$s_!gWQ9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 424w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 848w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 1272w, https://substackcdn.com/image/fetch/$s_!gWQ9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cac41cb-a0be-408a-ad16-dc9fc813d6d9_934x742.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>For example, the product development might follow the process shown in the Figure 2.</p><p>When we are evaluating the Development phase, we might for example discover a high percentage of user stories that are in &#8220;In Progress&#8221; state. This is one of the common wastes listed above&#8202;&#8212;&#8202;Partially done work.</p><p>The team should discuss and identify the reason behind this problem. It can be due to frequently shifting business priorities, lack of domain knowledge in the team, or simply inefficient backlog management. Although this issue might be discovered by the software engineers, the waste is caused in the previous phase, during feature requests prioritisation, and should be addressed by the product owners/managers.</p><p>Another example might be a high number of defects discovered in the Acceptance testing phase. This is a sign that there is insufficient testing in the previous stages. By observing the types of defects identified in Acceptance testing, we could discover that there is insufficient unit testing or integration testing. Once the waste is identified, the solution becomes obvious&#8202;&#8212;&#8202;e.g. adjusting the test strategy and increasing the code coverage threshold for unit tests.</p><h2>Prioritise</h2><p>Next step is prioritisation. This is an important step and should not be avoided. The whole process of waste reduction causes effort, so this effort should be spent in the most optimal way to get the best outcome.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LW3l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LW3l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 424w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 848w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 1272w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LW3l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:&quot;Figure 3. Prioritisation matrix&quot;,&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="" title="Figure 3. Prioritisation matrix" srcset="https://substackcdn.com/image/fetch/$s_!LW3l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 424w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 848w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 1272w, https://substackcdn.com/image/fetch/$s_!LW3l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd99026c2-0b7b-4693-9dbd-d4b26fb4b7b8_994x702.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We could use a simple prioritisation technique, as shown in Figure 3, where each waste identified is assigned Impact value and Effort value (the effort required to eliminate the waste). Once we have the wastes plotted in this matrix, we prioritise, by choosing those that are with high value and reasonably low effort. We could for example select the top three types of waste to be solved and integrate them in the backlog.</p><p>Of course, making an accurate quantified estimation is usually unfeasible, but it is also impractical and unnecessary. It&#8217;s sufficient to prioritise wastes based on our best guesses.</p><p>Removing waste is a continuous and gradual process. People have the natural tendency to accommodate easily to wasteful practices, so setting up a continuous process that integrates lean thinking is important.</p><h2><strong>Final thoughts</strong></h2><p>Waste usually happens due to making mistakes or unawareness. But as long as we are learning from these mistakes, this is not really a waste. It becomes a waste if we stay ignorant to these mistakes and we don&#8217;t do anything to make an improvement.</p><p></p><p><em>This post in part of the series &#8220;Successful digital product growth&#8221;. Check bellow the remaining articles:</em></p><p><a href="https://www.enlighten.services/p/_is-your-digital-product-ready-to-grow">#1 Is your digital product ready to grow?</a></p><p><a href="https://www.enlighten.services/p/what-is-an-effective-product-strategy">#2 What is an effective product strategy?</a></p><p><a href="https://www.enlighten.services/p/set-up-a-product-development-team-for-success">$3 Set up a product development team for success</a></p><p><a href="https://www.enlighten.services/p/how-to-remove-waste-in-software-development">#4 How to remove waste in software development</a></p><p><a href="https://www.enlighten.services/p/unlocking-the-architectural-scalability-of-software-products">#5 Unlocking the architectural scalability of software products</a></p>]]></content:encoded></item></channel></rss>