Production Sucks, Build a Fart Button
When I was learning JavaScript for the first time, I read a lot of guides that started you out with a big goofy “production grade” React App that was effectively a to-do list with 478 dependencies. The guides were always extraordinarily detailed: every line of code meticulously laid out with comments on what to do, every command explained in-depth so that you’d know just what to execute to get your application running. It was all laid out for you, so that there was no chance that you’d struggle.
At the end of the guide, boy I sure had a to-do list application running, but I had no idea why or how, or what to do next — and there was a distinct feeling that even if I did know what to do next, that I wouldn’t know how.
See, what I’d uncovered was that the guide was absolutely worthless. That’s right: it didn’t actually teach me dick. I didn’t learn anything about the framework, I didn’t pick up anything about JavaScript. The code was there, but because I didn’t fight through anything, I didn’t actually get anything out of it besides a dollar-store quality toy.
No, I didn’t learn how to write any JavaScript until I went and started building stuff by myself. Now: I’m not going to tell you I’m a JS expert. But I will say that I managed to get comfortable not just with the syntax of the language, but also with a ton of browser API stuff that I never would’ve seen had I not just tried doing stuff for myself.
My first projects were little canvas API doodads, because I’d always wondered what it’d be like to build a game from scratch. It sucks. Then I moved on to actual DOM manipulations, and build out flash card apps, yada yada, all from scratch. It was a huge, challenging adventure that was super fun and rewarding.
But then, learning anything is like that. If you start out with some big hot-rod, you’ve missed the point, because learning something is in no way whatsoever about the destination. It’s entirely about the journey.
I know people who are on their way in the industry and are wondering what to do next, but don’t necessarily have the solid language foundations to accomplish a big project. That’s always the hard part: knowing what’s even possible to do with software. In order to understand what can be done, you have to first do a whole lot of something. You need the language and common APIs to be out of your way before you can command it to do something advanced.
So, if you’re learning any programming language, get the hell away from the industrial guides of the internet. Go build a fart button. Build a fortune generator. Build a shitty terminal clock. Go sink your teeth into it. I guarantee you’ll learn more from your 40 minutes wondering why you can’t draw a circle on an HTML canvas than you will from the latest and greatest grocery list app article.
