The Hour of Code, is a very popular event and activity hosted by Code.org. Millions of students around the world participate in the large coordinated events, and continue to use the website to learn programming. Code.org is a good resource to get students and teachers interested in programming.
In the last year I have listened to numerous educators and administrators comment how their school participated in The Hour of Code. In many instances, I felt that these people believed this single event, and or uncoordinated participation of classes on the Code.org website, constituted a real effort in problem solving, computer science, design, and programming. I have news for everyone, an hour of programming, or even a month on Code.org, is only a half-step on a very long journey.
When an educator thinks about the word mathematics they will cycle through categories of mathematics. These include, but are not limited to, geometry, algebra, trigonometry, calculus, applied math, statistical analysis, etc. Computer programming, no matter how graphical, has always been based on mathematics. If a student asked if they could do math for an hour once a year would that be celebrated?
Students would need to be exposed to at least three of these languages in order to find meaningful understanding outside of the classroom environment. In a balanced programming curriculum, students would spend at least a year with a new language, while incorporating any other languages they have learned.
The scope is immense. Within each language are tools and nuances that need to be explored. A student does not need to master three languages, but they need to know how to read them, research within them, and implement solutions by following best practice design patterns.
Programming (Coding) is not Computer Science (CS)
In a programming module or course, students can freely create, and create for a variety of audiences. Students can solve problems, make random games, or simply create a utility to improve a user experience.
In a computer science (CS) module or course students need to look at a problem, study a set of data, create a hypothesis, and test that hypothesis. Here is an example of a computer science activity.
Spending small amounts of time exploring programming does not develop the skills needed to engage in CS driven initiative. K-12 curricula need to specifically define CS modules and standards. Educators need to be cautious of students working without testing ideas and well articulated theories. Accidents happening outside the context of understanding will often be confused with competence.
In the book Outliers, author Malcolm Gladwell says that it takes roughly ten thousand hours of practice to achieve mastery in a field.
There are 52 workweeks in a year. The standard North American workweek is 40 hours long. That is around 2080 workweek hours a year. In roughly five years, a person could develop a new mastery if they solely focused on that endeavour.
Students, however, cannot do the same thing everyday for five years. Students need a well rounded education, and time is in high demand and short supply. In fact, if students used only their scheduled time for programming, they would need 17-21 hours a week for 13 years, to reach 10,000 hours of mastery.
I am not an advocate of an unbalanced and obsessive lifestyle. To help students choose a healthy and steady path to mastery, the curriculum needs to encourage independent study, portability, and third-party opportunities.
Independent study is critical to develop competency in programming or CS. Independent study requires students to find problems and propose solutions. Teachers giving students problems to solve on a flexible schedule is not the same as a true independent study.
Portability simply refers to the students ability to work anywhere. Students are people, and people find inspiration in the most random of places. When inspiration hits, work needs to happen.
In 2005-2007, I developed a partnership with Sun Microsystems in the Middle East and my school. They had a training division (and separate training company). I wanted my computer science students to learn Linux with corporate professionals. This third-party relationship was the first I had ever created for students, and it was one of the best opportunities I have ever given students. Schools need to make these relationships, and if possible, allow the experiences to happen off-campus.
Programs like The Hour of Code are fun and engaging. However, as educators and professionals we cannot lose sight of the goal. All of us must help students find new opportunities, choose a path to mastery, and keep them moving after 100s of potential hours of disappointment.
Mastery does not mean you are finished learning, it means you have accepted you will never stop learning.