My review on freeCodeCamp's curriculum
Tags: review, beginners, webdev
Published: 2019-07-31 18:11:18

Hello DEV Community!

I have just finished every project of the last certificate on freeCodeCamp and got the desired [Full Stack Certification](https://www.freecodecamp.org/certification/lucas.olivera/full-stack). It took me nearly a year to complete every certificate, life got in the way but I finally made it!

As I have finished the whole curriculum, I will tell you what I think of it. 

**Note**: I am not affiliated with freeCodeCamp, I'm just telling you my personal opinion on this platform.

**UPDATE**: As FreeCodeCamp is releasing a new version of the platform, this review will be useless soon.

# What is freeCodeCamp?
In case you were living under a rock or are new around here: freeCodeCamp is a non-profit organization which has an online web platform where you can learn to code by doing small "challenges", each one with a small text explaining a line of code and asking you to implement it on the platform. You run test cases and if you pass them, you are allowed to continue to the next challenge.

![](https://thepracticaldev.s3.amazonaws.com/i/wa11s8vx47qqt2gn41e1.png)

The best part of fCC is that you can learn on your own without paying anything, as it is completely free (but you can make donations if you want). It is also [open source](https://github.com/freeCodeCamp/freeCodeCamp), and they always need help!


# Content
freeCodeCamp's curriculum offers six certifications which take you around 300 hours each to earn while doing challenges and coding your own projects. If that is not enough for you, you are given an additional certification: "Full Stack", as a reward for completing the previous six.

And that's not all: you have a last section called "Coding Interview Prep" which offers to teach you algorithms, data structures and gives you more projects to continue practicing!


![](https://thepracticaldev.s3.amazonaws.com/i/aq093ejuhdq0tjfkzxfe.png)
*Look at all that content!*


Every certificate finishes with five projects you have to complete by following user stories. If you manage to do them all, you are rewarded with a certification you can print or add to you LinkedIn's profile!

If you find a challenge too difficult, freeCodeCamp's offers you a hint or the possibility to ask for help in the forum, which is really convenient!

# Certifications
Now I will tell you about every certification in freeCodeCamp and my experience with them.

### Responsive Web Design Certification
This is the first and most accessible certification of all and the place to start if you have no experience in programming. Here you will learn HTML5 and CSS3 to the degree of making basic but full responsive web pages.

I had a bit of experience with HTML when I started fCC and as CSS had always been a mystery for me I started here. The platform explains in a very simple way how a tag works and how you can combine them with CSS to make basic web pages. CSS will be your only challenge here, and can take you some time to get the grasp of it, but nothing too difficult.

The projects you have to make are very simple but engaging. I have to admit though, that I found them too simple that I got bored and did the minimum amount of effort just to continue to the next one, but I have friends who enjoyed them a lot:
- **Build a Tribute Page**: It can be about a famous person or something you love. I have made two versions of this one to explain the differences of [CSS Grid](https://codepen.io/LeWanderer/pen/dwOLdQ) and [Flexbox](https://codepen.io/LeWanderer/pen/eLdQdO?editors=1100), but that is in another [post](https://dev.to/lmolivera/css-grid-vs-flexbox-1koi).
- **Build a Survey Form**: Like the ones you complete when registering on a site.
- **Build a Product Landing Page**: A page similar to the ones that try to sell you a specific product.
- **Build a Technical Documentation Page**: Similar to a Wiki. I had no idea of what I could write here so I just copied the theme in the example and later turned it into a [React Tutorial](https://codepen.io/LeWanderer/pen/LMEjmQ) (which I have just discovered has a small bug, sorry for that)!
- **Build a Personal Portfolio Webpage**: This portfolio is filled with the four previous projects you've made, so you can see how much you've learned!

I really enjoyed the experience of this certificate and would recommend it to anyone starting in web development.

### Javascript Algorithms And Data Structures Certification
Did you enjoy the previous certification? Did you have fun? I hope you did, because this certificate has given nightmares to everyone who has tried it.

You start discovering Javascript, how to declare variables, working with conditionals and loops, etc. When suddenly, you are left alone. I don't remember the exact challenge this happened to me, but I had been thinking for ten minutes and couldn't think of a single way to do the challenge, so I decided to try the hint. Imagine my surprise when I saw that the hint used a method I had never seen before! I thought that maybe I forgot a previous challenge, but no.

fCC asks you to do things you have not seen before and you will find yourself unable to do them. So, every challenge I was checking the hint and learning from there, which I recommend in this certificate. A lot of people told me that this certificate was easier if you read [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS), which is completely free. I didn't read it though, but maybe you find it useful.

The difficulty of this certificate makes new developers quit. And if you don't believe me, you can check on Twitter the amount of people who shared the first certification and never posted anything related to development again.

But hey, it is hard, not impossible. You just have to persevere, read books, search for another resources, ask questions or pair-program. It took me 2 months and I wanted to quit everyday, but believe it was really worth it. The projects are a bit difficult too:
- **Palindrome Checker**: You create a function which checks that the string it receives can be read the same backwards. This project came as Coca Cola on a summer day, I really had fun with it.
- **Roman Numeral Converter**: Converts integer numbers to Roman numbers. This one was difficult for me, to be honest.
- **Caesars Cipher**: You input a letter and it is changed to another. A small encryption project, very interesting.
- **Telephone Number Validator**: You make a function that checks whether a phone number is valid or not. Nothing to comment on this one, I made a giant if sentence.
- **Cash Register**: This last challenge makes you create a program in which a client pays for a product and you have to give change to them. This one took me days and made me discover why people hate Javascript: 0.1 + 0.2 is not equal 0.3, amazing right?

At the end, this certification was so hard to get that I have it as a trophy now. Of course, my knowledge of Javascript continued growing with the following certificates, so I don't think today these challenges would be a problem.

### Front End Libraries Certification
After suffering with Javascript, I was nervous about this one. But what I found was my favorite certification of all.

I was surprised the previous certification didn't explain how to use JS for Front End, it only teaches you logic (for Backend). But here you learn how to use jQuery and React (at a basic level). It also features Bootstrap, SASS and Redux.

The big problem of this certificate is that you don't learn anything in depth. fCC only shows you libraries at a very high level. It is your job to choose jQuery or React and learn them somewhere else to be able to do the projects of this certification.

At this point, after suffering in the previous certificate and studying jQuery/React by yourself, you should feel very comfortable looking for answers to your problems on your own.

The projects are really entertaining:
- **Build a Random Quote Machine**: Click a button and get a random quote which you can share on Twitter. I had a lot of fun with this one. You can check my project [here](https://codepen.io/LeWanderer/pen/aRwyrY).
- **Build a Markdown Previewer**: Write markdown, get text. The user stories of this project shows that you need an extra library, which you will need to figure out in order to pass.
- **Build a Drum Machine**: You make a "Drumpad" with buttons you press to make sounds. Another really funny project. Check mine [here](https://codepen.io/LeWanderer/pen/jegXJP).
- **Build a JavaScript Calculator**: A calculator. The funny thing is that you have 2 different ways of calculating values. This one was very difficult because I learned about the Shunting-Yard and Postfix algorithms. [Here it is](https://codepen.io/LeWanderer/pen/yQNeER).
- **Build a Pomodoro Clock**: Here you learn about the Pomodoro technique. You can check my project [here](https://codepen.io/LeWanderer/pen/wQmGPw) but it is not very stylish.

Even with the problems I mentioned, nothing compares to being able to render content on a browser for the first time. I really enjoyed this certificate.


### Data Visualization Certification
This one took me too much time to finish. I think it is because I had a lot of work to do at that time and the concepts never entered my head, I was able to finish every challenge but I have just finished the projects on this one.

Here you learn D3.js (a library for graphs) and how to use APIs by XML/HTTP requests (a very important ability for every Frontend developer).

After revisiting this certificate for the fourth time and being helped by others, I think I don't understand D3. Seriously. I was told that there are more accessible libraries for graphs so I didn't spend enough time to learn this library knowing that there are more easier alternatives.

Maybe you try it and you find it easy, who knows?

The projects are simple graphs, so I won't enter into details:
- **Visualize Data with a Bar Chart**.
- **Visualize Data with a Scatterplot Graph**.
- **Visualize Data with a Heat Map**.
- **Visualize Data with a Choropleth Map**.
- **Visualize Data with a Treemap Diagram**.

This projects are fairly simple. The complexity of this certificate is understanding D3. At least you get a very important skill: Making API calls.

### Apis And Microservices Certification
The fifth certification is a very important one: We stop learning Frontend and start using Node.js for Backend. Sadly, this certificate is very buggy and you will spend a lot of time trying to pass a single challenge because the tests won't validate.

As i said, you will learn Node here and all it has: Managing packages with NPM, using Express to serve files and your first NoSQL database, MongoDB (in MLAB).

There is too much to learn, I have to admit that the concepts of this certificate where a bit complicated for me and I had to do the challenges several times. But what helped me understand Node was [this Flask tutorial](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world). Flask and Node are very similar and I was able to learn concepts with Python that I easily applied with Node, so I suggest you check Flask (Python) first.

The projects on this certificate are all about making APIs:
- **Timestamp Microservice**: You send a date and the API sendsback the date in string form, and viceversa. Nothing too exciting.
- **Request Header Parser Microservice**: An API that gives you the information you send to the sites you visit, like which browser you are using. The information is interesting but is not that fun.
- **URL Shortener Microservice**: You send a URL and your job is to "short" it and when you access the short URL you should be sent to the original site. Really useful API.
- **Exercise Tracker**: A tracker API which saves the times you exercise. The most useful project in my opinion.
- **File Metadata Microservice**: Upload a file and receive its metadata as response. I didn't find it useful at all.

As soon as you grasp the concepts of making APIs in the first project the others will be very easy to do, so this certificate was fascinating at first but I gradually lost enthusiasm in the projects.


### Information Security And Quality Assurance Certification
The last certificate is Backend again, but with a (even more) wide variety of topics. Here you will learn how to secure your site with Helmet.js, about Quality Assurance and Unit Testing with Chai and Mocca, template engines with Pug, authentication, password hashing and sockets.

This last certificate has the same problems as the previous one: It is bugged and there are too many concepts to learn. You will struggle a bit but nothing too serious.

The projects provide a simple Frontend and the basic structure for you to fill in the Backend:
- **Metric-Imperial Converter**: Converts units from Metric to Imperial and viceversa. Nothing too exciting.
- **Issue Tracker**: API to store/retrieve issues (like bugs). Similar to what we did with the Exercise Tracker.
- **Personal Library**: API to store/retrieve books you own. I found the idea of this project interesting.
- **Stock Price Checker**: API to check stock prices. The URL fCC gives you to do the project doesn't work so you have to figure how to do this project.
- **Anonymous Message Board**: A Board, like 4Chan.

This certificate was a bit tedious to me, as I was impatient to finish it and go back to the projects on the fourth one to finally claim the Full Stack certificate.

# Conclusion
freeCodeCamp is a bit bugged and has some errors in the way challenges where designed. This could be seen as a problem, but in reality you are going to work with a lot of bugged programs and will need to figure on your own how to proceed with things, so I see this as a training for a real job. Stuck? You are going to ask someone (write in fCC forums?) for help, you don't understand what a piece of code does? You sure end up in StackOverflow, and so on.

I recommend freeCodeCamp to anyone who wants to learn how to program, but not alone. I really suggest you go through the challenges with a friend, as the platform encourages pair-programming, so when one has problems the other can help.

# Final words
I hope this review was useful for you. What do you think of freeCodeCamp?

*Thank you for reading. Don't forget to follow me on dev.to and Twitter!*