1 July 2012
Blockly has been very well-received in the educational community over the past month. This is great, since Blockly is a great way to separate syntax from logic and allow novice programmers to fight one battle at a time. Once the basics of 'if' and 'while' loops is learned, Blockly's exportable code makes it easy to migrate to a text-based language.
Unfortunately, the teachers most interested in Blockly are high school CS teachers. This makes me cringe. Learning your first computer language is much like learning a foreign language; it's almost trivial at an elementary school grade, yet it is terribly difficult if one waits to high school. To check my assumptions, I took a survey of my engineering coworkers.
The first question was, By what grade could you have implemented a program that printed "Hello" forever? E.g. 10 PRINT "Hello": GOTO 10
The result was pretty clear, most of my coworkers started at grade 4. Although the survey was anonymous there were hints that those who started in later grades belonged to an older generation (FORTRAN was more likely to be reported as their first language). In a nutshell, if you haven't started programming before high school, you probably won't be a good software engineer. This is problematic given that most of the current generation of students in the US don't encounter their first programming class until high school.
The second question was, By the time you graduated High School, what ratio of your programming knowledge was school-taught vs learned in other ways (self, family, friends)?
The result was downright disturbing. We spend years teaching programming in school, but the majority of those who actually go on to become programmers don't learn anything from these classes. Again, there were hints that those few who did learn something from school were part of an older generation who did not have access to computers outside of school.
It would be interesting to do a larger survey, broken down by age, nationality, and gender. But it's pretty clear that waiting till after puberty is not a winning strategy. The solution to CS education is not to use Blockly in high school. The solution is to introduce students to programming in grade 4 and encourage them to explore.