Yeah you're right, nobody ever said to me "use interfaces because the code it's faster".
On the other hand, when I studied dynamic dispatch and stuff like that, I don't think enough people told me "when you do that, you are making this tradeoff".
I feel like it's worth sharing this kind of knowledge in order to make better informed decisions (possibly based on numbers). There's no need to become an extremist in either direction.
The trade off has changed over time as memory access has become a bigger and bigger bottleneck. But caring about this is still "premature optimisation".
The claim of 20x program performance difference is overblown. Compilers can often remove virtual function calls, JITs can also do it at runtime. Virtual function calls in a tight loop are slow but most of your program isn't in a tight loop and few programs have compute as a bottleneck.
Measure your program, find the tight loops in your program and optimise that small part of your program.
I had a computer game similar to this one like 15 years ago!
I can't remember the name but I think it came as a CD with some encyclopedia for kids or something like this.
You unlocked a memory of me solving the puzzle of a picture of a shark :D
I read your post and: wow that's EXACTLY my situation!
It's also a lot disappointing to me that I can have a very basic CI on my github side projects done in half an hour at most, while a company with some great devs in it can't.
I'm not talking about "use this new technology/framework here, blabla".
I'm talking about me having to fix regression bugs because no one didn't (or couldn't) write small unit tests on the critical parts of our infrastructure.
As you also said, everyone I spoke to, including CEO, agreed that we are less productive due to this and a company culture shift is needed. 6 months in I still have to see any change.
Plus: I'm not in a small startup that needs to ship something fast. I'm in a smallish company with almost 20 years of experience. They did somehow fine until now, but they're struggling to scale up.
On the other hand, when I studied dynamic dispatch and stuff like that, I don't think enough people told me "when you do that, you are making this tradeoff".
I feel like it's worth sharing this kind of knowledge in order to make better informed decisions (possibly based on numbers). There's no need to become an extremist in either direction.