Why We Should Teach Our Kids To Code
An anonymous reader writes "An article by Andy Young in The Kernel makes the case that lessons in programming should be compulsory learning for modern school kids. He says, 'Computers help us automate and repeat the many complicated steps that make up the search for the answer to some of our hardest problems: whether that's a biologist attempting to model a genome or an office administrator tasked with searching an endless archive of data. The use of tools is a big part of what make us human, and the computer is humanity's most powerful tool. ... The computer makes us more efficient, and enables and empowers us to achieve far more than we ever could otherwise. Yet the majority of us are entirely dependent on a select few, to enable us to achieve what we want. Programming is the act of giving computers instructions to perform. This is true whether the output is your word processor, central heating or aircraft control system. If you can't code, you are forced to rely on those that can to ensure that you can benefit from the greatest tool at your disposal.'"
Let's start with basic computer literacy and not pretend that computer programming courses for a general audience wouldn't be watered down and completely useless - a torture for those with some aptitude for programming and a waste of time for the rest.
I don't necessarily think that not knowing how to code on a practical level is really necessary for average Joe, but Mr. Young is definitely on the ball about the general idea. I took Computer Science in High School it was my major for my first year in college. It definitely changed the way that I think about complicated things and go about attempting to solve a problem.
Then again, perhaps it is just certain types of thinkers that are attracted to coding and actually doing it just helps hone this type of reasoning.
Do we want a generation of kids to grow up despising programming and programmers? Look at what the education system does to English Literature, Maths and Science.
Kids grow up loathing Shakespeare because it isn't taught in the same context that it was written for. Kids grow up to hate maths because they've been force fed the mundane basics since they were 5. Do we honestly think they'll do a better job with programming?
I'm all for a more thorough coverage of Comp Sci and ICT - of which programming is obviously a part, but it should be weighted to play to the strengths and interests of the individual students. Some students will take to programming, others to graphics and animation, but as soon as you start making stuff compulsory, you find yourself forced to water down the content and you end up sucking the joy out of it.
Those of us with Comp Sci university backgrounds will probably remember how miserable those students who didn't 'get' programming were. Do we really want to do that to kids?
I missed why this should be mandatory. I missed why we should attempt to educate kids who cannot read, do simple arithmetic, identify their MP (the writer is from the UK). I'm guessing this author grew up in a mostly white, middle to upper class area, knows mostly white, middle class people, and thinks the most pressing issues are the ones facing white, middle class people.
Jesus was all right but his disciples were thick and ordinary. -John Lennon
not sure whether it's a waste of time if you plan to become, say, a doctor, a plumber, etc...
A librarian with programming knowledge would be snapped up immediately (since most libraries are being forced to digitise their collections).
Someone who can speak arabic would be much better writing an english -> arabic translator than the vast majority of programmers.
If you're writing animation software, an animator who can program is much more valuable than a programmer who knows nothing about animation.
That's really the problem with recruitment though isn't it? There are plenty of programmers around, however there are very few people with (insert relevant skill here) who can actually program! Since CS tends to be the place where most people learn programming, how is that going to help us recruit a biologist with programming experience? Exposing children to programming at school gives them a chance to specialise in a subject other than CS, and still have a chance at employment as a programmer in the future....
As a software developer, I can see where the call for that comes from - but it's just about as misplaced as it could be. Software developers aren't the 'standard' the rest of the world should orient themselves by.
Developing software is a great skill to have if you're a software engineer -- not sure whether it's a waste of time if you plan to become, say, a doctor, a plumber, etc...
There are very few skills that _everybody_ needs to have for their normal day to day lives - developing software isn't one of them.
Whilst I agree with you that software development isn't a mandatory skill for all careers, I do think that it would be a good idea to give people a mandatory introduction to it at school and then allow them to opt to do it in the later stages of school. Remember that there are mandatory classes in many "non-essential" subjects already - why is it considered a good idea to teach kids art, music, geography, history, engineering (aka "technology") but not software development?
When I was doing my GCSEs (a little under 20 years ago), I ended up doing art and geography as my optional subjects. That wasn't because I thought they were interesting or useful (I firmly believed, and still believe that they were the most boring wastes of time I've ever encountered and have done nothing to usefully improve my education). Computer science wasn't available either as a mandatory or as an optional subject. As far as I know, it still isn't, 20 years later (yes, there are now useless "computing" classes that teach you how to use Word - something that maybe you could dedicate a lesson or 2 to, but I honestly don't see how you can fill an entire subject with that).
In fact, I would go so far to say that a rudamentary understanding of how software works (not just how to use it), would be far more useful to most people than the likes of art, geography, etc. Even if you're not going to have a career in computing, you're still almost certainly going to use computers and have to interact with techies, so having at least some understanding of how they work is helpful. I don't subscribe to the idea that understanding beyond the level that you are working at isn't useful - if you're writing software in assembly language then it helps to have an basic understanding of the physical chip design; if you're writing software in C it helps to have a basic understanding of the instructions that code will be compiled to, as well as how the operating system is going to handle your system calls; by extension, if you're using computers (and people from all areas of life do this, including doctors, company directors, etc.) then it helps to have a basic understanding of how the software actually works.
particularly - who knows what language and what paradigm will be 'state of the art' by the time the kid finally gets to use his/her development skills on.
I fundamentally believe that we shouldn't be teaching languages just because they are currently in use or state of the art. When I was doing my A levels and later when I was doing my degree, basic procedural programming was taught using Pascal, because it happens to be a reasonable teaching language. It is, however, a language that isn't really used in industry, but that doesn't matter because once you've understood the basics of programming, picking up a new language is easy. These days, the university I studied at has switched to using Java to teach basic programming skills, because industry alledgedly wants Java programmers. Java is a pretty horrendous language to use as a teaching language for people who have never programmed before, so it fails at that point. Even if industry does want Java programmers now, they probably won't in 10 years, so using that as the foundation for a degree seems daft.
As a company director myself, I don't want programmers who know a single specific language - we use a variety of languages (Java is not one of them), and which languages are used periodically
http://blog.nexusuk.org