Programmer Competency Matrix
This is a pretty good matrix to asses where you stand. If you are going to be an expert programmer, a good chunk of level three understanding is necessary.
I particularly liked error handling: "Only Codes the Happy Cases." I have not so fond memories of a large system that coded only the happy cases and swollowed the exceptions without reporting them.