But its our job as developers to challenge the managers when the expectations are unrealistic. They are very receptive when you put it in terms they understand.
I've also seen plenty of developers jumping head first into code with a very shallow understanding of the requirements or the tech stack they're working with.
For a large fraction of developers I worked with at previous jobs, the mention of "optimization" meant arcane low-level micro optimizations using techniques the compiler can mostly automate nowadays. Very, very few of them knew what cache lines or branch predictions are. I've seen entire game engines with shipped games on all prev and current generation consoles built that way. Then they wonder why a PS3 has trouble running a simple 2D game with 20 sprites on screen.