Videos
For those who don't know, FreeCodeCamp is a free (duh!) learning platform for coders. It currently offers 11 certificates. Most focus on web development, but there are a few Python certificates as well. Earning a certificate works like this: there are a series of interactive lessons, and then there are 5 projects to complete.
It took me many months, but I completed all 11 certificates (55 projects total). Here's a quick review of each certificate, and if you have any questions, feel free to ask!
Responsive Web Design Certification
This is probably the most polished certification of them all, and it’s one I recommend to anyone considering going into front-end web development. It covers HTML and CSS for beginners. There’s a lot of repetition, and the projects are integrated pretty nicely into the curriculum to help all the information stick a little better.
My only real criticism is that the CSS lessons can feel like you’re being told *what* to do but not *why*. And afterward I had to find other tutorials on Flexbox and Grid to understand that content better. But I don’t blame FreeCodeCamp much for this because, honestly, CSS can feel pretty counterintuitive no matter what.
Prerequisites: None
Difficulty: Easy
JavaScript Algorithms and Data Structures
This certification acts as a good intro to programming concepts and a guide to working with JavaScript, and I think it does a very good job of teaching the basics (variables, loops, conditionals, etc.).
However, there’s a certain point - about halfway through - where the lessons quickly become much more difficult, and I’ve seen a lot of people struggle. I think this certificate could be improved be flatting out the learning curve.
Fortunately, you really don’t need to know OOP, advanced array method, or ES6 in order to complete the certification (though you will definitely want to learn this stuff at some point). And I think the projects are all good challenges, not too easy and not too difficult.
Prerequisites: None
Difficulty: Medium
Front End Development Libraries Certification
I have to mention here that my biggest gripe with the FreeCodeCamp curriculum is that it completely skips over teaching basic DOM manipulation with JavaScript. Instead it jumps right from JavaScript DS&A to Front End Libraries, so you’re probably going to want to find a tutorial or course somewhere on DOM manipulation. Otherwise this certification is going to be ten times harder to complete.
The lessons begin with an overview of Bootstrap, JQuery, and SASS. They’re a little short, and if you really want to learn these libraries you’re probably going to have to find a more in-depth source.
After that you learn React and Redux. These lessons are not only difficult, they’re also fairly outdated at this point (it only teaches the older ‘class component’ version of React) . If you want to learn React, it’s probably best to find a more updated tutorial.
The projects are not too difficult once you've learned a framework, and you don’t have to make them too flashy.
Prerequisites: Responsive Web Design, JavaScript Data Structures and Algorithms
Difficulty: Medium-Hard
Data Visualization Certification
I have a love-hate relationship with this one.
Here you learn the D3 library (used for creating graphs and charts on web pages), as well as the basics of fetching data from APIs. Compared to the previous certificates, there aren’t many learning modules. You get to the projects pretty quickly. Once I got the hang of things, I had a blast making them. These might be my only projects in the entire curriculum that actually look good. I just really enjoyed taking a ton of data and then compacting it into an easy-to-understand visual.
On the other hand, it seems like whoever wrote the lessons and whoever designed the projects didn’t communicate very well, and this caused me a lot of frustration. For example, the D3 lessons show you how to create a tooltip, which (you’d think) is a good thing because every project requires the use of tooltips. Unfortunately, the projects require you do create tooltips in a completely different way, which you might not realize until after you spend tons of time debugging. There’s also an instance where an entire library is needed to complete a project, but the nowhere in the certification is this library mentioned at all.
There's a lot of frustration in this one for no reason. Add that to the fact that D3 isn't typically used in most web development jobs, and I'd say this certification is skippable. But if you do skip it, you'll probably still want to learn how to use APIs somewhere else.
Prerequisites: Responsive Web Design, JavaScript Data Structures and Algorithms, Front End Development Libraries
Difficulty: Medium-Hard
Relational Database Certification
This is actually my favorite certification in the entire curriculum. It’s taught very well with a lot of repetition, and the projects are nicely integrated within the lessons. I learned so much.
This certificate teaches the basics of relational databases (using PostgreSQL), of course. But also nano, bash, and git.
I highly recommend this one.
Prerequisites: JavaScript Data Structures and Algorithms
Difficulty: Medium
Back End Development and APIs Certification
The lessons offer a pretty broad overview of Node, Express, and MongoDB, but it gives you enough knowledge to complete the projects.
For the projects, a boilerplate is provided with a completed front end - you just need to complete the back end. Four of the 5 projects are microservices, some of which can be completed pretty quickly.
I didn't think this certification was too difficult at all, but I also didn't come out of it feeling like I understood Node/Express/Mongo very well.
Prerequisites: JavaScript DataStructures and Algorithms
Difficulty: Medium
Quality Assurance Certification
There are two learning components to this section. In the first you learn how to write functional and unit tests with the Chai library. This doesn’t take too long to get the hang of. The second is a series of lessons on “Advanced Node and Express,” and honestly this has nothing to do with this certification. You do not need this “Advanced Node and Express” section to complete the projects (though you will need it in a certification down the line).
The projects are very similar to the ones found in the Back End Development and APIs Certification, except they’re all more complicated to build. One of the projects here is a “Sudoku Solver” where you actually have to write an algorithm to solve Sudoku puzzles! Once you have the projects built, you need to write tests with Chai, and, funnily enough, that’s the easy part. Writing tests actually becomes tedious by the end of this certification. But creating the logic and routes for the back end is still kinda hard.
Prerequisites: JavaScript Data Structures and Algorithms, Back End Development and APIs
Difficulty: Hard
Scientific Computing with Python Certification
We take a sudden switch to Python, and I need to say that I do not like FreeCodeCamp’s Python certifications very much. The lessons are no longer very interactive. Instead, each lesson is just a 10ish minute YouTube video with a quiz question tacked onto it. It’s a difficult way to learn.
That said, I’d describe this certification as more of “Python for Beginners.” A lot of topics are covered, but I’d say 50% of it isn’t needed to complete the projects. And the projects - oh, boy - I hated some of these projects. Some have unclear instructions and, worse, some have the most tedious outputs you’ve ever seen. Honestly, be prepared to count white-space between elements.
I never want to think about the Budge App project ever again.
Prerequisites: None
Difficulty: Medium-Hard
Data Analysis with Python
Here you learn about the Python libraries that are heavily used in the sciences: NumPy, Pandas, and MatPlotLib.
Again, it’s all taught in videos, but the projects are much more straight-forward (the only issue is that they have to be made in Replit, which has its issues). Honestly, I’d describe this one as learning Excel on ‘Hard Mode.’
Prerequisites: Scientific Computing with Python
Difficulty: Medium
Information Security Certification
This is an odd one because half of it is back-end web development, and the other half is learning a couple of new Python libraries.
The Python stuff is interesting. It's still video lessons, but I found two Python-related projects are actually pretty easy.
The back-end stuff is mostly about learning HelmetJS, a library that helps secure websites. However, the back-end projects are all very tough. Two of the projects are similar to the ones found in the Quality Assurance Certification - you have to build an Express, Node, Mongo back-end, add testing using Chai, and now also add security with HelmetJS.
The final project, Secure Real Time Multiplayer Game, is another beast entirely. It’s still mostly a back-end project, however, you also have to find some way of learning how to make a game using the Canvas api (this isn’t taught by FreeCodeCamp, you need to find a tutorial elsewhere). And remember the Advanced Node and Express lessons from 3 certifications ago? You now have to use SocketIO to make the game multi-player. This one took me a good amount of time to complete.
Prerequisites: Scientific Computing with Python, JavaScript Data Structures and Algorithms, Back End Development and APIs, Quality Assurance
Difficulty: Hard
Machine Learning with Python Certification
Aside from the fact that I still don’t like the Python video lessons, this one wasn’t too tough to complete. You basically get an intro to TensorFlow and a bunch of ways to use it.
The projects are mostly straight-forward, and you can find lots of tutorials online that will help. However, there’s one project that isn’t *at all* covered by the videos, and there are some projects that don't have the clearest instructions. So there’s a lot of unnecessary frustration involved with completing this certificate.
Prerequisites: Scientific Computing with Python, Data Analysis with Python
Difficulty: Medium-Hard
Previously I'd completed and written up some thought's on Free Code Camp's Scientific Computing with Python and Responsive Web Design certifications. I think people found those helpful, so here I am with some thoughts on their JavaScript cert, and hopefully it'll help some people decide whether it's worth it.
First - how long did it take? I didn't really time myself, but I'd estimate about 60 hours. It's a bit hard to say because I spent some of that time *thinking* about coding challenges and some of that time looking at other tutorials when I didn't understand certain lessons (more on that later). There are 7 'learning sections', 2 'scripting challenge' sections, and a final section of 5 projects that need to be completed in order to earn the cert.
Out of the three programs I've completed from FCC, this JavaScript one seems to be the most polished. Like the Responsive Web Design program, everything is done in the in-browser editor, which makes it really easy if you computer hop or can't set up your own dev environment. So I was able to complete a lot of this program with my work computer while on my lunch break.
Because I'd previously learned some Python, I was able to breeze through about 75% of this course. Many of the core concepts are the same, so I just had to learn a lot of syntax differences. There is a Regular Expressions section early on that I had some struggles with, but it turned out to be very important for many of the scripting challenges. In fact, I ended up using RegEx in 2 of the 5 final projects.
Speaking of the final projects, I didn't think any of them were too difficult. The final "Cash Register" project was the one I had to think about the most. But if you could figure out the core functionality of each project, it was easy to quickly finish them. There was no tedious output formatting like the Python cert had. I think these projects were pretty well designed. But most valuable were the basic and intermediate algorithm scripting challenges, which really forces you to use all the concepts you've learned.
Still, I think there are 2 flaws with the FCC JavaScript cert:
First: while most of the program is paced really well, once you get to the Object Oriented Programming and Functional Programming sections, the difficulty ramps up very fast. You are presented with big walls of text and (relatively) big chunks of code to figure out. The OOP section I was able to get through because I'd learned a lot of those concepts in Python, but a lot of the functional programming stuff (especially the .map and .filter functions), I had to just go and watch other tutorials on the subject. Also, I just had a hard time getting recursion down (and I still need to go and find more tutorials on that).
Second: The program is pure JavaScript. Nowhere do you learn how to use JS to interact with HTML & CSS. I think that's a big hole in the program. The next cert is on stuff like Bootstrap and React. So I guess the vanilla JS+HTML stuff is just skipped over?
Aside from that, I think it's a good cert to get (even if the cert doesn't really mean anything). I learned a ton, and I'm glad I did it.