There is an impassioned debate in the programming community about whether the right way to teach and learn this craft. It's probably been going on since the beginning of time. It usually boils down to whether we should teach the underlying fundamentals (data structures and algorithms) before moving onto the higher level industry abstractions (Ruby on Rails, ReactJs, etc.).
My position on the matter is that it does not matter as long as the student is engaged in the material. Sometimes it is up to the student (whether in solo learning or in a classroom setting) to make these choices, and sometimes that burden falls on the instructor.
But either way, here is what I know to be true: If you stick with it and stay curious, you will always learn what you need to learn. I can't say why that is. It just works out that way. The only way to fall off track is to lose interest, enthusiasm, or motivation. It's easy to lose interest, enthusiasm or motivation on your own. It's also easy for that to come from an outside source. For as many people as there are trying to lift you up and cheer you on, there are also the ones that want to tear you down. It's probably not a conscious effort on the part of these types. It's probably out of subconscious insecurity or projection, but those types exist.
Overcome these barriers, and you will learn what you need to learn. Programming is a never-ending series of aha moments until you look back and you realize that you're an experienced developer. The process of coding is actually quite anti-fragile in that every time you hit a major roadblock, you usually have to learn your way out of it. Your most frustrating pitfalls are also the things that propel you to the next level, unless you lose motivation. It's easy to lose momentum if you enter a downward spiral, but the only way to regain the mo' is to get back on the bicycle.
You don't need to worry if you are "specializing" too much because the deeper you go in a subject the more you need to learn about other subjects. If you are primarily trained as a front-end web developer, for example, you may feel nervous that you don't really understand what's going on under the hood. "I have no idea how any of this is happening under the hood. How am I ever going to truly become a great developer." This can be unnerving, but you don't need to go out of your way to learn the infinite things you don't know, they will come up naturally if you stay motivated and curious. There will come a time where something just isn't working right and you'll start tugging at the thread until you've unraveled the whole sweater. It's just what happens. Experienced developers can tell you this.
So focus on the task at hand, feed your curiosities and do whatever you need to do to stay motivated to put in the hours. The process takes years and you cannot rush it.
Oldest comments (30)
It's all about getting back on that bicycle. π² Hope somebody finds this helpful. At some point in the future you're going to look back and realize how far you've come. I really don't think this ever goes away as long as you stay interested.
...or learn how to make passive income)
Passive income just means less time pressure to master these machines π
I think you putting the point of "You Own Your Own" Learning...YOYO!!
This is very true. You simply cannot rush it.
I'm very much at peace with this, but it was frustrating for a while. I really didn't want to be a newbie any more. I'm not complacent, but I'm trusting the process more than ever. When I see other developers struggling, the advice is to keep putting the work in and the "aha" moments will come more consistently.
I definitely agree with all of this. So much time I've spent trying to figure out exactly what to learn turns out to have been wasted, since most of that energy could be channeled back into just experimenting and learning more.
Don't get me wrong, setting priorities is important. But not to the point where it's paralyzing and it stops you from getting a balance of short and long term goals. For me the simplest and most effective way to quickly do this is ask "what could I improve most in my workflow?" In a blank I was learning more Rails, since it's used often at my job, and playing around with Vue, since I wanted a simpler JS framework for small ideas and experiments. I don't know if they're the absolute best things to learn for me right now (could be React instead), but they get me the most excited to learn more, and that matters more.
I also agree about learning your way around roadblocks. I'm a junior dev where I work, but I'm getting to the point where I'm about to ask a colleague for help, and most times I stop and realize I can figure it out myself with some extra digging and research. That's honestly helped the most with feeding my passion, knowing I'm getting better at teaching myself broader topics. And that's going to keep me going through my whole career :)
This issue resulted in major grief and frustration, but oh my god did it force me to learn a lot all at once. Looking back at all the times this sort of thing has happened and how to take that attitude into the next issue makes me feel pretty great.
I used to stress out that I was not focusing enough on a specialty, and was constantly jumping from thing to thing. Focusing is good to a point, but at a certain point, your free time is your free time and if you want to take a day to mess around with Haskell or something, don't feel bad about it! Some days you are allowed to Treat Yo Self!
Absolutely. My worries are usually the opposite, that I'm not exploring widely enough. Either way, they are mostly unnecessary worries. Progress happens when you stay enthusiastic about craft, no matter where you put your focus.
The list of my open Tabs tells the same story ;)
You are absolutely right!!
I needed to hear this...I started coding about a year ago and have been programming professionally since March. Up until now, it's been a pretty linear learning process -- not effortless, but the spiral has consistently moved upwards. About a month ago, I felt like I hit a plateau. I've been trying to "double-down" but the plateau is real. The last thing you said about the process taking years makes me feel hopeful. If I keep pedaling, I'll eventually start moving uphill again.
There have been so many times along the way I felt like I had plateaued and I had no idea if I'd ever work my way out of it. I always did, usually without even really realizing it.
Hey. Great piece Ben, it's really spoken to me. Thanks.
So glad you liked it, Joe!
As an autodidact front end developer i find this article really helpful and encouraging, thanks! :)
"For as many people as there are trying to lift you up and cheer you on, there are also the ones that want to tear you down. It's probably not a conscious effort on the part of these types. It's probably out of subconscious insecurity or projection, but those types exist."
words of a wise man :D