Last week I asked you a question:
How do you decide what to work on?
A bunch of you replied, which makes me really happy.
A common thread amongst the replies was a bunch of you are trying to learn new things, which is really cool. But I also noticed another trend, the feeling of getting stuck.
Here’s an example:
I didn’t ask them for permission, so we’ll just call them Y:
I don’t mean to call Y out, this is a common mistake and one that I made for years as well. The mistake here is to focus on the learning rather than the outcome.
And I don’t blame Y, this is how we’re used to learning. You first learn the theory, then you practice the basics and after that you get to do the exercises. It worked well in school, you had a teacher/professor who would deliver the course to you over the period of a few months.
This approach does not work for self-learning.
When you are trying to teach yourself a skill, you don’t have the same time-based structure laid out by someone else. More importantly, you don’t have the same social motivations put in place (good grades, parents, placements etc.)
Now, one way to go about self learning is to lay out a course for yourself. Give yourself a semester to finish it (3 months). Attend a class alone by having a fixed time every week and follow the same method. Consume the theory (read documentation or watch tutorials)
Practice it with a simple example
After completing a chapter of the tutorial, use it in an exercise (build something with it)
A friend of mine who’s a frontend developer has been teaching himself machine learning using this technique and it seems to be working!
If this approach sounds slow and boring to you (it does to me!), then I have a different approach that I like to follow.
See, I like the exercises more than the theory, so I start with the end result in mind. A use case, an application I want to build.
That fixes the motivation problem at the start. It’s a great substitute for the missing social structure.
For example: I’m trying to learn React Native right now.
I want to build an application for myself (and possibly for others), but I need access to native features.
I’ll be honest with you, it’s really scary for me to work with gradle builds and java activities, but the use case is something I really want to solve and that keeps bringing me back to learn.
You can combine both the approaches (structured course + end goal oriented) and see what works best for you.
Sometimes you have to learn for the sake of learning, usually for something that happens after you learn the skill.
Early last year, I was working on an angularJS project and was missing out on the React hype.
Put yourself in the position to learn.
I saw there is a React meetup near me, I submitted a talk proposal without knowing anything about React.
This made me accountable, if I don’t learn enough to give a talk, I’ll end up looking like a fool.
I managed to learn just enough to be able to give a small talk. (I did make mistakes, experienced people in the audience were nice enough to tell me where I was wrong after the talk)
On a similar note, I want to learn how to sell a product. As a developer, my sales + marketing skills are pretty bad.
So, what would be the best way to improve them?
I’m starting a laptop sticker company with my friend Nitish (I mentioned this on the newsletter last week)
What’s interesting about this project is: We’ve never done anything like this before, zero experience on starting anything
We both have day jobs, so the challenge is to spin this off by working only 1 hour per week
All the discussions + decisions happen on a call which is published for you to listen to.
Hope this was helpful for you on your journey!