I’d like to tell you a tale of some bullshit…
I had some time over the weekend so I decided to repeat an activity I do every so often just to keep my skills sharp — a sort of use it or lose it philosophy.
I am fond of what I like to call a “speedrun”. The basic concept is that you pick a set amount of time and pick an activity that you can’t possibly finish during that time, start a timer and then hyper-focus and try to do as much as you possibly can. (Healthily of course, sleep when you need to, eat well, work out, but tune out the “I’m just going to go look up and start this totally unrelated thing” nonsense).
For this weekend, my speedrun of choice was the FreeCodeCamp curriculum. I’ve done various speedruns before using the same material, it’s kind of nice to try a new take on old projects and see how you improve over time. The twist for this weekend is that instead of diving straight into the algorithms and projects, I went with a “start at the top and skip nothing” approach. It was a mistake.
I made decent progress, but no where near as much as I would have preferred. Wondering what tripped me up? One of the tougher algorithm problems? Nope? One of the “advanced” frontend projects? Nope.
How can a beginning programmer hope to learn anything by copy/pasting answers in order to “pass” challenges that involve concepts they don’t understand?
If the content is insufficient to teach the material necessary to complete the projects that follow, the reasonable, responsible, and ethical thing to do would be to mark that section “coming soon” and in it’s place propose alternate “off-site” material which actually teaches the concepts in depth. Not doing so wastes learners valuable time. The FCC forum is littered with “I’m lost” posts from people starting the Intermediate Frontend projects because the preceding section taught them next to none of the skills they need to be successful on those projects. If they’d been told “this was a brief intro, go read this book and watch this playlist to really get up to speed”, that’d be one thing. Instead, they’re left with the impression that they were taught what they needed to know and are stupid for not being able to figure out how to apply it. It’s ridiculous. And, it pisses me off.
Yeah “a winner is me”, I copied the code I was told to copy, and pasted it in where the comments in the code editor told me to paste it and hit the submit button. Lets diverge for a moment about what actually constitutes a “winner”. My outlook is that, in the domain of the goal of the typical beginning programmer on FreeCodeCamp, being a winner is measured by how much you’ve learned, what you can build with your newfound knowledge, how you can leverage your baseline skills to build even grander things, and how your eventual expertise can translate to actual readiness to do this “as a job”.
237 times a beginner is told that they’re awesome, that they got it, that they will be prepared for what’s to come. 237 times that same beginner was lied to and duped into being exited and motivated to get to that next click of progress. 237 times that instead of a popup congratulating them for putting a single H2 tag on the page, they should have instead seen a popup reinforcing a legitimate, reliable source, detailing extra reading or extra courses or video that would help them learn the topic at hand in depth.
I stopped my 48 hour speedrun at 32 hours.
I’ll likely do another 48 hour speedrun in a few weeks. Next time, I’ll skip all the exercises and jump straight to the algorithms and projects. FreeCodeCamp is an awesome resource, as a blueprint of practice activities to reinforce what you already know. Having several dozen projects laid out for you to complete gives an amazing structure so you can get right to practicing on a variety of projects to reinforce your web development skills. The algorithms problems are a great way to get your feet wet with a beginner set of challenges before you move onto the “real deal” on hackerrank or codewars. But, the actual “lessons” that purport to teach the skills you’ll need to develop in order to tackle the projects and algorithms, are disrespectful of the time and effort of everyone who wastes their time on them. It would be far, far, more instructive and beneficial to learners if instead of having to be the “you can learn it all here on one site” grandiose facade, FCC just “got real” and did what was best for the learners and admitted that other resources cover the material more thoroughly and linked to those resources.
Also, just to wrap up my speedrun retrospective.
I highly recommend a “redo all the projects I’ve already done” speedrun for anyone and everyone. It’s very enlightening to see how you can now do in minutes, what once took you hours or days (a great source of meaningful motivation).
Also — the FCC code editor is utter crap on Chrome on Linux. You click in the editor, start typing, and the damn thing starts inputting whatever you’re typing wherever the hell it wants, except, of course, where you actually clicked. I had to use Firefox for the whole thing.
So — back to what you can do if you find yourself stuck
My whole point here wasn’t the big long rant about what’s wrong. My point is to let you know that if you were sailing along through the challenges, hit the intermediate projects and have no clue where to even start that: you are not stupid, it’s not your fault, and you were given insufficient information to tackle those projects.
I know I go on all the time about YDKJS, but this time it’s really important and is just the resource that will elevate your understanding to the point that you at least know where to start.
For the “I like to see it in action” crowd:
This Net Ninja Async playist on Youtube isn’t quite as comprehensive, but gives a great overview of the major topics so you at least know the basics and the terminology and can hit YDKJS for the nitty-gritty details.
Happy coding, all :D