How to keep learning to program, over and over again, forever.

Ben Halpern on September 24, 2017

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 ... [Read Full]
markdown guide

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.


he process takes years and you cannot rush it.

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.


So, here's where I land on this, because I'm in a major roadblock right now.

I'm a self-taught programmer. I've had maybe one or two actual classes, but most of the programming I've learned has been on the fly while doing technical support, starting with VB (really got into that supporting MS Access). I learned C# because I wanted to learn something new when I had the need to write a quick app.

Through it all, I never really learned the basics, so to speak. Terminology, the right way to do things, that's where I got stuck. So I remain in this middle ground where, today, I want to learn JS.

I'm not starting from scratch, but I'm also not in the 'JavaScript for C# developers' audience.

I'm in that JavaScript for Hobbyists Who Taught Themselves to Code For Fun audience.

Almost every single 'Hello World' is written to such a level that it's disheartening to be sent back to kindergarten. Imagine telling a singer 'Okay, you want to learn how to dance? Let's start with how to keep a beat.'

I recently tweeted "I need something between Javascript for Newbs and Javascript for C# developers. something like 'Javascript for self-taught hobbyist programmers." and was almost disappointed that I didn't even get spam answers. I mean, not disappointed but am disappointed.

The thing with JS is... If you don't count rudimentary HTML, I'm a desktop coder. I haven't even managed to grok the whole JS ecosystem yet. Node? TypeScript? Angular?

And it isn't like I have a specific goal in mind apart from being able to create new and interesting things on my websites. I'll admit, this lack of a solid goal is part of my problem. This is legitimately the first time I've wanted to learn a language to be able to use it to do things rather than wanting to do something so needing to learn a language.

Lastly, I'm not sure why I'm leaving this as a comment. It feels more like a blog post or confessional.

PS I hope that recent twitter link to here got you some extra permanent traffic. =)


I recently tweeted "I need something between Javascript for Newbs and Javascript for C# developers. something like 'Javascript for self-taught hobbyist programmers." and was almost disappointed that I didn't even get spam answers. I mean, not disappointed but am disappointed.

This would make for a decent #discuss thread if you want to take this to the community 🙂


Once I figure out UWP for this side-hustle I'm on right now, I might do that. I can't imagine I'm alone in the particular level of knowledge/method of learning, but I'm just surprised there isn't more stuff geared towards the "We believe you're smart, so we're not going to teach you how to start an IDE (but we will have a link to show you what type of project to start in case you need it)" type.


@jaydeflix you can learn the language (modern javascript that is) using this as a guide and its very well organized. Play with the examples and modify them on your own machine to get a better understanding.


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 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.


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.


Passive income just means less time pressure to master these machines 😁


Great points! I think an important part of this is accepting that you will write bad code in the learning stage of a new area/language.

If you're an experienced developer, it's quite hard to let yourself write stinky code. But, if you're working in a new language and you don't know how to make it right, stinky code is inevitable. It's part of the learning process. And having the humility to write it, then learn from it, is a vital step in keeping your learning going throughout your career.

Feeling like you're too experienced to write junk can be a source of paralysis and sap at the mojo. Really, it shouldn't be. We need to remember to learn like children, scientists, et al.: by making lots of experiments and not always considering code to be the end product.


The idea that learning to program is iterative, and takes place over extended periods of time through deliberate work, resonates with me.

I am very conflicted about junior devs who aren't exposed to "raw" programming skills like algorithmic thinking, SQL queries. Most companies interview with a "first principals" approach and dig into the basics of programming. Many of us are using frameworks and ORM's, and although we may have had some exposure of the basics, I don't think standard interviews test for our knowledge.

Would it make sense to practice algorithmic thinking, SQL, etc, simply for interviews, even though the relevant knowledge will be learnt over time?


"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


Programming is a never-ending series of aha moments until you look back and you realize that you're an experienced developer.


I am very relief to see that everybody has/had the same concerns than me. I usually am overwhelmed with the amount of things there are "to learn" and I was doubting even my capacity to keep up.


I think you putting the point of "You Own Your Own" Learning...YOYO!!


Thank you very much, you gave me motivation to keep going in the specialization despite my bad grades, i know i can do it but eventually that is...


As an autodidact front end developer i find this article really helpful and encouraging, thanks! :)

code of conduct - report abuse