Hi freeCodeCamp Contributors,
This month we are making steady progress on the big updates to freeCodeCamp’s curriculum, as well as lots of performance improvements for our publication.
Reality moves slow, but imagination has no speed limit.
We have more ideas for what we can do than we have the time and energy execute. And the community is constantly sharing awesome ideas for what we can do, too.
But there is one idea I’ve had from the beginning. I’m not quite sure how to execute this properly. There are plenty of people who’ve tried to do it in the past, to varying degrees of success. The freeCodeCamp community could be the first ones to really make this work at scale.
A few years ago, my friend Erik Trautman created an open source project called The Odin Project. It was focused on learning software development right on your local computer (instead of coding in a browser, like freeCodeCamp’s curriculum is focused on).
And there was another project called Node School that had tutorials that ran completely in your terminal, and looked like awesome MS DOS programs from the 80s.
There were several intrinsic problems that prevented The Odin Project and Node School from really catching on:
- It’s hard to teach people how to configure their developer environment. Everyone’s computer is different, with different operating systems, and versions, and different configuration states.
- It’s hard to teaching people how to use command line tools and other developer tools when you can’t properly test whether they’re doing things correctly.
- How do you preventing people from running unsafe commands and completely screwing up their computer?
- Also, a lot of people use public computers at schools or libraries, and may not be able to always use the same computer each time. Or these public computers may be locked down and not grant users permissions necessary to install and use the necessary tools.
With freeCodeCamp, we decided it was simpler to do everything in the browser so people didn’t have to fuss with local developer environment configuration.
And in practice, most jobs will give you a computer that is already set up by the IT department with a standard disk image. Within a few hours, you can quickly learn how to do software development locally.
But some people really do want to learn on their computers. And people often criticize freeCodeCamp’s curriculum for not training people how to use a desktop environment.
So here is my idea (which I encourage you all to discuss below).
A command line version of the freeCodeCamp curriculum
What if we built a version of freeCodeCamp that could run entirely in Docker on your laptop/desktop, where you could work through the entire curriculum right in your terminal?
This would cover basic Linux, Git, Python, SQL, and maybe even a classic editor like Vim.
It would be a single, linear curriculum, where people work from start to finish. They would build several increasingly complicated projects.
By the end of the curriculum, they would have a fairly sophisticated CRUD app running with a Node or Django backend, Postgres database, and React front end - all accessible from their browser at localhost:8080.
We could teach all kinds of topics that are currently impractical to teach in the browser. (Though freeCodeCamp will eventually teach these in the browser as well. The libraries for simulating Linux, Git, and SQL in the browser get better every year.)
If you’re looking for some inspiration for how this might work, take a look at NodeSchool, which used to be part of freeCodeCamp’s curriculum:
And the Koan series:
And the Git It local Git tutorial:
The Git It local Git tutorial
Eventually this could be something anyone, anywhere in the world could use to learn some basic coding - even from a Raspberry Pi or a cheap Chromebook - and without internet access.
You wouldn’t need to upload anything anywhere, and there would be no certifications - just the feeling of accomplishment and all the learning along the way.
What do you all think?
Share your ideas.
Is anyone interested in stepping forward and helping contribute to this initiative?