Should programming be taught as a basic skill alongside reading, writing, and math?

3
1465
Posted by Cory Schires, community karma 1465

I'm sure that sounds crazy but bare with me for a few paragraphs. Reading, writing, math – we use these skills everyday. It's hard to image surviving even a few hours without reading a headline or counting pocket change. And programming certainly is not in that same category. 

But I think it's headed -- rapidly -- in that direction. Two hundred years ago, you would have had trouble making a case that everyone needed to be literate. It simply would not have been a pressing concern for most people. But the world has changed and now not being able to read would be like having some sort of terrible disability.

I think the same thing could happen with programming and, given the way technology compounds, it could happen more quickly than we might expect. Already, when sufficiently complicated, computers can seem magical. For example, how is it that I trust Netflix to recommend movies more than my close friends? 

The fact is, for most of us technology has already outpaced our ability to understand how the hell it works. Maybe that's fine. Maybe you don't care how Amazon recommends books or Google ranks search results. But you don't even have a shot of understanding these questions unless you've learned some programming.

I think it's important to teach kids to code – maybe as important as reading, writing, and math. How else will they make any sense of the increasingly technological world they're sure to inherit?

about 13 years ago

6 Comments

3
1466
Rob Walsh, community karma 1466

I think it should be taught.

But I do have some caveats.

I think there are some problems that must be solved before people would take the idea seriously that it is a fundamental skill to be taught. The two most prominent being:

  1. Isn’t programming just a bunch of 1s and 0s?
  2. When am I going to use this?

I know people who learned some programming in high school and this usually revolved around languages like C++. That’s not necessarily the most easily readable language for the layperson. I’m sure you would agree that languages with some kind of semantic meaning should be those that are taught. For instance, a language like Ruby. Seeing code like:

mysentence = “Hello there”

mysentence.reverse

has a lot more semantic meaning to the individual than  a random statement in C code. A layperson could totally guess what that code does.

I think that we need to be intellectually honest with ourselves in what people are expecting to be able to do with what they learn. People, especially younger ones are familiar with web sites, not a command prompt. We need to tell them, “Yes, we can show you how to make your own Facebook or Formspring” but that it’ll be an iterative process involving multiple steps:

  • learning HTML
  • learning CSS
  • learning Javascript (which is a programming language)

Or maybe teaching people a language like Javascript and showing them that they can build games.

So yes, I agree that programming should be taught - I just also think it should be taught in a way that makes it accessible and immediately useful for people.

about 13 years ago
I'd agree with all that. I certainly don't think everyone should become a web developer. I do think, however, learning a programming language (especially a newer one like ruby or python) will give you a new way to think about solving certain problems -- specifically problems that involve monotonous tasks or large data sets. Say, for example, you need to rename a bunch of files or update a large spreadsheet. Programming languages are very good at solving these type problems and, in turn, saving you from the terrible monotony of doing something like that by hand.
Cory Schires – about 13 years ago
Looks like folks in the UK agree with you - "Coding in the New Latin:" http://www.bbc.co.uk/news/technology-15916677
Rob Walsh – about 13 years ago
And here's yet another one: "Programming is for Anyone" (a newer in progress Ruby book): http://bit.ly/uhqITu
Rob Walsh – about 13 years ago
login to leave comment
2
149
C. Sean Burns, community karma 149

Ditto the above. However, I'd go even more fundamental and introduce some basic logic first. And, when it comes time to learn a specific language, teach the language and not an application (e.g., Dreamweaver, et al.).

about 13 years ago
login to leave comment
2
47
Aaron Kandur, community karma 47

It's fast becoming an essential skill, there is also the possibility of using code as an interface to allow students a more salient experience of math, calculus, and probability, which can be illustrated beautifully in a coding environment and might be made more intuitive. I wish I was exposed and encouraged when much younger, I would be much further along in terms of my quantitative abilities.

Another issue is that as technology expands people naturally desire to interact with it in more and more complex ways, the information density achievable with code is one of its most important attributes.  The fact that you can tell a computer to do a complex thing in a shorter amount of time in a coding environment than any other way (currently) means its utility has a lot of ground to gain yet.  As cory is suggesting in order to understand the modern world it is increasingly important to understand something about how the information we consume is produced especially given the fact that every aspect of our lives is increasingly being mediated by programmers.

Also to those who question whether its too hard to learn to code or whether very young people can learn to do it should consider the complexity of learning to write an essay in english (or whatever human language).  If we consider the prospect of writing down all the levels of rules and subjective decisions that must be at least reasonably solved to do so and compare this with the prospect of writing a simple program which will either run or not (ie you find out if you screwed up instantly) it is not clear to me which would be more difficult.  I think the issue with teaching young people boils down to two things: 1. access to computers and the internet (which is being rapidly solved) 2. Suitable motivation-(which is the primary thing lacking in most education). 

about 13 years ago
login to leave comment
1
227
Jeff Lundy, community karma 227

I don't know if coding *must* be taught, but I agree that it will quickly become one of the most important skills students can learn, and is certainly as fundamental as math, science and reading. 

In fact, I think of coding along the lines of typing classes (do they still teach those?  or are kids just getting it through osmosis now?).  Frankly, processing data is a larger and larger part of many jobs, just like word processing was an increasingly important technology 25 years ago.  As data processing becomes more diverse, the need for automating tasks is growing.  The current tools out there (Excel primarily) require way too much copy-and-pasting.  It's ridiculous the lengths one must go to do basic tasks in Excel, when the same task would just be a few lines of array manipulation in your standard programming languages (or of database manipulation in SQL).  The flexibility to automate processes that are unique, short-term, and diverse means that you need to have some kind of programming knowledge.

Now, I imagine programming will be taken up by students at differing degrees.  Some will learn it very well and others will just gain a passing familiarity. But, that's the same as math, or science, or reading (or, to follow my example above, typing). 

 

 

about 13 years ago
login to leave comment
1
241
Huong Le, community karma 241

While I agree it is probably a useful skill (and will gain usefullness in the future) I don't ever see myself being able to read/write/etc code. Confusing!

I also think that you would run ito the same gap in access/resources as you would with any other type of learning---those with lots of resources (upper-middle class, wealth, money) will be the ones that excel. Or even have access to the technology. While those in poorer schools probably won't even have working computers.

about 13 years ago
You couldn't see yourself doing it, but I can :). As far as access, I'm sure there will be some access issues exacerbated by socio-economic status - but it's not the same as when computers were huge mainframes and very inaccessible. Furthermore, there are tons of free resources out there like the Try Ruby tutorial I linked to in my answer.
Rob Walsh – about 13 years ago
login to leave comment
0
172812
Brian Cody, community karma 172812

I wanted to draw your attention to a board game that seems to be a tool ripe for producing your own child-expert-developer army: C-Jump.

Here is the game's description:

What if we told you that you could learn the basics of computer programming by skiing or snowboarding down a mountain? Nope, you don't have to put on your snow pants. Or your hat. And really, you look silly in those goggles. All you need to do is pull out your copy of c-jump and start playing!

In c-jump, to win the race down the mountain, you must think like a computer programmer! Designed for middle school aged geeklings (or older geeks new to programming), c-jump teaches basic programming language commands like "if", "else", and "switch" and also introduce variable "x" concept. By moving around the board, entering loops, branching under conditional and switch statements, players get an understanding of how computer programs work while having fun.


about 13 years ago
login to leave comment