I’ve been programming, in some capacity or another, since I was eight years old. I don’t remember if it was Christmas or during the summer that my parents bought the Tandy computer but I do recall sitting in front of that thing for hours, learning how to program simple, text-based games in BASIC. The manuals that came with the computer, especially the one on BASIC, was dog-eared and worn.
I am a self-taught programmer (or web developer or software engineer or any other names for someone that writes code for a living). I have never taken a course in CompSci, which may be to my detriment. Everything I have learned has either come from books, videos, hard-won lessons on the job, and some very excellent mentors. Before becoming a programmer, I was a graphic designer, which meant that I spent a lot of my personal time learning how to slice up PSDs and code into HTML and CSS. I mean, a lot of time. An unhealthy amount of time.
That drive to learn and become a programmer now provides me with a rewarding career, daily challenges, and interesting problems to solve. I still program outside of my day job, and there are days when I’ve spent 12 hours in front of a screen. Is this healthy? Probably not. But I don’t do it because of the need to keep up with the latest framework or that my job is in jeopardy if I don’t. I do it because I have an itch that I want to scratch. And I balance these days off with weekends without ever turning on my computer.
I am continuously learning outside of work. I try new frameworks, libraries, languages, techniques, build processes…pretty much anything that strikes my fancy. I don’t mind spending additional time beyond my 9 to 5 job increasing my knowledge and skill set. However, I say that as a single lady without children where my time is my time. I don’t have the burden of a family (or the joy, one might say) or the responsibilities of being a good mother. It’s very easy for me to take the time to deep dive a new language when I have a bunch of free time compared to the mothers and fathers I have worked with throughout my career.
It’s hard to say whether or not a programmer should learn outside of work. In my experience, every mentor I’ve had in my programming career has coded outside of work, even with familial responsibilities. The difference with people who code outside of work and those who don’t are priorities; one isn’t better or right and the other worse or wrong. My priority has been, and will probably always be, my career. I love what I do so, by extension, don’t mind spending more than my work time doing more of it.
Employers should make time for active learning on the job. They should provide opportunities to attend conferences, have a monthly subscription to something like PluralSight, and a stipend for books. Employers need to invest in their employees and make sure they have the time to increase their skill set. Doing so improves the health of the company and the moral of the employees. No one wants the same thing day in and day out.
However, if you, as a programmer, want to move on to something new, you’ve got to learn outside of work. If you’re working as a Js Dev and want to get into machine learning or big data, you’re probably not going to learn on the job. You’ve got to spend your own time—not the employer’s dime—on learning that skill set (unless, of course, your company is moving in that direction).
I don’t fault people for not learning outside of work. I probably spend so much time in front of the computer outside of work because I still don’t feel like I’m smart enough or good enough to be called a programmer. Whether you spend time outside of work learning isn’t indicative of being a good programmer. It’s just an indicator of where one’s priorities lie.
Granted, I bet if we stopped looking at Facebook and Twitter and YouTube during working hours, we’d find plenty of time to learn on the job, right?!