Having read the other responses (with which I agree), I feel the need to add a different reason, which is partly professional, and partly pure ego.
I wrote software professionally. I'm good at it. I've got a natural ability to understand problems and write code. I also enjoy it. I get paid reasonably, but not outstandingly.
And I'm always amazed and horrified to find out how little other professional programmers know (present company exluded). Frequently these are people getting paid more than me for their knowledge. You name it, there'll be somebody out there who just makes you throw your hands up and go "what? we gave them a job?" The don't use strict; because when the do, the program doesn't run. And they don't want to take the time to learn (see also Management that just doesn't understand). They won't stop using symbolic references because "it works for them", and get upset when you try to explain why it's wrong. They write their own CGI parser, and attack XML with regular expressions. They won't read technical documentation ("the man pages are too hard."), instead relying on folklore.
If you try to point out better ways of doing things, they point out their wonderful education, and they fact that they got such and such a degree from somewhere.
But what do they get from such a degree? From studying such a course? Not the ability to think, reason or understand. They simply create more work for the rest of us, either clearing up the mess they leave behind, convincing management that there is a better way, or simply recovering from a tarnished reputation.
Simply handing an anonymous monk the answers on a plate only undermines our worth. If they make an effort (either abandoning their anonymity, or demonstrating some willingness to extert themselves), then they should earn a commensurate reward. But such blatant attempts to avoid any involvement in their own learning processes should simply be turned away at the door.
With my apologies for the rant: I'm working with somebody very like this at the moment...