why is it so hard to avoid premature optimizations?
I am amused each time I learn about a completely unnecessary "optimization" that has quietly snuck into one of my programs. These changes happen automatically while programs are being composed, often before they have been run, and almost always independent of profiling. They make programs longer, more difficult to read and sometimes even slower. So why do I write such programs? It is because I, like most programmers, am shockingly bad at intuiting the location of real bottlenecks.
more on justinappears.com
On common phenomena among most programmers. If premature optimization is the root of all evil, then lack of profiling is usually at the root of premature optimization.