The theme of continuous learning is one that many people talk about – so much that it has become a bit of a cliche`. Not because people mention it all the time, but because often, people are just paying lip-service to that notion of continuous learning — they know it’s a good thing – an aspirational goal if you may – but they don’t follow through because it’s one of those things that are ideal for procrastination, because neither the need, nor the benefit, are immediate or pressing:
- The need is not pressing, because you are learning something new for the sake of growing your skill and expertise, not something that is inherent in completing some task, so it’s not blocking you from achieving any short-term goals.
- The benefit is not immediate because of the same reason – you’re learning something that is (most likely) not directly tied to a specific work item you’re currently working on. So while you may be able to use it soon, you probably won’t get immediate gratification. Instead, you’ll reap the benefit in some undetermined time in the future.
When faced with such a decision – put some time into learning something new that may benefit us in the future, or making progress on current work – it’s kind of obvious what usually wins. It’s just much easier to make the choice that gives us the short-term benefit at what feels like little- or no-cost.
My goal today is to remind you and me both, that the easy choice in this case is also the wrong one, and convince ourselves – and I mean ***really*** convince – that this is a crucial decision, and failure to do the right thing here has major impact on our career.
I’m learning on-the-job
Are you? Really?
My concern about learning on-the-job is that it revolves around the idea that our day-to-day job will present us with wonderful opportunities to learn fundamentally new things on a regular basis. In my experience, this does happen, but only in specific circumstances that are relatively rare:
- Your first years – when you start out as a programmer – regardless if you’re a CS major, a self-taught programmer, or a boot-camp graduate – you usually have so much ground to cover, that many non-trivial tasks you work on would present you with real learning opportunities. Essentially, since you’re still building your basic skills, just practicing the craft is a major learning activity.
- But you only get to go through that once.
- Even during this time, how much you actively pursue learning activities, can greatly affect how much you can get out of this.
- If you put an emphasis on learning, you’re more likely to take on tasks that will teach you new things, more likely to do then in a way that will teach you new things, and more likely to seek all the ways you can learn from it (feedback from others, going through related books/articles/courses, etc.).
- A new workplace – when you start working in a new place, that usually includes learning some new programming language(s)/build and integration tools/problem domains/system architecture/… . Coupled with the fact that the first 90 days are usually more lax in terms of what is expected of you, this usually provides a good opportunity to learn some big new things.
- For most of us, this only happens once every 3 or more years, so that’s leaves a lot to be desired.
- Major new projects or shifts in tooling or product architecture in your current workplace
- Similar to some of the opportunities you get when moving to a new place, but in a smaller scope.
- These kinds of changes are (hopefully) not a common thing in you workplace, since too many major changes on a regular basis would make it very hard to be efficient in your day-to-day work.
Don’t get me wrong – it’s not that I think you’re not learning on a daily basis from doing your work – writing code, fixing bugs, reviewing others’ code, getting comments in code reviews, designing solutions for your product etc. are all activities that help you hone your skills. It’s just that they tend to be mostly tactical – meaning, they help you sharpen specific skills or knowledge you already possess, rather than teach you something completely new. As a result, these can contribute to minor improvements in the efficiency and quality of your work, but will most likely not cause you to do things in a substantially different way.
Even when some project requires you to learn a new technology or tool, since the top priority is delivering some work item, you would usually learn just enough to be able to do your job reasonably well, rather than diving head on and becoming an expert.
But hey, I may be wrong… maybe your experience is different, and you learn a lot on-the-job on a regular basis. It’s easy to figure that out, just ask yourself a few simple questions:
- What did you learn on-the-job in the last month? In the last 6 months? The last year?
- For each of those, how many do you feel you know well enough to consider yourself an expert on (or you think you will become an expert on in the near future)?
But I read blogs/HackerNews/Twitter/…
But not enough!
Reading blogs/HN/StackOverflow/etc., following links from tech figures on Twitter, reading your LinkedIn feed – these are all great and are part of what you should be doing on a regular basis. Yet they all tend to be rather “shallow”, since there’s only so much you can go into with just a few pages of text (much less 140 chars). So while these are great tools for getting to know what you don’t know, you are not very likely to become an expert on X just by reading a lot of SO questions or long HN threads about it. Following “tech news” and “tech social media” can play a very big supporting role, but the main learning requires focus and deliberate investment of time and energy towards learning something.
I have a personal life, you know
I’m very glad to hear that. You should! And you shouldn’t assume that learning should be done in your spare time (though you can learn in your spare time as well if you want to).
Your employer should be able to support you investing a couple of hours a week towards things that are not creating immediate value. They will benefit with a lot of value in the long term – after all, it’s not like you’re putting in the time towards learning how to play the bag-pipes – this is work related. If 3 hours a week seems problematic, go for bi-weekly. Anything less frequent than that, and it becomes ineffective.
If you’re reading this and you’re a manager, and you don’t allow you team to spend any time during their work day towards learning, you’re doing it wrong. You’re losing out on the opportunity of having a team that is much more satisfied with their work and is more capable (because it’s continuously learning). You should not only allow it, you should actively encourage them to do so: Ask them what they learned in the past 3-4 weeks, and make sure they have good answers; arrange day-time hackathons; make sure they have access to online courses (Lynda/PluralSight/etc.) and recommend some specific ones if needed. And if you think you can’t spare 3 hours a week per person, I urge you to read Are you too busy to improve? by @hakanforss.
With a strong foundation of learning and growing, “on-the-job learning” can take on a much more important role – this is where you can find opportunities to put that newfound knowledge of yours to good use and practice it. Because no matter how much you read about something, go through tutorials, exercises, and pet projects, there’s nothing like applying what you learn to real world problems to help solidify it with that important extra dimension of applied (vs. theoretical) knowledge. Just remember there’s a fine balance here – you don’t want to make every task into an experimental project.
Stop reading this post and go learn something instead.
Last piece of advice
It makes it much easier to stick to your learning schedule if you have clear goals of what you want to learn and why. I also find it helpful to have check-points that would highlight any failure on my part keep up with my intentions. Both of these are easily addressed:
- Figure an ordered list of things you want to learn, pick the first one, and commit to learning the basics in the next 3 weeks.
- Set a recurring reminder in your calendar for every 4 weeks, to take 10 minutes to jot-down what new things you learned in the past 1-2 months. If you don’t have good answers to that question, you’ve probably been skipping class