<story><title>Three Laws of Software Complexity</title><url>https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html</url></story><parent_chain><item><author>pif</author><text>I agree with you. Too many of us developers tend to forget that the customer only looks at the features. Clean code, unit tests, rigorous processes... they are only as valuable as the rate of features they make possible.&lt;p&gt;Complexity and technical debt are our problem, and the customer could not care less about how we solve it, or even whether we solve it. As long as we are struggling with an old piece of sh*t, that&amp;#x27;s good for us: it means the product is selling and the effort to maintain it still makes sense!&lt;p&gt;Selling without complexity and technical debt would be much better, I think we all agree on this, but it&amp;#x27;s a receipt whose success I have never personally witnessed.</text></item><item><author>AllegedAlec</author><text>&amp;gt; In my career, I have taken a particular approach based on building new systems from scratch (before they succumb to the three laws), but this is a lot harder than it sounds&lt;p&gt;This seems like an infeasible solution in most if not all real world cases I&amp;#x27;ve seen. Especially if you have a system with 15 years of legacy and some thousands of man-years of effort put into them.&lt;p&gt;Now, the obvious &amp;quot;don&amp;#x27;t let it get to that point&amp;quot; is a smug IT nerd answer I often see regarding this, but this seems like the kind of green-field startup thinking that doesn&amp;#x27;t apply to 90+% of software development. We have an existing system. This needs to be maintained and extended because it&amp;#x27;s our core business. We cannot just say &amp;quot;oh it&amp;#x27;s become too complex. Let&amp;#x27;s go and spend the next few years creating a new product, so we&amp;#x27;ll have a multi-year feature freeze&amp;quot;.&lt;p&gt;The &lt;i&gt;only&lt;/i&gt; feasible way I see to do anything even close to this is to split up the software into domain-like silos slowly and incrementally. At that point you can start &lt;i&gt;considering&lt;/i&gt; rewriting silos as they become too complex&amp;#x2F;cumbersome&amp;#x2F;big. However, at that point you&amp;#x27;re already doing complex, lengthy and generally risky refactoring, and speaking of it being a write from scratch is very obviously not true.</text></item></parent_chain><comment><author>makingstuffs</author><text>While it is hard to generalise to an absolute I do largely agree with this sentiment.&lt;p&gt;The amount of times I have advised clients to not use something like Wordpress to just end up having to use a page builder like Divi hurts my soul.&lt;p&gt;At the end of the day the majority don’t care about things like carrying bloat&amp;#x2F;legacy code, rigorous testing patterns, using modern tech stacks or typesafe codebases. They simply want you to “make thing go brr”.&lt;p&gt;I can advise until I am blue in the face but the reality is that at least 90% of all my clients want the quickest and cheapest option, resulting in me barely even scratching the surface of my technical abilities.&lt;p&gt;I guess the main thing from a business perspective is that I’m getting paid but, at the same time, ouch, my feels.</text></comment>
<story><title>Three Laws of Software Complexity</title><url>https://maheshba.bitbucket.io/blog/2024/05/08/2024-ThreeLaws.html</url></story><parent_chain><item><author>pif</author><text>I agree with you. Too many of us developers tend to forget that the customer only looks at the features. Clean code, unit tests, rigorous processes... they are only as valuable as the rate of features they make possible.&lt;p&gt;Complexity and technical debt are our problem, and the customer could not care less about how we solve it, or even whether we solve it. As long as we are struggling with an old piece of sh*t, that&amp;#x27;s good for us: it means the product is selling and the effort to maintain it still makes sense!&lt;p&gt;Selling without complexity and technical debt would be much better, I think we all agree on this, but it&amp;#x27;s a receipt whose success I have never personally witnessed.</text></item><item><author>AllegedAlec</author><text>&amp;gt; In my career, I have taken a particular approach based on building new systems from scratch (before they succumb to the three laws), but this is a lot harder than it sounds&lt;p&gt;This seems like an infeasible solution in most if not all real world cases I&amp;#x27;ve seen. Especially if you have a system with 15 years of legacy and some thousands of man-years of effort put into them.&lt;p&gt;Now, the obvious &amp;quot;don&amp;#x27;t let it get to that point&amp;quot; is a smug IT nerd answer I often see regarding this, but this seems like the kind of green-field startup thinking that doesn&amp;#x27;t apply to 90+% of software development. We have an existing system. This needs to be maintained and extended because it&amp;#x27;s our core business. We cannot just say &amp;quot;oh it&amp;#x27;s become too complex. Let&amp;#x27;s go and spend the next few years creating a new product, so we&amp;#x27;ll have a multi-year feature freeze&amp;quot;.&lt;p&gt;The &lt;i&gt;only&lt;/i&gt; feasible way I see to do anything even close to this is to split up the software into domain-like silos slowly and incrementally. At that point you can start &lt;i&gt;considering&lt;/i&gt; rewriting silos as they become too complex&amp;#x2F;cumbersome&amp;#x2F;big. However, at that point you&amp;#x27;re already doing complex, lengthy and generally risky refactoring, and speaking of it being a write from scratch is very obviously not true.</text></item></parent_chain><comment><author>pydry</author><text>What gets forgotten is the thing you can&amp;#x27;t see.&lt;p&gt;Persistent refactoring is one of those things where the cost is clear and well known (expensive developer time) while the payoff is &lt;i&gt;big&lt;/i&gt;, but very diffuse, very hard to explain and often gets attributed to something else - sometimes even by the developers who did it.&lt;p&gt;It&amp;#x27;s not the only thing like that. Plenty of companies skimp on cost centers and fail spectacularly as a result - sometimes without even ever realizing that skimping on the relevant cost centres &lt;i&gt;was&lt;/i&gt; the reason why they failed.</text></comment>