3 ms·
I really enjoyed reading this piece. It echoed many of the thoughts I've had over the past ten years of teaching programming off and on, and many of the frustra
by zamfi 12y ago
I really enjoyed reading this piece. It echoed many of the thoughts I've had over the past ten years of teaching programming off and on, and many of the frustrations I've had with existing online learn-to-code tools. (I actually wrote one such tool back in 2007, an interactive learn-to-code webapp called the AppJet Learn to Program Guide.)
In my experience, puzzling through problems with quick iteration and support from a mentor is the most effective way to learn programming. Especially in the early stages, as Christina identifies, the hardest task is simply articulating an algorithm in English:
> For all the hemming about programming languages, the hardest part for these students was solving puzzles in English, not Java. Often, they’d skip to the Java, glossing over their logic. This didn’t work, but “forget Java for a moment; what are you trying to do in English?” and “How would you explain what you’re trying to do to a 5 year-old?” were the two questions most likely to unstick them. Once they explained the logic – “go through all the letters. If you find an A, swap it with the prior letter” – the Java came easily.
Nearly all online tools I've tried come up short in this regard, because of the major stumbling block that is building an accurate mental model (an "intuition") for how computers run your program. None of these tools tell you how to correct your mental model, because none of them really identify your mental model in the first place. For this, a human teacher is very useful!
Tools like the one Christina is building -- tools that allow for quick iteration and quick communication between learner and teacher -- are critical in that they let teachers focus on the hard part, on developing that intuition.
Christina, I fully support your effort to create tools that help humans teach other humans how to program!
- eriktrautman 12y agoThis! Having a human being available to stress-test your assumptions and uncover hidden weaknesses in your mental model is one of the biggest failings of both the "hold-your-hand REPL" tools currently used by many learn-to-code programs and the "broadcast from above" approach approach to classroom-style learning that the MOOCs embrace (though are trying to alter to be more student-centric). We noticed this awhile back and tried addressing it by setting up The Odin Project[1] to give students a way to self-organize around an opinionated and comprehensive curriculum. But, as the project grew, we found that many students dropped off due to lack of commitment and others who progressed far still had some major conceptual blind spots. A combination of these realizations and our successful work with small remote teams who helped to build Odin (which is OSS) led us to try a much more people-focused virtual approach -- highly supported online classes comprised of small teams who pair program on project work. The Viking Code School[2], in our first cohort right now, has so far managed to short-circuit those familiar issues. Our students are progressing at a phenomenal pace, especially considering that many of them are holding down jobs at the same time. One student build CLI Tetris in Ruby in week 2...[3] But the key difference between this and what we saw before is the human-to-human collaboration. Mental models are not learned one-way. We've invested a LOT of time trying to come up with the perfect way of explaining complex topics but no amount of videos, diagrams, and code can substitute for the 10 lines of back-and-forth you get when speaking to an instructor or another student which uncovers the true error of your thinking. All the other one-way teaching methods simply address the symptoms of the problem -- "You got this wrong, here's the right answer" -- when the real issue is almost always a slightly incorrect mental model. The future of online isn't better one-way tools, it's a conversation. </rant> [1]: http://www.theodinproject.com http://www.theodinproject.com [2]: http://www.vikingcodeschool.com http://www.vikingcodeschool.com [3]:http://www.geminstallmichael.tumblr.com/ http://www.geminstallmichael.tumblr.com/