I wish people would make more of a distinction between software engineering and software architecture/whatever is currently fashionable. The former is about customers and the latter about the people who write software, and as a customer I feel like almost no software has any concern for me or my hardware. Huge sizes (both in RAM and disk), constant CPU usage and all of this for no reason other than it's convenient or pleasing for software developers.
How do we build tools that are pleasing for software developers to use, while using resources efficiently and meeting the requirements? Can we start having that discussion instead of docker, microservices, kubernetes, etc?
On the other hand, sometimes a customer could not care less about CPU usage, memory, and in some cases paying twice as much for cloud services can still be a negligible amount for the business, yet the software developers obsess over efficient code wasting weeks on improving a metric nobody cares about.
I don't want to disregard your complaints, they are all valid, but one has to weigh the pros and cons, and in some cases, efficient algorithms are not the most important thing for the business.
Yes! I want tools that do that optimization for us! Better compilers/languages, but with more opportunities for optimizations. Even if it takes a long time to compile I think for most software this would make a lot of sense as it is used much longer than a couple days/weeks.
> software engineering and software architecture/whatever is currently fashionable. The former is about customers and the latter about the people who write software
Huh, that naming seems backwards compared to the construction of physical buildings. Architects work on the design of the building (what is going to be built) and interface with customers. Civil engineers work on implementing the architect's design, figuring out how it is going be to built. They work with both the architect (upwards) and the construction people (downwards), but not with the customer.
How do we build tools that are pleasing for software developers to use, while using resources efficiently and meeting the requirements? Can we start having that discussion instead of docker, microservices, kubernetes, etc?