Monday, September 03, 2012

Don’t Panic

The other day I was looking through the analytics for this blog to see what sort of searches people were doing that let them here. Mostly I was seeing things I expected to see but one stuck out. Someone had searched for the string “i am scared of programming.” I suspect that the searcher was not afraid of the act of programing but that they were afraid that it would be too hard. Or perhaps that the course they were taking or thinking about taking was too hard. Although it is possible that the act of programming was scaring them. Some people are afraid that they will “break something” through their programming activities. In any case there sees to be a lot of fear around when it comes to programming. It may be one of the things that keeps people away from the field.

A bunch of years ago I wrote a textbook for learning Visual Basic 6.0. When talking with my publisher I joked that I would like the words “Don’t Panic” in large letters on the cover. The more geeky in the audience will remember that being on the cover of “The Hitchhiker’s Guide to the Galaxy.” One of the big goals of that first book was to be a friendly, gentle  introduction to programming. Scaring people was the last thing on my mind. I don’t want to scare people away from programming and computer science. I want to attract them TO programming and computer science.

So what is scary about programming? For many it is the syntax of programming languages. The semi colons, the curly braces, the simple words in strange configurations, and the fussy way that programming languages what instructions to be specified. Recent years have seen the development of several languages, or environments perhaps, that have tried to avoid as much of the syntax problems as possible. Environments like Scratch, Alice and Kodu have gained a lot of usage particularly among teachers teaching younger students but even among teachers of older students. These tools allow the introduction of programming without the “scary” syntax of most major programming languages. Students using these environments learn that they can program and that it need not be something to be afraid of.

These tools are great and I love them but they have some limitations. One of these limitations is that they are essentially “walled gardens” and the programmer can only operate within these environments. At some point one has to move on to more traditional programming languages. One hopes that most students have more confidence about the idea of programming when they make this jump and that the syntax will no longer seems as frightening because the concepts will be familiar.

One of the other things that seems to scare some people is the literalness and the pickiness of “computers.” One really has to be pretty particular about how one gives instruction to a computer. It seems like the slightest little error – a typo, a missing semi colon, a letter in the wrong case – can make everything fall apart. For someone who is not used to being a detail oriented person or someone who just wants the computer to “do what I mean” programming can be frustrating. And yet bugs are not a time for panic but a time for patience.

I think some people are also fearful that they will not be able to combine the problem solving with the syntax and fussiness of programming to get something that does what they want the computer to do. When taking a course the fear is that this will lead to poor grades. I’ve seen more than a few students avoid taking a computer science course because of the fear of getting a poor grade. It is unfortunate that the focus on grades gets so high that it overshadows the value of actually learning. That does happen though.

What ever the source of fear I think that often that is the biggest barrier to entering computer science for many people who have the opportunity. Far too many people don’t have the opportunity for formal education in computer science and programming in K-12 of course. And that is a large problem. But in schools that do offer computer science and/or programming I think fear keeps many from even trying. And that is unfortunate.

How do we get the word out that there is no need to panic? Friendly tools like Scratch, Alice and Kodu can help a little. I think that themes that really gather students interest (gaming, phone development, etc.) can help motivate students to move past their fear. I think that introducing computer science (which is more than programming) at an earlier age can help prevent fear from developing. I think we can create more early courses in middle school (or earlier) that introduce the concepts more gently can be helpful. I know that a lot of people are concerned about reducing the rigor of CS education. This make sense of course. We all want an AP CS course that is really a college/university set of rigor. But we don’t teach AP Calculus to students who haven’t learned arithmetic first. In fact we usually expect students to have many years of math courses before they get to AP Calculus. And still no one says “you’re not giving enough rigor in math” because we realize that you have to work up to some things. We need that sort of attitude about computer science as well

Here we run into the old problem of no time in the curriculum. This is a tough one. The answer is probably something involving incorporating computer science into other parts of the curriculum. We’re a bit short of properly trained teachers for that which is an issue. Like so many problems though panic is not the solution. Neither is just giving up. We need to sit back, analyze the problem, develop a plan and execute it. Sounds a lot like programming doesn’t it?


No comments: