I enjoyed The Clean Coder by Uncle Bob, and would recommend it to any serious developer. I agree with almost everything in it, but there is one jarring exception – I disagree strongly with his view that because it’s your own responsibility to practice, you should not do it on paid time.
Under the headline ”Practice Ethics”, he states: /”Professional programmers practice on their own time. It is not your employer’s job to help you keep your skills sharp for you […] Football fans do not (usually) pay to see players run through tires. Concert-goers do not pay to hear musicians play scales. And employers of programmers don’t have to pay you for your practice time.”/
But the best football clubs do pay players for training time, and the best orchestras pay their musicians to practice. I agree with one thing, and that is that an employer doesn’t have to pay you for practice time, but an employer that does not want to pay for programmer training time does not deserve the best programmers.
I believe, that if you have ambitions of being a great programmer you should find an employer that lets you become great. If you want to be among the best, you should find an employer that understands that hiring and keeping the best programmers means that they will need to spend time honing their skills. This is by no means black and white, but there are not that many great programmers out there, and it’s a sellers market. The first step in taking responsibility for your own career is to make sure that you have an employer that deserves you.
Besides, a common trait of almost all great – or, indeed, professional – programmers I’ve met is that programming is not their only passion; and most of them work enough that doing a significant amount of training outside of work would kill their ability to pursue other interests in a meaningful way. I know that my own quality of work degrades rapidly when the workload is high enough that I have to cut down on other interests, simply because I need real down time to solve hard problems, and anything related to programming is not down time.