While constricting the hardware might nudge things slightly in the right direction, which may happen soon-ing hopefully, I believe that the issue of modern software is curtural.
When I was in a learning phase of my life growing up, I saw "how to make X in as fewest lines of code", "how to integrate library Y so that you don't have to do very complicated thing Z yourself", "hardware is cheaper that engineer" and similar narratives everywhere.
Profs at uni were lecturing about some algorithms, but never gave assingments to do a robust/fast/lean implementation - only very basic one and most emphasis was on using std libraries instead.
Everything was about how to program less, how to think about your solution less - just implicitly assume that someone else's implementation is good enough.
Even considering implementing some data structure/algo from scratch was shamed and nearly laughed at.
The hardware advances certainly did help to accelerate that, but I think that this is more of a death by a thousands of cuts of the culture of engineering by people that don't practice engineering being in a position to influence it.
I believe one reason for the bloat in modern applications is that we build them on powerful computers, which hide coding inefficiencies.
Unfortunately, IDEs and development tools also demand top-tier machines because they consume significant resources.
Although the comparison may not be entirely fair, I often think about the simple chat function of ICQ from two decades ago versus Microsoft Teams today.
Teams offers far more features and built-in security, but ICQ still outshines it in basic chat performance and responsiveness.
I remember running ICQ on an Intel 90 MHz single-core machine with 64 MB of RAM on Windows 95. It launched instantly and the chat functionality worked seamlessly. In contrast, Teams can take several seconds, sometimes even minutes, to start up and often freezes on my 64 GB, Intel 3.0 GHz, 16-core machine.
I suspect many people feel the same frustration with modern software. So where did things go off track?
ICQ was developed in 1996 under very tight constraints, which forced the developers to build an extremely efficient program. Any memory leak would have been immediately noticeable., the program simply wouldn’t run properly, forcing a fix. High CPU usage would cause the system to freeze, pushing developers to optimize or find creative ways to work within those limits.
I often wonder how efficient modern applications could be if they were developed under similar constraints. Such limitations would push us to prioritize coding efficiency. Memory leaks or excessive CPU usage, issues that might otherwise go unnoticed on powerful machines,,would surface during development.
I’m not opposed to high-end machines. But I do think developers could benefit from occasionally working in constrained environments. While increasing resource requirements may sometimes be necessary to unlock software’s full potential, I’m not convinced we truly understand where that threshold lies.
Not to mention, it becomes difficult to stay productive on a standard computer with modern IDEs.