in reply to Discipline
This worked well for me as a chessplayer (formerly a top-ranked junior) and seems to now as a programmer (I graduated college with a 4.45 GPA :). In chess, I would often work much harder than those around me. I usually didn't go out much the week before a tournament (or two weeks sometimes), spent about 2 hours a day studying and playing games. I once spent 6 months reading a single chess book ("How to Reassess Your Chess", by Silman), but it was an excellent learning experience. I ended up quitting playing competitively though when I realized that the committment it would take to get where I wanted far exceeded my desire to get there, kinda like rchiav says.
I do the same for programming, but tend not to read books twice through as often anymore. I did spend about 1.5 months on reading Learning Perl though, carefully going through almost all the exercises, and here again, patience and desire paid off: I picked up a lot from it.
Now, in my day job, which pays me to write Powerbuilder (eeeek), I still keep the same work ethic/discipline. My supervisor and I are pretty much the only programmers in the place that actually *gasp* read programming books outside of work. Scary to think that some of the programmers (okay, one I think) I work with don't even KNOW what FTP stands for, and think that XML is a file transfer protocol.
Perhaps they should be disciplined. =]
(If any of my coworkers happen to read this, I'm kidding :)