I recently finished freecodecamp beta, below are my experiences.

There are more good things than bad things in the new version of freecodecamp, but the bad things worry me quite a bit. Don’t get me wrong, Freecodecamp beta is superior to the current version, the projects are more thought out and the information provided to you is of higher quality. But while the new curriculum is objectively superior, the tests imposed on you are really harmful if you’re trying to learn, at least that’s how i felt when i began on FCC beta, it felt like a videogame that interrupts you every 5 seconds for a cutscene(ahem final fantasy ahem) when you just want to play and have some fun. That’s why i ignored the tests completely. After that everything went smoother and my experience without the tests was almost perfect.

Responsive web design

For this curriculum i took the time to learn different CSS libraries outside of Bootstrap, i used Milligram, Bulma, Pure.css and a few others, i mix and matched between them and even tried to create my own (but i gave up).

Front end was always my weakest point and i focused on doing the projects as well as i could, i was never an artist and artistic creativity was always hard for me, i had to polish on Javascript and CSS, and i researched anything i didn’t know, for example instead of using IDs and classes to target things on my CSS, i decided to learn more about effective selectors usage. That really pays off (and it’s quite easy to learn).

Even though front end is still my weakest point, the “Responsive web design” projects are challenging enough to allow you to learn through pure practice. Unless you use the test suite.

After completing all projects i came back and did the tests, and i can’t honestly say that they help you in any possible way, the test suite is absurd at some points, asking you to add videos, navbars, images and other aspects that should not be obligatory, a project should be the time to explore, what if you want to use SVGs instead of images? What if you don’t need videos for your idea of a landing page? The tests basically take that away and leave you with a copy of the official freecodecamp solution. Even if you try very simple things like using flexbox or more modern methods to manipulate the DOM, the tests can break. It’s beyond frustrating, when i did the tests i felt like i was copying FCC’s solution, that my effort wasn’t really worth the time it took to learn on my own and i should just stick to the script.

Of course, nobody is forcing you to follow the tests, but most people will follow them, and testing something so subjective as front end solutions is basically impossible in a meaningful way.

Javascript Algorithms And Data Structures

While there isn’t anything that i would remove from this curriculum, there’s a lot that could be added. For one, all exercises are just it, exercises. You don’t implement data structures nor do you use any of the classic algorithms, this curriculum would greatly benefit from an “advanced javascript” part, where you actually implement popular data structures and algorithms in Javascript, compared to the other areas, Javascript feels rushed and quite lacking, it doesn’t push you to grow as much as the other challenges. Algorithms and data structures are most often what self-learners lack when they get professional, it’s important to know these things, sometimes essential.

The curriculum could also have a few ES6 challenges, some exercises ask you not to use ES6 because otherwise it’d be too easy, that’s only a sign that these challenges need to be updated before beta is over.

These challenges are not bad, but they’re also not very good. Javascript is a tricky language, the environment works in a weird way, there’s hoisting and weird reference play in some frameworks like React, these corner cases are necessary for any professional and could be covered in Freecodecamp.

Front End Libraries

Now this one was tricky. I think it was the most difficult from a learning perspective, i did all of my projects on my local machine, so i had to set up webpack, react and redux and it was hell, i spent days on webpack configuration, and about a week trying to learn Redux (and redux IS really simple, but the documentation seems to have been made by satan, physically, in the flesh, he came to the earth and typed redux’s documentation). React was fairly easy to learn on the other hand, and after the learning process the curriculum projects were manageable. They grow in complexity as they go and it’s really an excellent method to learn React (and i advise you to try out redux if you ever plan to learn it, these projects are small in scope but extremely difficult to set up with redux if you don’t really understand what’s going on, it’s an excellent method of learning).

Even the tests on this one were pretty constructive, they don’t hinder the structure of your project nor tell you how to organize your program. It’s all from a black-box perspective. If only all tests were like this.

Data Visualization

After redux, D3.js is the most difficult one to learn, it doesn’t take as long as Redux but it’s such a paradigm shift that it takes time to really get what’s going on (if you don’t yet know D3, try to read D3 code and you’ll understand what i mean). After you learn the basics everything flows though, aside from the Treemap project, all other projects basically follow the same principles applied in a slightly different way, but it’s never something so difficult it’s frustrating. I feel like a horrible reviewer for not having more to say about React/D3 curriculums, they were really awesome in the way they teach you the technologies through practice, my descriptive abilities don’t go beyond that though. Suffice to say that you won’t encounter a wall of difficulty like going from “tribute page” to “simon game”. Each project builds on the knowledge from the last.

