I can speak from my own experience.
Let me first say that I was not consistent in my learning, especially at the start. Sometimes there were gaps of a month or multiple weeks. I’ve been learning to code since February, last year. I have never had any experience before. So that makes it around 1 year and 2 months. Out of all that time, I think you can honestly count maybe 10-11 months.
Freecodecamp gave me the real skills, which were the projects. The process of hitting a wall and seemingly plateauing (which now I know is a part of the process too) I found was really, really beneficial. It was kind of like I knew a lot of the basics, but when you start putting the whole website together, you realize you have no idea what the hell you are doing. You push through, you learn and you learn how to build. I think that’s what freecodecamp has given me most - the skill to build, the logical thinking of a programmer. Putting the pieces together.
All in all, I feel like codecademy gave me a good solid base and freecodecamp actually taught (is teaching) me how to code. I, personally, feel like freecodecamp throws you into to the water a tiny bit too early. Maybe it’s just me, I don’t know. I just feel like that if I did not know the basics, I would have unnecessarily struggled through freecodecamp. I think the main way to learn is by doing, which in the case of software development is writing code and building, but I feel like it bottlenecks the progress a bit if you do not know the basic basics and start so early. If I were to do it again, I’d do it the same way. Perhaps I may not have done 2 courses for each topic, but I would do it the same otherwise.
OH. And also! I want to mention that freecodecamp has the best community I have ever seen anywhere. Which is a big plus! People are very helpful and friendly and will give it to you straight when necessary. Codecademy’s community was a bit more cold, I think.
oh wow! that’s a lot of notes!
I did not know in what way you wanted the information written out. I thought It would be easy to read since I split it into paragraphs. I hope I still helped you or somebody else. At the end of the day, it was just my experience and my opinion. Perhaps someone might come and say the opposite.
By “bottle-necking” (This term is not exclusive to software development. It can apply to many things) I meant that you can put in a lot of work and effort (which is the bottle) to try to do something, but if you have very limited knowledge (which is the neck), it slows down the progress. Sometimes learning a bit a bit of theory first, speeds the whole process up in the long run, rather than trying to do something and learning with bits and pieces on the fly.