I got started in building websites from freeCodeCamp, and ever since then I've wondered why their method of online pedagogy hasn't been more mimicked and borrowed beyond web development.

I never got around to finishing as I ended up in fulltime software engineer roles first, but in hindsight I can point to a few things that I found really valuable regardless.

The first thing, and one that you almost immediately notice when you create an account, is that it gives you a a clear and up-to-date[0] roadmap of what you need to learn.

To the curious beginner, web development presents a lot of esoteric and complex lingo and concepts that are actually a lot simpler than they claim to be. This, I think, is probably why a lot of people give up before they even have a chance to know what web development is about.

Having a roadmap to guide you through this is invaluable, because it embodies the same role as a tour guide in a haunted house. Don't mind the howling sounds, mind the gap, there's an animatronic zombie up ahead. Just follow me and we'll get to the end eventually.

This is also probably why people may find it difficult to learn things on their own without a structured curriculum. For many topics, like web development (or math, or cooking, or finance), the search space is so large that to reasonably chart a path to getting where you want to go would probably require you to roughly understand what you're seeking to understand in the first place - a really annoying catch-22 that a roadmap helps a lot with[1].

Another thing that freeCodeCamp does really well is that it tricks you into building a portfolio.

When you're starting out, it's easy to feel like your work is trivial, not professional-grade, and otherwise not worth it. I sure felt this way at the time, and still face it daily.

It's also very easy to feel like you're not retaining what you've learned. Sure, I finished the basics of Javascript section, but what can I do with it? What evidence do I have for myself (and for others, but mostly myself) that I know the material?

Both of these are addressed with the projects that freeCodeCamp gets you to build at the end of every section. These are necessary for you to pass to the next sections, but they also leave you with work that you can take beyond the course.

These "talismans" were invaluable to me at that early stage. Having evidence that I was learning something built up my immune system for what I would later understand as impostor syndrome. Without it, I wouldn't have had the confidence to continue.

Lastly, I appreciated that freeCodeCamp offered to me an end goal.

I started picking up web development during my gap year. This was a profoundly uncertain time for me. For the first time in 18 years, there was no imposed structure to my life and I had the ability to decide what I wanted to do next.

Of course, I didn't know what to do next. What I did know was that coding, from what I had toyed with here and there while I was at school, was pretty fun.

I also knew that I had a lot of time, and this funky green website is telling me if I finish all of these coding exercises I could get a bunch of projects in my portfolio and some sense of validation for my self-directed effort. Eventually, that's how I came to work in building software.

With all that in consideration, why haven't more freeCodeCamps popped up? Where's the freeArtCamp, or the freeLitCamp? Why aren't there free and open source websites directed towards other merit-driven[2] fields, like say mathematics, real-estate investment, or botany?

Maybe I'm wrong and I just haven't found these websites yet, but I have yet to encounter the same sort of experience with any other field. The self-guided, project-based approach of freeCodeCamp is probably not the best way to learn everything, but it would certainly be a good start to most.


[0] There is a time lag between what the content teaches you and what the actual state of it is in reality, but this time lag is far less than that of a typical web development course in university.

[1] A corollary to this is that, in helping you, roadmaps should be temporary. Like pencil sketches over canvas before you paint, roadmaps are nice to guide you along but shouldn't necessarily restrict you to that path.

[2] These examples are probably inaccurate to some degree, as I think nothing, including web development, is ever 100% merit-driven in 100% of cases (and where do we even begin with defining merit?). A charitable interpretation is appreciated.