JavaScript’s my craft.
Despite my young career, no other skill rivals the hours I’ve put into this language and its ecosystem.
One question continues to pop up, however. A question that can hinder anyone’s personal development…
How Do I Learn X?
I thought this question only haunted me, but experience proved otherwise. This question agitates anyone learning new stuff. I’ve met smart cookies who ask,
- “What should I learn?”
- “How can I learn it?”
Apply those two questions to any skill — programming, basketball, cooking, dancing, archery, Chinese, Chess, Checkers. Your end result is a confused newbie who’ll start, but never finish.
Until recently I’d reply “Uhh, idk lolbro…just dew it.” But my perspective shifted after some reflecting and research.
We’re not lost because we’re dumb, nor do we procrastinate because we’re lazy.
We’re Overwhelmed
By asking “How do I learn X?”, you’ve just volunteered to drown in a sea of knowledge dug by countless people over many years.
Don’t “learn” X,” but rather understand what it’s composed of and tackle one piece at a time. If you say “I want to learn programming!”, I ❤️ your enthusiasm, but you’ve already started down a slippery slope.
Like any large topic, _programming’s too general — _and trying to “learn” it shows a lack of focus that eventually blocks most people from taking action. In my opinion, that’s partly why programming’s a highly paid profession: most people get lost in the maze and give up.
Vague goals = abandoned goals.
So here’s what I think you should do instead.
Define “X”
What are you trying to learn? How’s it used in the real world? Do your research and answer these questions to gain a better understanding of the big picture.
Slice it thin
The Pie of Knowledge is big, so slice it thin if you want to eat. You never see doctors or lawyers knowing everything about their field. Absorbing all that information is impossible and has diminishing returns — they know enough to be effective at their specialized job. The same applies to engineers, mechanics, psychologists, chefs, etc. You specialize, not generalize.
Of course, you’ll need general knowledge to get started like everyone else. After that, pick your slice, dominate it and move on to another slice. Over many years, you master many slices.
Practical projects
Once you’ve chosen a very specific target, it’s time to scream, aim, and fire. Find relevant work experience (full-time, intern, apprentice, volunteer). If you can’t, then make your own experience through personal projects.
However you prep, make sure the work is as real-world as possible. Look up enterprise-grade projects and try to create simplified versions of them. Start with small tasks and work your way up. Whatever technologies your industry’s using, try to get your hands on something similar and become proficient at them. It doesn’t matter if you or a boss is ordering the work, what matters is the work’s value to your portfolio.
A personal example…for one programming internship, the director loved my passion and ability to speak on my personal projects. He counted them in lieu of “real” work experience because I adequately demonstrated my skills.
Learn just enough to be useful
Countless times, I’ve made the mistake of acquiring knowledge without ever applying it. I’ve read lots of books and documentation, expecting to become a wizard at the end of it all.
I just wasted my time. It’s also a really sneaky way to procrastinate…you can’t blame someone who’s actually “reading the material”. But in truth, how much knowledge can you retain without applying any of it?
Instead, just keep grinding on your projects. When you get stuck (and it will happen a lot, believe me), go back and study until you can solve the problem. Once it’s fixed, keep moving until you’re stuck again, go back and study, rinse and repeat!
This, I think, is where most people give up. Getting good at something is pretty simple, conceptually.
- Study
- Do
- Fail
- Repeat
But I did forget one piece, arguably the most important one…
Teach someone
I can’t describe how priceless this is.
You know those learning breakthroughs we get? You’re studying, it suddenly clicks and you’re like “Aha, I get it! Everything makes sense now!”
I’ve had more “Aha!” moments teaching than I ever did studying.
Teaching requires you to digest the information you’re presenting intensely. It opens doors of thought you never knew existed. Helping someone else understand a concept demands you seriously know what you’re talking about. Otherwise, you ramble on in generalities, never actually helping the student progress.
I’ve done that with coworkers and stopped myself from saying “Sorry, I’m not 100% familiar with this. Let me research and get back to you”. Then we’ll Google the question and come to a conclusion together. Everyone walks away with a deeper understanding because we did it while communicating.
Even if you’re not “the teacher”, you learn 1000% faster just by bouncing ideas off your buddies. I did this with a friend while studying fundamental CS algorithms. Those concepts would’ve been too difficult for me to grasp in isolation. Next time you study, phone a friend!
In Closing
Set a target, learn just enough to hit it, teach someone, repeat. Please test this out and let me know what doesn’t work with it.