There's another aspect to this though. Programmers have to be smart and get things done. In my experience of interviewing and hiring these qualities can entirely orthogonal. I've hired people who program enthusiastically on side projects and study advanced topics at the weekend but are pain in the workplace; overcomplicating tasks and working slowly while others deliver faster and with better quality. At the same time I've worked with people who express no interest in any realm of computing outside their direct area of expertise. They work hard from 9-5 being extremely productive and I know that they don't think about so much as a bit or a byte until they come into work the next day.