One thing at a time: how not to get overwhelmed (learning programming)

For the past few months, I’ve been learning programming (mostly JavaScript) as well as styling with Sass and all the modern tooling that comes with it.

With the amount of things to learn, it’s hard to know what to focus on.

Should I learn typescript? Wait, I don’t even know how to rebase in Github yet. What is the best way to load up JavaScript files into my HTML, using async or defer? What does ‘use strict’ mean? WTF is linting? Do I need to read a book? My portfolio site looks outdated, I really need to make all the margins uniform. I know, I ought to learn how localStorage in browsers work. I haven’t really make anything using <insert framework>, maybe I should do that.

I used to be stuck in this loop, often for days. It was excruciating.

Here is the simple way I learned to short circuit this pointless loop. I was re-watching this great talk on the JavaScript event loop when it struck me..I’ve read it before: ‘JavaScript is a single threaded language’ that can only do ‘one thing at a time’ (while this is not strictly true, let’s take this premise at face value)

..Hey! I’m a single threaded programmer too! (and no matter who tells you otherwise, humans are awful at doing more than one thing at a time). If I can only do one thing at a time, then I should focus on that one thing with all my focus. This is common sense, but how do I decide what to focus on?!

Making Simple, Stupid, Pointless Things (that are anything but pointless)

After a few months of chasing impulses and trying a bit of everything. I know now that I learn a lot better when I build small side projects. They’re small, self-contained pieces of work that have an end. I find that side-projects also get me into a flow state where I lose track of time. I also learn concepts and ideas a lot better when I build side projects because the learning is happening in context. I know that using defer works better to load JS files in because of the time my code wouldn’t work only sometimes. I know to use align-self: center;to avoid having my images stretch when I was using Flexbox because of the time I was trying to build a landing page and spent 30 minutes trying to figure out why my images were getting stretched to hell.

Also, Creating something just for the fun of it is often just…fun. I’ve been taking woodworking lessons, and just messing around with wood is just SO MUCH FUN, and the learning happens in context of the pointless thing you’re trying to build, which makes the thing anything but pointless.

This approach also means that I’m not stuck in tutorial purgatory, where I am able to mimic someone coding on a screen, but don’t remember most of it the next day because I never really understood what was going on in the first place. No tutorial will ever teach you to fix bugs like would on a project, nor get you into the habit of improving your google-fu, or train you to not give up when things seem hopeless.

Note: I do think tutorials and online courses have their place, but building things you want to build is the best way to learn (for me).

BTW, If you haven’t already, check out Stupid Shit No One Needs And Terrible Ideas Hackathon. My personal favourite project of all time might just be: Unfriend the Poors, […]a free service that helps you ferret out and then unfriend your poor friends on Facebook.