A couple of things struck me when I came across this post on the Udacity blog about a recent Udacity CS 101 student applying their newly learned skills at work. The first was that Rick, the student in spotlight, was in fact not a total novice programmer– in fact he regularly programs at work. The second was that despite this regular programming experience (in C#), he seemed genuinely surprised that programming concepts in Python could transfer into his C# programming repertoire. He said,
I primarily code in C# and C++ at work, so I did not expect for much of the stuff in these Python-based courses to transfer over. I was expecting to learn Python and get some practice solving some programming exercises.
On the first point, this reminded of something relevant previously mentioned both by Audrey Watters at InsideHigherEd and Mark Guzdial at Computing Ed: that such online learning courses may be making a larger dent on experienced or gifted students than the ones who truly need the help. In particular, I was surprised by Watters’ observation that these courses were drawing more experienced programmer than true novices:
But clearly a lot of folks – particularly some of the ones that were really active on the forums – weren’t at an “introduction to CS” level, but were well beyond that (in fact, I was surprised at the number of students who said that they were professional Python developers).
Not that there is anything wrong with that I think. Based on the discrepancy between people who graduated with professional degrees in CS or the related and people who do end up programming or becoming professional programmers, it would seem that there are a lot of self-taught programmers out there who clearly stand to benefit from this type of instruction. On a closely related point, Udacity and the likes are also more likely to be used by the gifted or the rich, who can spare the additional capacity in their lives. Again– there is nothing wrong with that, but it remains an interesting problem to resolve: how can we bring these resources closer to the lives of those who may have the most to gain from it? What kind of efforts, beyond the virtual platform, do we need to implement to effectively leverage these instructions? How does a real school help to do that?
The second point is slightly more subtle. I was surprised by Rick’s surprise– it showed to me that there are many people out there programming without truly understanding the essence of programming. I would bet that there are many out there just like Rick, who dabble in programming or are self-taught programmers, who have focused most of their efforts on learning programming languages that they never realized the common logical backbone that is in so many programming languages. It does venture into a somewhat theoretical space, but I think many would stand to benefit from investing some time to understand these abstractions from the get-go. It also makes me think, once again, that you can become a better programmer if you can be exposed to at least more than one programming languages from early on– so that you are not trapped in the workings of a single mental model.