I believe a part of this is training not to read the error message text, by years of error message text not worth reading.
I certainly wouldn't go so far as to say that this accounts for all (or even most) of the effect, though.
You're right - I was taught for a long time that the compiler will usually say something like "unexpected ':'" - which is in most cases absolutely useless.
In essence, computer logic and the monkey hind brain don't mix...
I find that those are the same people who tend to write content-free walls of text. No wonder they only read the upper-left-hand corner of e-mails, that's the only part of what they write that's worth reading.
We have an App (of debatable quality) where we made screenshots with big red circles so people know which button to push, as many do not read the button's label.
Sure, I also misread email. Easy enough to say "sorry, my fault" and fix the problem.
EDIT: As this might sound very negative: the whole situation is more like "collective creativity", rather than stupidity. I'm often astonished on how people think and what there reasoning is. Ways of thinking I'd never imagined. And no matter how absurd, there's always some logic reasoning.
On assignments where literally every step was documented, my students would still often not know what to do, because they had missed something small but crucial.
After reading “The Design of Everyday Things”, I’ve come to design things based on the assumption that people don’t read. Even when their sole task is to read, they just don’t.
I write compilers, and producing good error messages is a crucial part. But as it turns out, the best predictor of a programmer’s ability to notice and correct an error is not good error-message text—it’s accurate and precise source locations.