How I learn new skills as a developer
Learning new skills in tech
A blog post by @jessfraz and this tweet by @erikstmartin inspired me to think about how I learn new software development skills and work in tech.
This is exactly the way I learn. Go straight for thing I want to learn till I run into a term or concept I don’t know, research that, if I run into things I don’t know researching that, I stop and research that too, then unwind the stack. Then I keep repeating this process. https://t.co/LQnVfAhqEn
— Erik St. Martin (@erikstmartin) March 24, 2019
Basically this is how I do it. You could call this the top-down approach to learning. I go straight to the thing I want to do and dig deeper down to learn what I need. This means learning things deeper down the stack or more top-level than my starting point. Basically this is learning by doing, I set myself a goal to achieve something and learn what I need to know along the way. I teached myself most of the stuff I know, like Angular, that way. I wanted to build an app and picked up everything I needed to know about how you do certain things in Angular while doing it. I learned the basics of Go while reading and going through the book “Writing and interpreter in Go”. (Check it out: https://interpreterbook.com/). Learning this way is most fun and effective to me.
The hard parts
This approach to learning worked many times for me, but it comes with some challenges.
Losing interest
The hardest part is to keep on moving down the right path. It’s easy to get lost in a topic or lose track. I abandoned many projects or topics because it looked like the effort to learn everything is not worth it. Many personal projects I started didn’t come very far because I just did not want to spent the time to learn some complex stuff and don’t enjoy in my own time. I think this is normal for everybody (hello imposter syndrome).
If you are forced to learn something maybe because it’s your job to solve this problem, you don’t really have the problem of losing interest but it can be hard to keep motivation high.
You can also lose track easily if you learn like this. You need to research something to understand the thing you started with and you go down the rabbit hole of information and end up learning completely different things. You may have learned good stuff, but you made little progress on the thing you started with.
Not suitable for every environment
This type of learning doesn’t really fit traditional education. In school or university you may have to learn something you are not really interested in. For me it’s very hard to make progress learning that way.
I think it's also important to understand TCP. So I have all beginners send packets to servers by touching stripped network wires to a 9 volt battery *really fast* to send their requests manually. https://t.co/7Y4ubEWLbZ
— Ben Lesh (@BenLesh) March 26, 2019
In my experience traditional education often is bottom-up type learning which can be very hard for me to handle. I need the bigger picture and practical use of something to even start learning.
If you choose to learn on your own and don’t get a degree it can become harder to get the interest of potential employers. You may know a broad spectrum but it can be hard to show what you are capable off without a fancy degree or major project or company name at the start of your career.
Learning is all about solving problems to me. Learn what you need to do a job and pick up everything interesting along the way.