Are you someone who is highly motivated, always keen to learn new skills, but not feeling particularly accomplished on a day-to-day basis or, even worse, consistently anxious about missing some buzz words from Hacker News?
Read on. You seriously need changes.
I felt exactly the same way and I came to realize these characteristics actually characterize, what I’d like to call, the Learner’s Symptom.
There are literally thousands of things to master in software development.
And it takes 10,000 hours of “deliberate practice” to master any one of them. Well, that might be a little exaggerated, but you get the idea.
As a learner, or, better, lifelong learner as you like to call yourself, you enjoy learning new knowledge and you always hop onto the new things. You read Hacker News everyday and subscribe to Twitter List of programming thought leaders. Your New Year’s resolution probably is to learn X languages or frameworks. You spend most of your spare time working through tutorials or watching online lessons.
And, that’s all good. It demonstrates your passion and persistence. I admire that.
But, that’s not the most effective way of learning. Because, you are most likely learning for the sake of learning. Learning things this way, you are probably just scratching surfaces here and there. Moreover, you are consistently at the risk of burning out. Your biggest accomplishments could only be having learnt X languages/frameworks.
Unfortunately, you might have the Learner’s Symptom.
Why have I got the Learner’s Symptom, you might ask? I think it is because 1) you are self-motivated to get better, but 2) you lack a clear end goal.
The logic goes like this: you are very motivated so that you are constantly learning new things that you think could be helpful to your success. But, because you don’t have a clear goal or definition of “succuess”, it is unlikely you would have a clear path to it. That means, you don’t actually know which skills or knowledge are helpful. Well, what would you do as a self-motivated person? You set out to learn them all! That is, you learn for the sake of learning.
To not learn for the sake of learning, I would suggest you to adopt goal-oriented learning. That means, you should always set clear median-term goals, which should be specific, measurable and attainable. “Be an awesome developer” could be a long-term vision, but that might not be much helpful to define a clear path to get there. Instead, you should break that vision down to clear goals, such as “learn full-stack skills by building a blog app with the MEAN stack” and “deploy an web app to AWS and scale it to 10X traffic”.
More practically, I find it is very useful to append a goal with a comprehensive project. I am not talking about those toy projects bundled with tutorials (don’t get me wrong, toy projects are great to learn specific techniques), but a full-fledged one. A serious project would likely to expose you to a lot more challenges. Many of them are beyond the scope of a specific technology, but are essential to your overall capability as a developer. As a bonus point, it is just a rewarding experience to actually ship something to the Wild West World (www), a.k.a. the internet.
Speaking from personal experience, by embracing goal-oriented learning, I started to work on projects with more purpose. I find myself becoming more effective because I need to prioritize my time to best achieve my goal. That often means actually ship a project, instead of spending time purposelessly going through online tutorials.
Learning is good. In fact, I am all for lifelong learning, but I would urge you to learn with a specific goal in mind. Never learn for the sake of learning. You should master the skill of learning and always use it to serve as means to reach your goal. At the end of the day, learning is not your goal; it merely is a tool to get you there.
I would really appreciate your thoughts/comments here. Feel free to leave them following this post or tweet me @_LeiG.