You hear it all the time “all the resources you need to learn computer science are online!” and “you can get help from professionals in online forums.” Sure you can. It’s all true. Does it work in real life? Absolutely! Does it work for everyone? Not a chance! Will it work for you? Who knows!
Ok now the details. There are a lot of online courses one can take. And people do take them. Completion rates are abysmal though. Let’s face it they don’t work unless a student is highly motivated. One also has to know they are interested just to sign up. That means they are not so good for getting people interested in the first place.
Asking for help online is even more problematic. This article - Friction Between Programming Professionals and Beginners – goes into a lot of detail and I recommend it. The tl;dnr version is that professionals can be very impatient, even nasty, with beginners. And that makes things unpleasant for many. You need a thick skin to ask for help online in far too many cases.
Beginners do best, I believe, with a patient supportive mentor. It’s hard to find one of those online. In the classroom they are the norm though. A classroom teacher, teaching face to face, can do a lot that an online class cannot do as easily. Projects can be more easily adapted or adopted that meet the interests and needs of a particular class. They can even be personalized to meet the different learning styles of individual students.
A classroom teacher is bound to be more supportive of “stupid questions”, of repetitious questions, and of questions that are poorly expressed. Being a teacher is more than being an expert in the material – it means being an expert in explaining things. I’ve done a lot of trying to help students/beginners online over the years. It’s a lot easier in person though.
What I think it key though is that in school one can have required courses. A well-designed course with a good teacher can really spark an interest in a subject for a student. And even more importantly a good teacher can help students to continue when things get frustrating. And things do get frustrating while learning computer science.
So while online can be useful, and after school programs can be great, what students really benefit from is a face to face class with a good teacher.