Well, sometimes I get a strong feeling that there is a shortage of good programmers, because I often find myself looking at legacy code, being unable to tell what it does, at least with reasonable certainty.
One of the most important lessons good developers need to learn is: recognizing that existing code is hard to understand does not make you a poor developer. Quite on the contrary.
Snippets from a great article Why Developers Should Not Code
Now that I currently read On Writing Well the quotes above make more sense. Coding is a subset of writing. Humans write and read code so priority should be simplicity and readability.