I feel like too much of the conversation around software has shifted to "Don't overengineer" and "Pre-optimization is the root of all evil" that it needs to be stressed now that design still matters, performance still matters

Under-engineered systems that have a dozen ways to do one thing suck and take forever to generalize

Code not designed for performance often has to be completely rewritten to be optimized

@thomas_griebel They are both reactions to things we all have seen in the past: people creating unreadable very optimized code that is very hard to change (I think I haven't seen much of this in the last two decades) or creating increadibly complicated software architectures that are much slower and more bloated than necessary (I think this peaked in the Java/OOP golden era). The problem is that both parties have the tendencies to always assume that if you care about the other stuff you are going to necessarily recreate those monsters of the past. IMHO right now I mostly saw software that does neither well.

@antopatriarca For sure, software design is hard. Good design really requires refactoring too and we tend to leave problems as done. Business factors are always always at play.

You are very right about the allergenic reaction devs have to over/under engineering. It's easy to stereotype people as architecture astronauts or hackers.