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.
Where I work, we have secretaries copying and pasting (using a mouse) passages from a intranet website into our database. It made me cry just watching it. Now forget the fact that the other end could set up a ReST interface, a simple screen scrape would make a job that took hours into a job that would take seconds.
There is so much inefficiency in offices that could be eradicated if only people were a little savvier about what computers can do.
The world doesnt need any more programmers. I should know, I have been looking for a programming job for ages and no one will give me a job. On the other hand, there is a shortage of engineers. In the oil industry there is a dire shortage of engineers, anyone qualified as a chemical engineer can command a good salary, yet strangely all the univerisity courses on this in the UK are being closed down in place of non vocational courses. No one in the media or government seems aware of this. Instead of all these shows on TV telling people what a good idea it is to try and be a pop star or super model, they should have shows encouraging people to take up more practical professions.
Programming is a calling, not a profession. Let them try programming as soon as possible, get those with the calling identified and cultivate their ability.
Yes, most of them probably won't get a CS degree ... so what ? Domain knowledge is as important as knowing algorithms, if not more important. There is need for accountants-programmers, linguists-programmers, geologists-programmers etc. Computer Science degrees are for those that want to write compilers, operating systems, new DB engines, routing algorithms etc. For the rest, the (probably innate, not educated) ability to stay stuck to a chair 10h/day running lines of code in the virtual machine in your head and having fun while doing it, logical thinking, basic algorithms and domain knowledge are more important.
Or the other end: They all get lessons covering only Visual Studio and .NET, or making iOS apps in xcode, because Microsoft or Apple respectively offers a massive discount and almost-free support to schools to make sure the programmers of the future are their customers of the future too.
I love the idea, because I would have loved it, however, one has to remember that not everyone loves programming the way we might do.
I think that courses should be offered earlier and in a much more useful form, and definitely some programming and CompSci theory should be put in the curriculum to give an understanding, but for the average person, deep programming knowledge isn't the main thing needed. Definitely giving people the chance to learn if they want to is very important.
I think the more important thing is to teach basic logic and debating skills at a young age. People really lack basic skills like spotting logical fallacies and following an argument. I think teaching some formal logic at a young age would really increase political participation, increace scientific and computing ability, lower people falling for scams like phishing, and increase general learning ability.
-- Lattyware (www.lattyware.co.uk)
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
What I'd really want is for schools to teach the basics of computer science. So that everybody at least knew what the word 'encoding' means when applied to information, what digital data is and why it's different from analog signals, etc.
It'd definitely cut down the number of people sending screenshots in JPG and bying Monster HDMI cables.
Coding strengthens other areas, like logic, mathematics, detailed visualozation of problem, focus and insight
So what? A for-loop in Java is basically the same as in
Programming is about a certain mind-set, logic & math. Only bad programmers complain about programming languages. A good programmer can program in any programming language he wants...
Okay, except "brainf*ck" maybe...
...You are over-qualified and under-paid. If we give you a raise, we will break the cosmic balance of the universe.
I think you are taking "Programming" to literally.
What I took from TFA was more a kin to scripting. Learning how to write a perl/python script to scan a bunch of documents for certain phrases, even learning regular expressions for use inside applications which support RegEx would be useful.
You don't need full on paid for development environments to teach that.
These comments are my personal opinions and do not necessarily reflect the opinions of the other voices in my head.
I said this before in a different topic, but please don't.
We already have way, way too many PHBs who think they know what coding is because they once wrote a simple script in Visual Basic, two MS Word Macros and know formulas in Excel.
We don't have a shortage of people who know how to code. But we do have a massive shortage of people who can code well. And teaching programming to kids before we have figured out how to properly teach coding is a disaster waiting to happen. Case in point: A C++ university course where I helped someone out last week. They actually teach them crap that will lead to exploitable code first, and then (in the next module) they tell them that there's border conditions they should check for. If only these idiots would go bungie-jumping without a rope first, and then add the rope on the 2nd jump, we would have much better code.
Almost all the "simple programs" that you teach people to code with are horrible pieces of junk, from input validation to testing. It teaches bad habits and it gives people a wrong impression on what coding is like. And even if (hopefully) these half-taught idiots won't ever write any code in their lives, they may well end up as the managers who decide the deadlines for the programmers.
Please don't teach coding to kids. Teach it to the few who actually enjoy fiddling and can concentrate long and well enough to focus on the details to get it right. We don't need more code in this world, we need better code.
Assorted stuff I do sometimes: Lemuria.org
Only bad programmers complain about programming languages. A good programmer can program in any programming language he wants...
It's a good thing all schoolchildren are Good Programmers then. Hell, why are we even teaching them this! They can program in any language they want!
A few lesson's experience in one language makes not a Good Programmer. Not having a portable, flexible language makes it extremely difficult for kids to hack on cool pet projects like web apps and games without investing a significant amount of time learning a new language for doing each task.
"The most dangerous enemy of a better solution is an existing codebase that is just good enough." -- Eric S. Raymond
Teaching kids to code has more significance than just training future programmers or improving basic computer literacy (which is on the increase http://www.eurojournals.com/ajsr_3_07.pdf ). Like mathematics, programming presents a method of solving problems that is generally applicable. Even if children don't go into science or a technical profession the patterns of though which programming experience will encourage should allow kids to reason more effectively when solving a problem. Obviously this may not be the case for every individual but when applied across an entire population positive effects may be observed. Also programming could be very useful in helping children learn mathematics by demonstrating real applications of the equations they learn in school.
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
I really wish computer scientists would get over themselves. At least the arrogant ones who, like conceited physicists and preening economists, think all the problems on Earth are merely esoteric subsets of their own field of study, which they'll get around to solving in due time. Interesting philosophical arguments about universal language aside, it's simply not true that everything is better with computers or better if reduced to pure math. There are fantastic uses for programming and computing in damn near every field, but it's ludicrous seeing programmers argue, again and again, that every engineer or scientist should be a programmer, much less every citizen. Not everything is better with a computer; some things are even worse.
It's not the goddamn Matrix yet, either; we're not "forced to rely on" people who program any more than we're forced to rely on people who grow food or fix cars. We all rely on all of those people, we're comfortable with some divisions of labor, and while computers are useful in every field that doesn't make programming the most useful skill of all. It makes it the most general skill, perhaps, but that's not an argument for universal programming literacy in and of itself. Maybe every industry needs programmers, but programmers need not become the core of every industry. Nor do I believe that programming teaches any particular problem solving or critical thinking talent, regardless of the language or whether the skills are actually used to program, better than logic, chemistry, or even anthropology courses.
We certainly don't yet need to regard programming as a component of basic literacy, in any case.
Teach them basic HTML/CSS/JS skills.
They're not the most elegant languages in the world (understatement), but they're relatively easy (just stick to procedural code) and a browser is pretty much always available. Most browsers are quite forgiving as well; if you forget an HTML close tag or omit a semicolon in JS, mostly you'll still get the output upto the point it goes bad.
JS can be quite a mess, but if you stick to the basics JS will do fine for the purpose of teaching absolute beginners. You don't need to teach OO, closures or modern JS techniques; document.writeln() will do fine for anything you need in these types of lessons.
It also satisfies the need for immediate results. With a little bit of HTML and CSS, you can make a lot pretty webpages. Just let them create their own homepage; some pictures, some links, pretty colors, cool mouse hover effects, perhaps a JS to print the current date; simple stuff they could expand upon.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
1) Basic computer literacy, if you can manage that. My school had typing or basic computer literacy mandatory. Strange as the computer literacy course included a section on typing. My school had two programming courses.
2) Increasingly dependent on the few? This isn't limited to just computers. How many of us here on /. can sew our own clothes from scratch? Have gardens capable of feeding our families year round? Able to repair our own cars? Fix our televisions, built our furniture, make the thread used to sew our clothes, possibly even wire and pipe our own homes? And the time to do it all?
Anyone can learn all of this, including coding, but is it time effective? It is a trade off for living in these interesting times. Somewhere, on some thing, we will always be dependent on others. A bit of mandatory coding isn't going to change this. As a geek I'm tempted to say this is a good idea. Then I step back and ask myself do I really want sewing, small engine repair, gardening, etc. all to be mandatory?
by Anonymous Coward: I, for one, welcome the shift from car analogies to pizza analogies. um.. overlords?
When I was in high school in the 60's, my father strongly suggested that I should take a typing course. In those days this was on a manual typewriter and the class was full of girls who I presume wanted to be secretaries.
It was one of the most useful courses I took, and the skill obviously transferred to computer keyboards.
Getting some things into "muscle memory" is good. Getting some things, like programming or language, into our brain organization is good.
The old Visual Basic would be a bad choice, but .NET, Java, Python, or even Logo would be a start.
It's not only useful for those who will eventually become full time programmers, it is also beneficial for anyone who uses computers in their work in any capacity. Even if it just helps them understand the limitation of computers, it would be worth it. Remember anyone saying "It's on the computer so it must be right"?
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. Giving kids an idea of what is part of it may be a good idea, i.e. a basic understanding of how computers work. Coding skills on the other hand - not so sure; 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. Picture it from this side - when I went to school, programming courses looked at BASIC and Pascal. Nice languages - for teaching - but I'm not sure whether it will really prepare you for coding C/C++, Java, Perl, Python, Ruby, ...
Do you really think that it makes sense giving someone much of a development course in something that may be outdated a few years later? I didn't really like history lessons, biology lessons, ... But I'm sure most of the history being taught is still the same; most of the principles of biology are still intact, ... On the other hand - one of the things we learned about in school was some of the hardware: anyone still remember what a ULA is? Or the practical knowledge of how to hook up a tape deck to a computer? ... punch cards?
Development classes and paradigms are too specific a skill for a mandatory course to be forced on everyone.
We rely on a select few to carry out a number of things in society. There are a select few doctors, barristers, engineers, dentists, etc. Its the way that our society works. IMO we have too many people in IT today that are doing it because its a job rather than because they understand it. This leads to many of the issues we see in IT.
If they are going to teach anything in schools make it problem solving, which already exists as part of some mathematics curriculums but has fallen into disuse because its tricky. Improve computer literacy in a general sense. Almost all homes have networks these days, explain how that works, etc. These can be done in the abstract but with practical application. Its the abstract that the children need to learn at this age because that base knowledge will be useful regardless of vendor etc.
You may think me a tired, old, cynic. I'd have to disagree about the tired bit.
my first programming experience was controlling a turtle. Back when I was about 8.
I also remember someone (ie, adults, not some weird savant show-and-tell) coming into school with a pack of Lego, LEDs and a microcontroller and teaching us about how traffic lights work when I was about 10.
It pays to be obvious, especially if you have a reputation for being subtle.
Society can have no higher purpose than to produce a world full of people who are more like me.
Everyone thinks this, whether they're a software engineer or a sous chef. And we're all right, because we're imagining training future generations to be more like the *best* of ourselves and never the worst. We coders imagine a society full of creative problem solvers. We don't imagine a future full of people who are arrogant toward anyone they can find a reason to feel superior to.
Now I happen to think TFA does a poor job of arguing its point. It claims that coding will teach "logic and reason",but it uses these terms in a very loose way. On this basis a businessman has just as much claim that learning to make decisions about allocating resources teaches "logic and reason". A landscape painter could argue that learning to paint teaches "logic and reason", because you have to work according to aesthetic principles. If you think art is a bit loosey goosey, consider how a pure mathematician looks at coding; sure it's *governed* by mathematical logic, but what isn't? Clearly everyone should be trained in the methods of philosophical investigation.
Coding is very much akin to fine art. Yes, you've got to satisfy the compiler and produce a consistently working product, but the real secret sauce in coding is *imagination*. Coding is about transforming your mental representation of a problem from something you don't know what to do with to something that can be broken down with a little persistence. B-trees, hash tables, web services, function closures ... none of these things were discovered by studying nature, but through feats of imagination.
It'd be great if everyone learned the kind of intellectual skills that coding sharpens. The problem with this idea is that it doesn't make room for all the other really valuable lessons other disciplines have. Yes it would be great if *everyone* was trained in coding, and *nothing else had to be thrown out of the curriculum*. The same goes for accounting, law or military strategy. But soon you get the point where you've claimed *all* childrens' free time. You're nowhere near teaching them everything that would be handy to know, but you've taken away time that they could use learning to direct their own energies and imagination.
I think teaching *everything to somebody* is a good idea, but teaching *everything to everybody* is a bad one.
There is such a thing as too much standardization in education. A little standardization is a good thing; we want everyone to be able to read and calculate and understand their roles as citizens. But taken to an extreme, you run up against an unforgiving truth: you can't teach someone *everything* that they might need to know. If you try, you end up with things that nobody learns that somebody ought to. Education ought to embrace both *standardization* and *diversity* as goals, both pursued in moderation. At present I believe the pendulum in the US at least has swung too far toward standardization.
There's only one thing I'd want to see added to education everywhere, and it's more a matter of attitude than knowledge. There's altogether too many people who when faced with a difficult problem say things like "I'm no good at math", "I'm no good at foreign languages" or "I have no artistic talent". I think it's important for people to recognize and acknowledge thier limitations, but also to believe they can overcome those limitations. A homeowner confronted with a geometry problem should think, "I'm no good at math, but if I applied myself I could figure this out." A nurse in an emergency room might think, "I'm no good at languages, but I tried I could learn enough Cambodian to ask patients to point to what hurts."
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
A lot of people here make a good point that is, however, not relevant. Namely, that "we don't need more programmers." I'm inclined to agree, especially hearing from friends about how difficult the job market is for many of them. However, this criticism misses the point: we want to teach those that *aren't* going to programmers, in order to provide them with a well-rounded education.
Most of the people that are taught algebra (or any math above basic arithmatic) will never use it in their work, much less be mathematicians. Same for a foreign language, or history, geography, chemistry, physics, etc. For that matter, it is completely irrelevant to the lives of the vast majority of people whether humankind developed after billions of years of evolution, or created in a day. Yet I don't see many slashdotters arguing in favor of those religious groups that don't want to teach accurate biology. Children should be given exposure to as much information and knowledge as possible, to make them better informed and educated adults. What they do with it then is up to them.
Other countries do a better job producing more well-rounded students. Let me give an example: A German friend, a Ph.D. student in comparative literature, asked what my CompSci Ph.D. thesis was about. I said "mathematical integration," and asked her if she was familiar with the term (from experience, most Americans without science backgrounds are not). "Obviously," she said "I did graduate from high school, you know."
Apparently, in Germany, everyone at university-bound high schools takes calculus. It's just expected. It doesn't matter if they're going to be in science or math. It is taught in case they might use it, and so that they can be generally more-knowledgeable people. The same, in my view, should apply with programming. It teaches rigorous, formal thinking skills, something that is sorely lacking in American academia.
How are such skills even *remotely* useful to peple such as lumberjacks, casino dealers, chefs, cashiers, clothing designers or nurses?
Coincidently I was a "lumberjack" in the early 80's, programming was very useful to me as a way of getting out of a life of low paid manual labour.
Come to think of it the crusty old manager of the sawmill would ask you maths questions before he would give you the "cream job" of picking house lots from the green-chain. However the only worker making any real money was the guy operating the large break down saw, it had more knobs and switches than a small aircraft and was a very specialised skill. Of course a gigantic band saw with a 4 meter high jaw that can manipulate and slice up a 40ton log to within 1/64th of an inch would be controlled by a computer these days, and I wouldn't be surprised if house lots are now picked and packed by one guy operating a few industrial robots.
And yes, we did occasionally sing the lumberjack song.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Oh wait, like so many you don't know what it truly means to be literate. To be literate is NOT to know what a word means but to be capable of learning the meaning of a new word.
To explain: A research animal hits a level with a image and gets a nut. The animal likes nuts so will associate the image with a nut. If another leaver has another image and delivers an electric shock, which the animal does not like, he will associate that image with the shock.
But the animal has no understanding of the image. The image could a photo, a drawing, a glyph or word but it has no understanding of it beyond a simple association with the lever and the result.
You could teach some animals a hundred words but that does not make them literate UNTIL they can learn new words just by deduction. For instance, if you know what Audiophile and Xenophobe means, including that the words in questions are combo's of simpler words, then can you guess what the made up word Audiophobe might mean? THEN you are literate. Same as simply being able to recite multiplication tables does not make you understand math, just being able to use a computer by pressing the key that gives the nut is not being computer literate.
A computer literate person could be set in front of a different OS or program and deduce how it works without constant hand holding.
A test? Take a new MMO like Star Wars: The Old Republic. It isn't exactly pushing new boundaries,you would expect that anyone with experience with either another MMO or games in general (and for some functions, computer programs in general) to be able to sort it out. And yet, general chat is filled with people asking the most inane questions.
NOT so much because of a low IQ and their parents being siblings BUT because they only learned to hit the right key at the right time. They did NOT learn how to deal with stuff, they learned a routine, there is no understanding anymore then the lab animal understand the lever or electricity or the biology of nuts.
But this about more then computer literacy. Take this real life case: Public transport suffers from broken doors, it happens. How do you signal to the customer the door is broken and they got to use another? Do you put a RED sign at EYE height? ignored. Red sign above the button. Ignored. Color button red permanently with leds instead of black when in motion and green when stopped? Ignored. Do you put a sticker OVER the button making it impossible to operate? Ignored. Do you make EVERYONE else in the train move to another door when they see it? Ignored.
Yet those people can still "operate" their computer, unless something happens that is not part of the routine. Would you judge a person as public transport literate if they can open a normal door but are completely lost with a broken door? No.
I don't think everyone should be at the same level, I was completely lost when I was rushed to hospital after 20 years of not even seeing a doctor and needed a lo
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
I am old, all it means I get payed more then my fellow developers.
As for 35... I remember 35... dimly. Saying that I am past 35 is like saying the Voyager 1 is a bit far. Hell, I was once amazed at the high tech in Voyager... I think so, that far back the memory ... what was I talking about?
Oh, you might be right when you think programmers are the kiddies who work in Access but real developers? People who know how to turn an idea into a working product from start to finish? They are FUCKING hard to find. Granted, I live in Holland where the economy is so bad that when the government wanted to issue a new loan they got a NEGATIVE interest (meaning that the finance industry thinks it is safer to PAY the dutch to please allow them to loan their money is the safest bet) and unemployment is fairly low (4-5%) but the list of open vacancies for developers is staggering that right now I get offers for more money in fields I have no experience with in languages I never used because they can't find anyone else.
Saying that employment is hard as programmer who has aged, is like saying that being a chef is not a long term job because there are no 35+ burger flippers. Granted, if you spent 17 years not learning a single additional skill, that might be true, but then that would be true in most fields.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.