Software Bloat

19/10/2025 << back to Debugging Myself

The Paradox of Inefficiency in the Age of Abundance

One of the businesses that has thrived the most in the last decade has been that of dietary supplements. It is no longer surprising to see stores dedicated to selling a single product—huge tubs of powder for shakes—window displays filled with these containers, all stacked with catchy names evoking energy, growth, potency... Their audience, primarily male, seeks muscular hypertrophy, their identity is being as inflated as possible to simply appear successful. Like a peacock's tail: being inflated is the benchmark of success.

Looking back, it is striking to see the build of the "little guys" who built our world less than a century ago. The contrast is overwhelming, as their identity consisted of providing the greatest possible benefit with the least expenditure of energy and resources. Software has changed in the same way: from small, effective programs built to optimize resource use and perform their function as well as possible, we have moved to modern applications that seek rapid market positioning by stacking one feature upon another.

The abundance of resources leads to waste and inefficiency.


The Evidence of the Collapse

We've normalized software catastrophes to the point where a Calculator leaking 32GB of RAM barely makes the news. This isn't about AI. The quality crisis started years before ChatGPT existed. AI just weaponized existing incompetence.

Tech Trenches

Beyond the mere subjective perception when web or smartphone applications, though seemingly simple, frequently block our devices with their insatiable thirst for resources, the circulating evidence shows that the software industry has degraded. The cause is not AI; it is the culture of abundance.

The Culture of "Add More"

Over the last decade, programmers with minimal (or zero) computer science knowledge and little (or again, zero) development experience have been incorporated. The abundance of resources (powerful hardware and abstract frameworks) creates the illusion of being able to develop applications without needing to know the functioning that lies under the hood. Thus, long before AI tools, agents, or vibe coding were part of our vocabulary, software quality had already begun to degrade.

This is by no means the fault of the most welcome new programmers, but rather the lack of emphasis their employers have placed on them learning and incorporating the knowledge and practices that allow for quality software. Instead, a race to produce quickly and add features has rewarded the careless, because the hardware has plenty of resources to sustain it...

At a large medical systems company, experienced developers were ordered not to use most "Gang of Four" design patterns because they were too complicated for some of the novice developers to comprehend. Instead nested conditionals and structural programming techniques were used, causing the software to grow beyond five million lines of code.

— Managing Software Debt: Building for Inevitable Change, by Chris Sterling

Until it no longer does.

The truth is that bloated software consumes more energy, its environmental impact is greater, while the user experience degrades: applications crash, the battery doesn't last... and an enormous dependence on cloud services has been created for functionalities that could perfectly run locally. This model is doomed to fail, to collapse under its own weight.

Returning to Efficiency and Balance

Lately, I have returned to understanding exercise and physical care as a search for efficiency and balance. I try to have a functional, healthy body, without the need to devour vast amounts of protein or throw away money on supplements, without hours of lifting weights at the gym to achieve hypertrophy for a merely aesthetic purpose. In the same way, I look back with nostalgia at those programs that ran locally and did their job well with the minimum amount of resources. I firmly believe that this is the path we must return to.

It is not about disowning progress, but about applying new tools and advancements with the values of the past.

exit(0);

<< back to Debugging Myself