I have already written about FreeCodeCamp. Now some time passed and I am on my way to earn their first certificate. And I have seen things which I have to tell you because the site is not as good as it could be. Let me explain why.
At the beginning it is really exciting: you get a task and a description on how to solve it. The tasks relate to new programming paradigms or coding constructs which are described beside the on-line editor and/or links for further reading are provided.
This is superb. I really like the idea of trying out code while learning. And if you get guided tasks to solve these tasks I really love it. And this is the case with FreeCodeCamp too.
What’s the matter then?
It seems like I really in fond of the site. But why do I say in the article’s title that it is not the best?
That’s because after learning the programming concepts you get tasks to solve. For the first certificate they are different websites. At the beginning they are easy but they get harder with time.
Getting harder tasks is not bad to test your knowledge and understanding goes deep enough. But here you get tasks to use constructs and libraries you did not learn about.
Sometimes a solution you can create with the methods learned along the path is not beautiful. Sometimes you cannot do it at all. And the examples you can take a look at (which you could reverse-engineer) are written in a language which makes such tasks easy because the developers already know that most of the time you will struggle with this and provided a solution.
For a later certificate, data visualization, you do not get any learning material. This means you are on your own to solve the required challenges to earn the certificate. And this is kind of bad — but they are free.
Why should this be good?
The idea behind all this is to share knowledge. Every time you have a challenge to solve they give you the following on your way:
Remember to use Read-Search-Ask if you get stuck.
Well, sometimes it would be better if they would provide some more material on the task.
For example the last challenge: building a Simon-game. Here you will need to learn audio processing, synchronization between effects and audio, timing and some more stuff they never taught you. And naturally you have to ask and ask and ask to have basic idea how to get your things done with the tools you already learned. But it is the hard ways.
Currently none. I am not deep into web development to know about sites where you can learn many things and get challenges to solve. At least not for free.
I like Codecademy. They have learning paths but have premium contents which you will need to deepen your knowledge.
Treehouse and CodeSchool are paid services. They have a lot of video tutorials and tasks to solve. Treehouse gives you mentoring and challenges, CodeSchool only learning material.
Sometimes Coursera offers web development specializations too. The learning is free if you do not care about certificates. If you want some paper that you did the course then you need to pay. And for the capstone project at the end you need to have all the certificates so it is a bunch of money you have to invest.
FreeCodeCamp is free and you can get started with web programming there. You not only get learning material but challenges to solve. For some challenges you do not get the material but have to learn for yourself and it will take much time.
I suggest you start with the site and if you do not aim for the certificates you have a good go. You can learn a bunch of things which will give you a good start on your web development hobby to evolve it to a career.