After running a coding bootcamp for some time now I have noticed a strong trend shared by many students who tried one of the platforms like freecodecamp and codecademy – they have no idea what they are doing.
Don't get me wrong - they are all great initiatives. The problem is the approach they use and the promises they give. Lots of students coming to our school share the same puzzlement – I did some (place name of any self-teaching coding platform here) but I have no idea how to build a real app and combine all the pieces together.
So how do they teach? The entire program is divided in hundreds of tiny chunks with all the same pattern:
- example of some particular operation
- task asking to recreate the same example but, let's say, with the different content
- window with built-in code editor
- area which renders the results
- validation button to pass to the next step
You are basically learning by repeating the example and to pass validation it has to be solved exactly in the expected way. So no variations, no different approaches, just follow example in a dead straightforward way.
And we all know that in programming if you give same challenge to 10 people you are going to have 10 different approaches.
So what they learn during this process is how to follow and recreate the examples not how to think logically, look for your own way to solve challenges and not even close to how to combine all the bits and pieces into a solid app.
And by the time they get to the project time of course students feel frustrated since nobody showed them how to apply all those bits and pieces to the real project.
Another issue is that if you get stuck on one of the exercises the only options you have is to search for help online – in the community of the platform you are using, googling or, for sure, stack overflow. Since this process takes time obviously students loose focus, become frustrated or switch to something else while waiting for reply and then get back to their coding which requires extra efforts to dive into what they were doing again.
And of course we shouldn't forget about all the possible bugs in the platforms then you have perfectly fine solution but it doesn't validate just because there is a tiny bug in the platform or your solution is slightly different form what is expected by the testing. It could be totally fine, but just not for the platform.
Of course there is a subset of people who are incredibly good at self-learning and they go through the course while actually learning. But how many of them there are?
This article from last year claims freecodecamp has more than 1 million students, by now probably much more, could be around 1.5 million? Now let's take a look at stats page of FCC which is up to date. More than 10k beginners found their first developer's job and 12k experienced developers moved got better jobs after doing the track.
What about certification? Only 500 students got full set of certificates form FCC, 821 got back-end certificate, 8809 got it for front-end.
So let's calculate: 22 000 / 1 500 000 makes 1.46% successful stories. The rest 98,54% just wasted their time and probably either became disappointed in the whole Everybody should learn to code thing or moved on to the coding bootcamps/schools.
Putting these numbers to the coding bootcamp concept will give us terrible results, lets say from 5 cohorts per year with 20 students per cohort we would have 1 (or 2 at best) successful outcomes. Really? How well does this model work?
I really believe that it is possible to create the fruitful environment to teach people coding online without actual persons mentoring it's just that nobody so far figured out how to do it. So the live mentor is still crucial element in this process - to answer questions and avoid being stuck hopelessly for a long time, to review code and give feedback and (ideally) to explain new materials in the way how it is connected to the real life apps.
What I'm trying to say here is that thinking about doing one of these self-teaching platforms as a guaranteed way to land a dev's job is a bit naive. Giving up the dream of becoming a developer after trying just them and failing is not such a good idea either.
Please don't give up if you tried and failed with one of such platforms. It doesn't mean you are not made to be a developer. Most likely it means that the teaching approach they have is not suitable for you (and for 99% of other people).
I'm thinking that those platforms could be a great way to try things out without making any conclusions in any possible outcome and they could be a great way to prepare for the actual coding bootcamp which will provide a clear, structured and continuous process to understand the global picture, the entire process of building an app and all the use of those exercises they solve before starting building their app.