| The average developer doesn't put the same care into what they're developing the way they had to in the past. Computers were slow in the 80s/90s, so if you wanted your program to run fast, you had to know how cache and RAM worked, and utilise what little power was there to the max. As computers have gotten faster, that knowledge has gotten less relevant to the average developer. There are some fields where that knowledge is useful, like embedded systems, HPC or games, but they are a minority. I won't deny there are some benefits in not needing to care - you can write programs faster (even if they perform slower), and some classes of bugs can be reduced (e.g. memory bugs). These are good things, but fundamentally our programs still move memory around and interface with the real world. As more people forget (or aren't taught) to keep this in mind, we'll lose the ability to make things fast when we need to, and our software will get slower and slower until it's unusable. On a related note, we're also not allergic to complexity the way we should be. The average developer doesn't have a problem using hundreds of libraries in a single project if it makes their job easier. Unfortunately this also makes programs slower, harder to debug, and increases the surface area for a vulnerability. |
Very well put. I think the majority of why performance isn't a goal anymore can be attributed to this. So much software today is written like it's running on a supercomputer (and in comparison to computers even just 10 years ago, it is). Libraries have become crutches rather than tools.