There is a site I commonly read called Worse Than Failure (WTF – they redefined what WTF meant to them a while back to make the site more palatable to people – perhaps when they started taking ads). The site publishes programming horror stories and frequently has very funny stories to brighten the day. A recent article departed from the norm and was more serious in nature. In it the author made the comment that
Learn Off The Job. Self-improvement is a tenet of every profession, but the place to do that is “off the job,” i.e. not while developing information systems. Instead, learn by creating applications for yourself, your team, or perhaps even some open source project.
I disagree with that statement. Our world is filled with professionals that get paid to maintain and enhance their skills. Doctors, educators, and accountants are expected to take classes and attend seminars to maintain their certifications. Compensation is often tied to increasing their knowledge. The same goes for many factory workers. They are sent to classes to certify them in safety, new equipment, and many other things. Why would software development and software developers be any different. Now the author is a single voice and represents just one viewpoint, but I do see this sentiment echoed in the behavior of other organizations though (just not spelled out as clearly).
There needs to be a balance in all things. A software developers main job is not to just learn new technology, but as part of their job they need to be constantly learning and growing. They should be paid for that time and have their company pay for the training. Many developers program as a hobby as well and will undoubtedly learn valuable things through their personal activities that can be applied at work. It is not appropriate though for companies to depend on people using their personal time to advance their skills.