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.
You won't find much disagreement from the average slashdotters on the importance of programming. :)
The devil is in the details, how will compulsory programming courses be handled by school systems. If a student has to wrestle with proprietary environments with poor support because eventually the school gets tired of paying for cosmetic updates, he/she will only learn the "bad part" of programming. It sure teaches a lesson but there's the whole life to get that kind of schooling, for free
---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
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.
But I don't think it should ever be forced. Not everyone has the aptitude or desire to learn how to program, and a majority probably don't need to (although, if it turns out that they're somewhat decent at it, it may be able to make some things easier for them).
Filthy, filthy copyrapists!
Those are all jobs that can and will be outsourced.
Do we want another generation like what we have now?
Alot of these articles make it seem like we're in this programmer shortage, when in fact the field is already to damn competitive as it is. Let's go back to the basics of giving more knowledge on how to make better programmers instead of creating new ones.
If kids are interested in it let them go for it. But let's not encourage it. The last thing i need is a kid that ideals Pauly-D and thinks he likes programming cause he'll make good money from it, and take my job at some company because his dad knows someone.
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.
As much as "computers are our most powerful tool", we have many arguably more powerful faculties built-in.
Most kids, or at least many kids, will neither enjoy nor benefit from coding, and only a tiny fraction will become proficient enough to not have to rely on others for critical, or even marginally important, systems.
The fact that we can all read and write doesn't mean that we can all entertain ourselves and others with our own novels!
We should rather be teaching more generalised skills, like logical thinking and clear expression of ideas. These can be taught with a bit of programming, but needn't and shouldn't be limited to it! And they are certainly important skills to have. I'd call them the two most important things programming teaches the layman.
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.
There's a difference between using tools and making them. Programming in some ways falls between but it's more akin to the latter, and not every tool user is a tool maker.
This was so even thousands of years ago. Scraping a bearskin isn't nearly so tricky as flint knapping.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
I was forced to learn Latin. This might be a good revenge.
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)
This video (http://www.youtube.com/watch?v=ob_GX50Za6c) shows Steve Jobs describing how powerful computers can be for the human race ('a bicycle for our minds') so it makes sense to teach kids how to get on that bike and ride.
When they came for the communists, I said "He's next door. Take him away. Goddam commies."
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?
seriously is the 3rd time i see a similar article in less then 2 months n0t againnn we all know our kids must be assembly experts
We live in a world of information. So let's teach them about information. What's the meaning of information? How has it been encoded, stored, reproduced, processed and transmitted throughout history?
It should include some material about the concept of processing information by an algorithm, but I'm not sure actual programming classes are really for everyone.
Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
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 allows us to accomplish otherwise time-consuming tasks with the ease of a small set of scripts...
Just to expand on this, I still think most customer service agents I've spoken to could easily be replaced with small shell scripts (and they'd probably be more polite that way as well -- especially considering my past experiences)...that and perhaps politicians could be replaced too? And make them open source so that when they start screwing us, we can find the functions responsible for their corruption and delete them and happily move on to being a more logical and functional society...no more cheating on their wives, no more penis pictures being sent to underage girls, and no more pedophilia...just the occasional need for an fsck or two... ...problem solved...
If we start to teach C++ in schools it would be a disaster, and unproductive, because you can't do anything useful with very basic level C++ (just to mention a language). But I think it would be very interesting if it's more scripting oriented like an elemental level of vbscript, nothing too complicated. This way the student would learn it easily, and would be able to use it in macros for Office and scripts for windows to automatize tasks that common students do use. He/She could also experiment with math and scripting.
Later he could, by his own, jump to javascript, web, asp, or even real languages. Or even the student could be motivated to pursue a real career with this after graduating.
'Code', yes, but code in what? I was a 'programmer' when young, and it was a great relief when COBOL came along and we could just write down what we wanted done (and then 'compile' on 2 tape units). Halcyon days. Now even with a house full of PCs and Linux things you can't do anything new without mastering syntax more abstruse than Algol or Fortran ever was.
Coding strengthens other areas, like logic, mathematics, detailed visualozation of problem, focus and insight
A CS nerd will want to teach his kids to program as much as a fisherman will have the urge to teach his kids to fish.
What if the kid isn't cut for programming, will you still shove it down his throat??
captcha: choice is good.
If supply of coders is too low, price of coders goes up, more people learn coding.
Problem solves itself. let the market allocate resources. Stop thinking like a bureaucrat!
I've been doing work in a field most people here don't like, web analytics, for ~5-6 years now. Nonetheless it serves to illustrate this story well. When I started I had never coded a day in my life (I focused on the analysis part). One day I had to track some flash applications, and that requires vendor specific functions to be used, which submit the data in ways you specify. Well, I had no idea what a function was-- and when I sent the documentation to the guy who was supposed to figure it out, he couldn't.
I was literally stuck. I decided that depending on other people to be able to do anything sucked, so I bought some books and started working on basic projects for myself. I won't lie-- simple things like arrays took me a while to wrap my brain around. Simple loops, manipulating objects, writing functions, all of it was very difficult for me at that point. I don't think I'm a natural programmer by any stretch, but I am now more than capable of writing simple applications that interact online/output formatted data. I can easily debug Javascript errors by eye and I've gotten very adept at using proxy's like Fiddler and Charles to simulate environments in which I can test my code changes on live sites without having access to a dev environment.
The point I'm really trying to make is this. I suck at programming. I can write trivial functions, use the main loops, and have a decent grasp of what an object and an array is and how I can manipulate them. With these very basic building blocks, I have made myself a much more desirable employee, and also simplified my workflow(s) tremendously. I've now moved on to taking computer science courses online (the MIT ones are amazing). Coding will never be how I make my living (I'm simply not good enough at it), but I truly enjoy it now and even the basic stuff can be very very powerful. In short, I agree entirely with the summary.
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
I think this could on some levels replace higher level math in junior/high school or give kids the option to choose between the two. They largely cover the same categories, only one is quite a bit more applicable and hands on. You get to actually watch your work unfold in front of you and actively problem solve and troubleshoot. Not just do a problem set, bring it in the next day, have the teachers correct, correct your errors, rinse and repeat ad-naseum.
Programming can even be fun. Keep in mind I'm not talking about C++ or such, rather VB or other such visual languages that help add a learning element to the code. Hard code without any sort of visual element takes a niche personality to enjoy. Just entry level coding that helps kids to understand how computers work and think so they can better approach computers in general in the future. I wouldn't be against a basic level hardware troubleshooting course either.
Computers are NEVER going to go away save the next apocalypse (even then I'm sure they will survive in some form). They will become more and more integrated into our lives till we have the proverbial implant that lets us get sucked into the matrix and foam at the mouth. It WILL happen, there are plenty of people working on it already. Making our entire society ignorant to one of the greatest scientific achievements that has ever happened will not work out in our favor. They should be fully embraced in our school system, not just on the level of teaching kids how to use Office suites
Then why not making medicine a compulsory subject too? Otherwise people will depend on a selected few to repair their bodies. And we should also add some industrial mechanics ts as well, we don't want to depend upon some elected guys when our [add any mechanical device here] breaks. And what about energy making? That's far more important than programming, and we don't want to depend on another set of few companies' know-how.
I could continue, but the bottom line is: we have to depend upon other people, so let each one be free to choose who shall her/him rely on. I'd rather improve the quality of current compulsory subjects, in particular humanities: Our kids really need to get a broad perspective of human evolution in order to contribute to it, and no CS course will ever teach you how to think out of the box in the same way.
Also, I'm glad that there are people who couldn't care less about programming: many of them are artists and they often enrich our lives with alternative perspectives of the world. And they also mean more job for me.
If the answer is "no," then don't bother trying to learn computer programming.
No amount of education, expensive tools and technology will solve that problem that most humans have.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
Many people just don't have the natural inclination to code and be *any* good at it. So instead of *forcing* those kids to code (if you suck at something and can't get better, the chances of enjoying it are rather slim, unless you're a masochist), make the "tools" much easier to use.
"Natural" and "accessible" are the keywords here.
So, the world probably needs more GUI designers (*runs and ducks for cover)
"the majority of us are entirely dependent on a select few"
This is the case of EVERYTHING and it's called SPECIALIZATION. That's why there are JOBS. Not everyone can fix his car, not everyone can build his own house, But if You can do something (fix a car), you can work for a company, fixing cars for them, and gain MONEY which you can then exchange for other services (instead of LEARNING EVERYTHING, which is impossible). This is what money is for, to pay for things we can't do ourselves.
I am all for teaching programming. CPUs are an everyday machine and people who use such a machine should know how it works. Who can name the six simple machines? Unfortunately Programming is not a 'build it and they will come' proposition. It relies on abstract mathematics; that is, maths most people can do in their head but not follow-the-teacher mathematics. Therein is the problem. Most people are unable to mix generic/specific thoughts about a problem described by language.
Unfortunately schools, while claiming to teach perpetual learning, critical thinking, etc, have a limited ability to impart curiosity, abstraction, logic, philosophy. Teenagers have a limited ability to behold more than the level maps of Quake 3 and how many men this year's bachelorette kissed. The role of the school hasn't changed since the 1950s: To provide the skills necessary for menial employment. There are more machines in the workplace so the literacy and numeracy required for employment has increased. But most schools don't offer more than the National chemistry/mathematics/programming competition for intellectual students.
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.
As others have pointed out, coding is for building tools, not a tool to be used. While it may make some everyday tasks more efficient now, it shouldn't be that way. We have come a very long way in terms of usability, but rather than teaching a generation of kids to hate coding, let's just keep on advancing the systems we have until interacting with them is indistinguishable from other human communication. Seems a lot more direct an approach if you ask me.
everyone has a toilet, but WHO CAN FIX IT?! *dum dum dum dum*
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 logic, not a programming language
Who cares if they can code in C or Java or whatever... Teach them to produce logic predicates and functions to achieve a goal, independently (as much as possible) of a programming language
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?
What has helped move us beyond hunter-gatherers is individuals doing a bit more of what each does better, for the benefit of the group. Even in a H-G society, some well be better at spotting edible tubers than others, as well as some spotting predators better while others have a bit more endurance to run down wounded prey.
I'll trade you bear skins for your spear points. Your children will more easily survive the winter, and your sharper/stronger-than-mine points will give me a better chance against the next bear. Better yet, I'll trade you beer for some of your grass seed.
Medicine should be compulsory for school kids. Why depend on a handful of doctors for your health care when you can do it yourself?
You could replace computer programming or medicine with one of any number of skills and make the same argument. Unfortunately, our schools don't teach critical thinking.
Reading, wRiting, aRithmetic, pRogramming.
No one was tought programming that time. You got yourself a book and a computer and then started typing.
Although some understanding of what goes on inside a computer (and possibly the ability to alter it) is nice, it's a long, long way down the list of stuff that people should be taught in order to lead happy and fulfilled lives.
Just where on that list it should be is tricky and will vary with each individuals' situation. Personally I'd put it somewhere between learning a second language (higher) and being able to play a musical instrument (lower) in the order of things that make a decently educated member of society.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
so we have to be careful of what we choose for kids I would argue that psychology is more important then programming - happyness, family, sex, friends, these things are more important then programming
I don't want everyone to become full-of-themselves, uncreative programmers. I would like to see the option in schools of programming, 3d, video, or design (graphics, games, etc). Make people learn a bit about those, and then let them specialize in one, and focus less and less on the others
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 Dad was a COBOL CICS programmer. We got our first computer an IBM 8086. His primary rule about the computer is No Games, unless I wrote it. I picked up the manuals and learned the Basic programming language. My career as a developer I tribute to my Dad taking the time to teach me programming skills.
Healing. The majority of us are entirely dependent on a select few, to enable us to achieve what we want. (Physician) Healing is the act of relieving pain and/or repairing physical damage to a person. This is true whether the person is injured, ill, or dying. If you can't heal, you are forced to rely on those that can to ensure that you can benefit from the greatest healing at your disposal.'
Yes, most human beings should be generalists to a degree. Yes, most humans should also have some type of specialty. Something that they do very well (or just better) than their neighbors.
It's great that he's excited about programming. But the last thing we want is EVERYONE coding. We have specialists for a reason.
Mathematicians, physicists, mechanics, and plumbers could all say similar things about their fields. Yes, they are critical to a well-functioning society. Yes, they involve a lot of fundamental concepts that it would be great that people understood. No, not everyone NEEDS compulsory education to a high level of proficiency in the field.
And as someone who lives in the US, I can tell you that a more pressing problem in this country is financial and science literacy. Just look at the financial meltdown in this country and much of that does have to be put on the shoulders of people who don't understand the concept of spending more than you earn.
And let's not get everyone going on the whole Evolution vs the Bible horseshit. Thta wouldn't be so much of an issueif we had proper science education.
Plus, the science education would teach many of the math and probelm solving skills that programming uses.
This most useful element of my software training was the introduction to algorithms. We should teach people to think algorithmically. This was once done in a course called home economics. Otherwise software is syntax and libraries,
and mostly expendable.
By this same train of logic we should also compel kids to learn electrical engineering because we all live in homes filled with devices all powered by electricity without which we would all be hopeless. Mechanical engineering because of the cars/trucks/trains/planes/bikes without which we would be geographically trapped within a few miles of our homes. Sure computers make you more efficient, so does a hammer, an oven, a car and so on. Modern industrial/informational life is all about tools to let us accomplish more things with less time. You could extend this same line of thinking for lots of disciplines and force all maner of "education" on the young so they better understand and interact with the world around them.
Appart from the fact that it's not even vaguely practical, it's not very sound logic.
Teach kids Logic, something that will help them throughout their lives and provides a great stepping stone into computers/science/technology as well as some of the humanities and promotes clear thinking, something this world needs much much much more of.
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.
Not really. You can teach essential lessons in deterministic complexity with cellular automata as simple as marbles in an egg carton, or black and white chips on a Go board. Rule 30 is accessible to a nine year old. Where does the complexity come from? Many children would benefit from encountering the missing link between the simplicity of the rule and the evolution of state it proscribes.
Where do you put the god funnel? Not so obvious after all. This exercise doesn't discredit creationism, but it does cast the worst proponents of creationism in an extremely harsh light. A skeptic is born.
This is just plain flawed logic. There are a lot of things people rely on that require experts to keep working. Some schools still offer shop classes to learn car repair and mechanics, but we don't make that compulsory because not everyone can or should learn that stuff. Basic cooking skills are really important, too, but can you imagine making Home Ec classes compulsory?
The worst aspect of this idea is that what you would end up with is a whole generation of school kids that know enough to be dangerous. And not just to themselves, but also to everyone that ever comes in contact with their poorly constructed code. We have enough amateur crap to deal with (ever been called into help some business guy that decided he could build his own application because he can use MS Access?) Let the kids with aptitude or interest in learning this stuff have ready access to the classes and instruction they need, but don't shove everybody at it. It would not end well.
"Somebody has to do something. It's just incredibly pathetic it has to be us."
--- Jerry Garcia
Stop being nothing but pretentious dicks about this.
If the general population wanted to learn to code they would. They obviously don't. Stop trying to argue that people should learn to code.
If your argument was sound then I should go out and learn how to perform every single service I pay others for. Which is wrong.
Just stop with this shit. It makes you look like a pretentious fucking dick.
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.
"If you can't code,..."
If he doesn't adjust the timing on his own car, he's blowing smoke out his ass in more ways than one.
...by installing two programming tools on the PC of my 7 year old nephew : Scratch (TU Delft) and Robomind (UVA). I only showed him the basics, but I hope I can convince him to at least try it a few times to get an idea, as next year all that the school is going to offer is a Powerpoint course.
Learned it myself through basic, but I did not want to give him an MS basic to learn on, rather some generic programming tools that offer him a good start.
I'm a programmer because I taught myself and it was fun. If I'd been forced to take it as a subject I never would have taken this career path; one thing my school was really, really good at was making every subject insufferably dull.
When you say 'we' do you mean the goverment or parents?
When you mean the goverment I totally disagree, they have already been burdened too much having to teach kids all sorts of things their parents should teach them.
The goverment should teach kids how to read, write and do math.
Parents should teach their kids all the other things and in general spend time with their kids.
This is already being seriously proposed for English schools, but it's still unclear where they are going to find the teachers who understand enough about CS and programming to deliver the classes.
But don't over do it on theory lot's of CS is loaded with theory and lacks lot's of real skills.
Also non IT coding work does not need a full CS theory load it needs alot of the real skills and maybe some basic coding but not a over load of it.
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.
It won't be popular here, but coders should be hired like plumbers or contractors, to bring visions of others to life. That's all they need to be good at. They don't need to teach coding in school any more than they need to teach any esoteric trade. They should teach communications so that you can properly instruct your coder/plumber/electrician/painter as to what you need, and like with those professions, the ones that do the most elegant work will rise to the top of their field.
Talk about over-glorifying your existence...
Thats an awesome thread.
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.
Then you would know that if people can edit their posts, they post one thing, then change it later making the comments look out of place or even to spam a board by first getting modded up with a joke, and then editting it into a troll.
First rule of designing for the internet, the trolls WILL abuse it.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
I cannot think of a single area of life, outside of wiping my own ass, where this isn't the case. I am one of the "select few" in the markets where my business operates, and no amount of education or whatever is going to change that. Not everybody is capable of everything, myself included.
Do you have ESP?
It turns out that only a tiny part of the cohort 3-5% will ever be good programmers, and for the rest no amount of teaching will really help.
I suspect programmers are born not taught so this is another way of wasting most peoples time and setting wrong expectations.
MFG, omb
Like how to stay healthy -eating right and exercising.
Like how to help others.
Like how to help themselves.
Like how to set their expectations and the expectations of others (*I suspect this is more germane to coding than anything we learned from Knuth*)
Is knowing how to code a more important skill than knowing how to harvest energy (or harvest food for that matter).
We talk of One Laptop Per Child, yet we don't have the means for illuminating many of the homes of the poor after dusk -One Lightbulb Per Child, perhaps?
I guess the concept that 'education happens in schools' is still ingrained in our culture; education happens everywhere, the trick is to provide the opportunity to all our kids.
So when we are done teaching coding skills, is that it? Or should we also teach basic car maintenance? Maybe basic appliance repair for keeping up one's home? How about basic carpentry too? Maybe some medical triage skills too? Oh, and perhaps some gardening skills?
I'm all for bettering oneself and acquiring many skillsets. But making such things compulsory? RIDICULOUS!
Instead of trying in vain to turn non-coders into coders, we should selectively breed with coders. Thus future generations will have a greater representation of smart people, which will probably have many beneficial effects apart from the widespread ability to code.
I always thought that teaching someone to code at a young age would be a great way to give someone first-rate analytical, quantitative, and abstract reasoning skills. Unfortunately, it just doesn't seem to be the case; I've met first-rate programmers and while they were all smart nothing they really knew about coding carried over to other fields.
Unless you got to an extremely esoteric language like APL or brainfuck, anyone with a good understanding of one language will be able to learn a language with a similar purpose very quickly.
Are Scheme and Haskell likewise "extremely esoteric"?
if the computer industry would let go of the hold they have over the users base. i.e. "Windows, a world without walls" where you can see where you want to go but you cannot get there from here...
There is a whole lot of false constraints the software industry applies to the user base. Where many things are made harder and prevent the users from automating the many day to day tasks they could and would without the false constraints.
Programming itself is like using the roman numeral system in accounting where we all know the decimal system is much more powerful and easier to use,
There is a constant set of action everyone does and uses and these can as well be applied to programming.
Re: http://abstractionphysics.net/
An extra tag thrown in can throw the entire formatting of the document out of whack, but there aren't a lot of tools to help you find that extra tag.
Which is why it's so important to understand how tags get turned into a tree of elements. The DOM tree viewer in a tool like Firebug can help you with that. If an element isn't where it's supposed to be, look for the tags that start and end the elements around it.
The problem is that the things that make these environments good for developing commercial applications do not make them good for teaching. Logo and BBC BASIC were great environments for teaching, because a single line of code gave immediate feedback.
So you're looking for something that has an REPL (read-evaluate-print loop) but also allows programs to have some structure. What's wrong with Python in this respect? You mention Logo; all the pieces are there in Python to build a library sitting on top of Tkinter that lets the user make turtle graphics from the IDLE prompt.
I completely agree with TFA. We're in an age where computers are so ubiquitous that it's ridiculous not to use them to the fullest extent: and that means programming things specifically to automate the routine in your life, but also knowing programming to understand public policy as it relates to computing! This is, at this day and age, a civic requirement IMHO. Recent events, such as bastardized IP protection measures, varied, unpredictable and often overreaching punishment for even victimless and damage-less "hacking", indicate that the society is turning into a medieval system.
We have those who understand and those who do not, and those who do understand (or pretend to!) often wield political and fiscal power over general computer-illiterate society. This is why so many IT projects fail: people don't apply common sense to these projects, because computing is almost ingrained as a magical black box in our culture. Otherwise "successful" managers and executives waste billions because they just can't reconcile their pre-computing education and experience with this newfangled magic. There is no immediate backlash for things like SOPA or PIPA because it's all foreign concepts to most people!
I believe that it's a basic civic requirement to have computer literacy that encompasses basics of programming, networking but also social engineering as internet gave us orders of magnitude bigger exposure to the latter. One must understand what vulnerabilities are and how they come to be, what are exploits (and "hacking"), what really happens on internet (and how messing with it may make things pretty miserable for the most of us), etc. I believe, in fact, that such computer literacy is more of a civic requirement than most of history, the latter mostly taught in abstract and without clear link to current events.
A successful API design takes a mixture of software design and pedagogy.
Knowing how to write code is a good thing, but not strictly speaking necessary for everyone. This argument is specious. Automobiles are also powerful tools, but I think even /.'ers will agree that it is adequate to know how to drive and do operator-level maintenance on them, and that knowing how to BUILD THEM is unnecessary to be successful in the world, unless your job IS in fact to build automobiles. It's all well and good to know how to write code, but the dubious logic of that argument could be extended to many areas of human endeavor. The argument ignores the realities of the world, that it is NOT practical to have EVERY single person (or anyone outside a select small group) specialize to the making of every single tool. That would actually defeat the purpose of specialization. Consider this:
We need cowboys to know how to ride horses, and MAYBE how to shoe those horses, to facilitate the herding of cattle. They DON'T need to know how to refine ore to make the iron in those shoes.
We need racecar drivers to know how to drive fast in circles and speak incoherently afterwards to submoronic fans of autoracing. We don't need them to know how to refine petroleum into motor oil or fuel.
We need cooks to know how to convert raw foodstuffs safely into culinary works of art, not how to grow the food, or make the stove on which it is cooked, the pottery used to bake it in, etc.
We have this division of labor because specialization tends to increase efficiency. Generalizing that knowledge, making it irrationally required of everyone is absurd. By that questionable logic... everyone should know how to manufacture every single tool they use. Why is writing computer code treated as special? Computers are argued to be our most powerful tools. I dispute that. I say computers are meta-tools. You can design a house, for example, on a computer, but you can't HAMMER the frame together with a computer. (You'll fuck up the case on the first nail, most likely...) You can control the cutting down of a log from a tree harvested for wood with a computer, but it is a SAW blade that actually cuts it. (No matter how thin your monitor is, it is unlikely an effective blade.) You can use computers to aggregate information on houses for sale, but you actually have to show a prospective buyer the actual HOUSE in person if you hope to sell it. You don't drive the client around in a computer.
For most purposes, it is enough for a baker to know how to bake recipes he or she is given, he/she doesn't need to know how to WRITE recipes to be successful at baking. Writing computer code is the same thing, really... except the thing executing the code is nowhere near as smart, and so your instructions must be, generally, MUCH more explicit to have any hope of successful code execution. Code, after all, is just instructions given to the computer, and akin to any other instruction set, (for example, rudimentary "code" for deviled eggs, written in BASIC, the Baker's All Purpose Simplified Instructions for Cooking:)
10 Put hens eggs in pot; fill to cover eggs with water
20 Place water on stove; turn stove to "high"
30 While water != boiling, wait.
40 Turn off stove.
45 Wait 10 minutes.
50 Drain water
60 Put eggs in cold water. REM arrests cooking, cools eggs for peeling.
65 Wait 10 minutes.
70 Gosub 500; REM remove shells!
80 Slice(%lengthwise) eggs in half
95 Scoop out yolks; place yolks in bowl
100 Gosub 600; REM Place premeasured mayonnaise, mustard, sherry wine in bowl and MIX
110 Fill hollowed eggs with mix
120 Dust lightly with paprika
130 End
I didn't have time to debug or test these instructions, and I'm not putting the subroutines for lines 500 and 600, because I think I've already made my point.
So enjoy some deviled eggs, and let's stop thinking about the absurd idea of teaching each and every student in America (or whatever) to write computer code. It'll be just ANOTHER thing kids resent having to learn for no good goddamned reason.
Title: "Why We Should Teach Our Kids To Code"
Should read: "Why We Should Teach Our [Wealthy] Kids To Code"
Cause last I heard, the poor kids still need to work heavily on that read and writing English (or whatever modern civilization language) part.
I have recently bought a game for iPhone called iFigMasic (http://itunes.apple.com/app/ifigmasic/id488598021) for my son to try.
Now he wants to learn programming, and not Logo (iFigMasic does remind me Logo a bit...)
The most useful course I took in High School was typing (for secretaries). I flunked it badly. I wasn't interested in being a secretary, I just wanted the skill. How about a compulsory, non-graded, typing course. These days everyone has to know how to use a keyboard. I've been amazed at how many "programmers" still use the 2-finger method.
This reasoning could be used to justify having everyone learn so many things that they can't possibly have time for them. I'm forced to rely on other people to make sure my television set doesn't explode; must I also start learning modern electronics design? I rely on other people for anything from making sure my food doesn't poison me, to making sure the car I drive doesn't crash for no reason.
It's called division of labor. We have it for a reason.
Legal issues also have a big impact on our lives. Does that mean we should all become semi-lawyers? Same with car repair.
Maintenance of software is its biggest cost, and newbies usually get that part quite wrong. Yes, it's good to understand the principles, but Programming for the Masses can make for Mass Messes beyond trivial apps.
Table-ized A.I.
If you dont play baseball, you are *forced* to let others do it for you. If you aren't a doctor, you are *forced* to let others be your doctor. If you aren't a musician, you are *forced* to listen to other people's music. It's called a society. Just do what you want to do. Hard as it might be to fathom, some people don't want to sort through an office's limitless data pile. Just because you are a programmer...
"learning a second language (higher) and being able to play a musical instrument (lower)"
Both of which were mandatory in my elementary and high schools. A second language was mandatory for admission to university too, although they accepted grade 12 math as a language.
Let me make the case that lessons in chemical engineering should be compulsory learning for modern school kids. Chemical plants help us automate and repeat the many complicated steps that make up the manufacture of materials that pervade our lives: whether that's a biologist attempting to titrate a water sample or an office administrator tasked with filling a warehouse with paper. The use of chemicals is a big part of what make us human, and the chemical plant is humanity's most fundamental source of consumer goods. The chemical plant 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. Chemical engineering is the act of giving chemical workers and machines steps to perform. This is true whether the output is vinegar, linseed oil or Rhodamine 6G. If you can't engineer chemical synthesis, you are forced to rely on those that can to ensure that you can benefit from the greatest tool at your disposal.
I like to compare the technology (IT) industry with transportation.
There's people who design cars, others build them, others fix them, others sell them etc. We also need roads to drive them on and we have designers, builders and maintainers for them as well. Most of us will learn how to drive a car. That's a good general skill for the masses. But most of us don't need to know how to design or build them.
Programming is designing/building and is not a necessary general skill.
If anything should be compulsory, it should be the native language of the student. E.g. English, for most slashdotters. Oh wait, it already is...
"The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
In my last job (a fairly typical customer service/back office admin type thing), when someone else left, I inherited the task of dealing with updating a series of spreadsheets with loads of really crappy macros in. It had to be done once a week, and had to be perfect every time. One part of it involved cleaning up the names of a load of financial advisers in the spreadsheet - the same company's name would crop up many times over, but written differently. It was generally fairly easy to tell who each one should be, but it took me over half an hour each time, and was a very dull task.
Now, having learned Perl fairly recently, I knew that this was an obvious job for regular expressions. So I found out how to use regexes in VBA, and wrote a function that contained a dictionary with the keys as regular expressions that would match the appropriate names, and the values as the names they should be. With this, I was able to do a boring task that took about half an hour a week in about thirty seconds flat.
From my experience in that job, there were a lot of tedious tasks that could have been made a lot easier if people knew at least the basics of coding.
If we are going to compel anything, it should be the study and practice of formal and informal logic.
Lets teach our kids how to reason and how to form logical arguments.
We used to do that, you know. Today, perhaps 1% of children know what is meant by the following terms:
syllogism
valid argument
red herring
ad hominem
post hoc ergo propter hoc
faulty analogy
appeal to fear
chronological fallacy
And so on...understanding these things is what forms the basis of a real education and personal liberty.
Medicine, Engineering and other professions, with this we indeed would have quite better
professionals than we have today. We would never again to stay in the gp queue,no more buildings or bridges with problems and the best, we wouldn't have those "doctors" that create desease for everything to practically sell a treatment
or those waste time and money with those pointless researches... It would be wonderful.
"and the computer is humanity's most powerful tool"
Uh, no. Various members of humanity itself are humanity's most powerful tools ...