The tests in this one have exactly the same problems as the “responsive web design” curriculum, this doesn’t pass the test, but this one does. The reason is that i had to add padding to my projects, i didn’t have to, but i wanted to, and i kept the proportion of the data so the visualization wasn’t harmed. Should the second project really pass the test, even if the X axis is overlapping with the bars? And what if i wanted a completely different structure for the project, as long as it remained true to the goal (data visualization), why should anyone be stuck in a test like this?

Apis And Microservices

Thanks sweet baby jesus there are no tests for this one. But there are other important problems.

This curriculum teaches you “MongoDB/mongoose, Node.js/Express and NPM”. The problem here is that you only use mongo/mongoose for one project (URL shortener), all the other projects don’t need a database. They also don’t have the nice learning curve that the previous curriculums had, you basically have to do 5 identical projects that don’t really do much. The only project that doesn’t follow that rule is the URL shortener, other than that these projects don’t push you to learn more, it feels like one big project that you repeated 4 times, and the url shortener (which is the only one that is really interesting and pushes you a little).

The problem here is that, while this was supposed to be a mongoDB curriculum, you don’t learn a lot of mongoDB, and that hurts the Information security curriculum, because you end up having to do Mongo projects in the Information security area. It’s a neat way to get into nodeJS as the projects are easy enough that you don’t really have to worry about a lot but the basics, but if you compare the quality of these projects to the previous one, these are certainly the weak link so far. There are no projects besides the URL shortener here that i even remember doing, even though i did all of them. It’s like a forgettable movie.

Information Security And Quality Assurance

This is, sadly, the worst curriculum. The projects are excellent, the thing is that they don’t really belong here. All 5 projects heavily focus on doing CRUD operations on mongoDB, but shouldn’t that have happened in the APIs and Microservices track, where we learned about mongoDB in the first place? The focus of these projects is information security and testing, but what ends up happening is that your tests aren’t really meaningful, as most of them have to be functional tests (i think only one project allows you to do unit testing) and that’s really frustrating because the API projects would be perfect for testing, since they allow both functional and unit tests, testing should be a part of the API area. Aside from that, there is basically no security at all. The security measures you have to take always boil down to “import and use helmetjs”, for most of the projects you don’t even have to change the default configuration, it’s 2 lines of code.

The strange part is that this project has excellent articles about password encryption, session management, authentication and many, many other excellent, well written stuff. But you don’t make use of any of that, you’re stuck using 2 lines of code as all of your security measures. These projects were the ones i was most interested in, it’s the reason i joined FCC beta and did everything so enthusiastically, and i was really disappointed at the end of it. I love information security, it’s what i would do if i could go back in time and begin my career again, but i can’t say i learned a single thing about infosec in these projects, nor do i feel like i can add “security” in my curriculum even after doing these projects. Using a plugin is not information security.

Conclusion

All in all, freecodecamp beta is an excellent way to get into web development, my curriculum is entirely based on these projects and i feel more than ready to work as a fullstack programmer, i finished these projects 2 days ago, today i received my first response from a company and did a coding challenge for them, compared to the freecodecamp curriculum, programming interviews are easy. I highly recommend anyone interested in webdev to do these projects (i also recommend you not to do the tests, though).

I didn’t mention errors like weird project descriptions (or even inexistent user stories) because these are clearly temporary problems and not intentional implementations. The tests and projects are conscious decisions, and this is what worries me, as i don’t see some of them as benefitial for the people who will do these projects in the future.

I hope this feedback is helpful and is taken as an attempt to contribute to and not harm this community, i really enjoyed the FCC beta and i’m grateful that it’s something you can do for free, otherwise i wouldn’t be able to send my resume to companies with such confidence as i have now. But specially since i care so much about it that i must be painfully honest in my opinions.

Also, if it’s difficult to read or if there are any grammatical mistakes, just point me to them and i’ll fix it, i’m not a writer after all. I’m not even American. Cya.