Should Everybody Learn To Code?
theodp writes "In July, the Association for Computing Machinery announced it was partnering with Code.org, with ACM contributing funding and its Director of Public Policy to Code.org in a push to 'ensure that every K-12 student in the US has the opportunity to study computer science.' Interestingly, joining others questioning the conventional Presidential wisdom that everybody-must-get-code is the Communications of the ACM, which asks in its February issue, Should Everybody Learn to Code? By the way, Code.org is bringing its Hour of Code show to the UK in March. The new National Curriculum for England that is to be taught in all primary and secondary schools beginning in September includes a new emphasis on Computer Science curricula, said to have been sparked by a speech given by Google Chairman Eric Schmidt in 2011."
Sure, why not. They'll never use it anyway.
No.
ensure that every K-12 student in the US has the opportunity to study computer science
Yes.
(1) Reading comprehension
(2) Household economics
then Coding.
Everyone thinks that their profession is the most important in the world. But making everyone a programmer is not the most important task.
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
Yes. but then I think everyone should learn the basics of critical thinking. Fundamentals of programming isn't that different from algebra and geometry, so junior high-schoolers should get a dose. If nothing else, they'll learn that programming isn't rocket science: It's a flexible tool which can be used to do rocket science and make Caturday-related goofiness.
Everything in the Universe sucks: It's the law!
At the very least, everyone needs to understand that their phones don't run on magic. And maybe fewer people would look for source code by opening an exe in Notepad.
Correct. We should start with learning to read/write before we move on to the advanced stuff.
No sig today...
Kids need to be exposed to a wide range of subjects (including programming) that they may later choose to pursue. They don't need to be taught to be experts in every subject, but they do need the basic understanding that will allow them to start learning on their own and to know whether it's something that would interest them or not. That basic understanding will help them make good choices about what classes they take, what they major in, etc.
LOGO isn't all that hard and gives people enough insight into how computers work to cure them of some idea that it's all spooky magic done by scary people.
THIS. I learned VB.net, C++, C# and a little bit of Python in my Mgt Info Systems courseload as electives because it wasn't offered as required at the time (2008) I have checked back and it is, now. I may not 'be' a coder, but in my current position knowing the basics of it helps me describe bug errors in our software testing to the people that can fix it in a manner that they understand better than "I clicked this button in the web app and it didnt' work....". I talk to my kids freely about my job and my 14 yr old son has an interest in Legos and game level design, and I stress the importance of knowing how to program, along with math, art, and basic graphic design elements so that he has some idea of what goes into making a program and interface work, rather than thinking its all magic smoke. I feel that knowing the use of basic Windows applications like Office, Excel, knowing a bit about Macros, and for g*ds sake knowing how to type are almost essential for most any entry level job now. Many of the managers older than me by about 10 years that I know (im 37) wouldnt be able to re-interview for my job as a mid level support tech with their demonstrated lack of knowledge of basic computing.
If it's not broken, let's fix it till it is.
I'm torn on this issue as someone who works in a sales org but has learned how to code/is in a continual process of getting better at it.
On the positive side of things, it's absolutely amazing how much time can be saved by extremely trivial code. For example, I had a client who needed to check something like 800 URL's for a given result on their page. They were chunking out ranges of the URLs to give to a team of people to do the task before we told them to put down the crack pipe and give us 10 minutes. A quick Python script looking for said element on each URL in the list dealt with that task nicely.
On the negative side-- the one thing learning code has taught me is that I'll never be that good at it. I had to bash my brains out on a table for many, many weeks, just to understand basic concepts like lists and arrays, and am only NOW really grasping the concepts of classes/why I should care. My code is sloppy, works well only really when run by me, and my ability to read other code/make modifications is limited to say the least. I stuck with learning code ONLY because I truly enjoyed it, and even then, after about 6-7 years of working at it, remain pretty mediocre.
In short, I'll never be a very good coder. I had to work INSANELY hard to get as good as I am, and I only did so because I genuinely love coding (even if I'll never be a savant with it). Trying to force people to go through that sounds like bad news bears, and I just can't see it working on any level. On the other hand, I get the appeal, because really everyone benefits. I get along great with our engineers because I can genuinely speak with them at a level that is more attuned to what they are thinking, and I can legitimately translate between the two orgs better than they could without me. It should be noted that we also have some rare engineers who can cross over to our world and love them for it.
So in short, I get why people want this to happen. Forcing it however is a recipe for disaster.
Formal logic: Yes Troubleshooting: Yes Basic computer skills: Yes The fewer people who think computers are magical devil machines and can figure out how to solve technical problems on their own the better, but the vast majority of people will not write programs.
The Association for Computing Machinery wants everyone to code? I wonder what The Association for Fixing Your Car, Association for Small Repairs Around The Home, The Association for Recognizing and Stopping Child Abuse, The Association for Common Courtesy and The Association for Reasonable Adult Relationships would think. All worthy, imo.
Having worked in office environments, the amount of effort office workers could reserve by having access to a decent scripting language is immense; I once saw someone renaming over three thousand files by hand in order to change a date format. The potential drawbacks are also fairly obvious since businesses tend to do a terrible job of managing their IT tools and anarchistic coding is going to make this worse. However, the potential for productivity enhancements is there and it seems like a challenge which can be largely overcome, particularly if the workforce had these skills which were languishing. If this is the reality we should to push for, then some sort of programming experience which can be linked to useful activities seems like it would be worthwhile for many, from the drones in the office to automated farm equipment and CNC operators.
Ah! that's an interesting point..
Do Phones run on magic? To a lot of people they do, do you know how each component interacts with the others? Explain how a battery works and how it provides power to the device to allow two way communication on a global scale. I have an older boss (In his late 80's) He truly believes that little gremlins move images on screen, he can't comprehend the hardware and software interaction involved in the modern PC, so to him it is like magic.
Now we get to the interesting bit, as technology advances more and more people don't understand the base level of "Tech" involved in higher level computing eg, You know how to install a motherboard but few people can troubleshoot/build one as time progresses this will become more and more commonplace.
I'll use an extreme example of what may happen using an example from the warhammer series, It's 43rd millenium technology has advanced to a point where we have learnt far too much that the fundamentals of our technology are unknown, a cult (the mechaninium) has grown up to dominate higher and lower level technology, simple tasks become a religion and rituals evolve involving the simplest of tasks (eg turning on a switch)
How many non-technical people do you know that provide corporal punishment to their computers when they fail to work quickly enough, we know it has no effect but they believe that such actions are useful.
Magic is a dangerous think as it can easily turn into worship.
The question brought to mind a nice quote by Oscar Wilde: "A gentleman need not know Latin, but he should at least have forgotten some". Coding is not for everyone. Neither are history, poetry, chemistry, or Latin for that matter. But it's important enough to be included in a broad curriculum. Show your children everything, and they'll choose the stuff that is of interest to them.
If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
While its nice to know what coding is, as it helps make the magic box do things, it wont enrich most of the public to know how to do so.
Hate to break it, but 99% of the public really don't care how most things work, they just want it to work when its turned on. Knowing how an appliance ( yes, that is what a computer is to most ) works doesn't really make it work any better.
---- Booth was a patriot ----
"The question brought to mind a nice quote by Oscar Wilde: "A gentleman need not know Latin, but he should at least have forgotten some"."
Absolutly right and, probably, in the same sense as Wilde tried to transmit.
Should everybody learn to code? Absolutly not.
Should everybody learn to think rationaly, not to be fooled by appearances, find the nut of a problem and then be able to decompose it into action items, set a path of action to solve them and finally check the intended result with the obtained one? I think so.
And it happens tom that learn to code can be a fantastic tool, probably the best, to achieve that goal.
And it's a lot more fun than MS vs Linux, Java vs .NET, Nvidia vs AMD, or even vi vs emacs. Sorry "gcc or llvm", your grudge match will have to settle for a 3 AM slot on a low budget, obscure science light cable TV channel.
The big language demolition derby is still hot and furious, like the annual playoffs of old sports that still excite fans, if you can see past all the smoking wrecks like Modula and the entire team of modular programming cluttering the arena. If only the Perl 6 team could sort out their engine troubles and get their car into the arena, replace that sputtering Perl 5 vehicle and challenge that JavaScript/CSS/HTML/AJAX monstrousity that was cobbled together from a dozen different brands of automobiles, and that C++ bug that still works after being run over and rolled over and which just got a fresh set of wheels. OOP sponsors must be wondering which teams are still proud to bear their logos. And where's Haskell? Oh yes, loudly honking their horns from atop the safety of their functional programming pedestal while the LISP car circles round and round as if they expect a ramp to appear at any moment. Python? Dancing around the LAMP pole with PHP's go-kart. In one of the darker corners of the arena are the excruciatingly slow horse drawn wagons of the Fortran and Cobol teams, just trying to hold their ground. Follow the oil slick to find C. Java is struggling to move under the crushing weight of their massive armor, spare parts, and the huge gas tanks needed to feed their too thirsty engine. The kids would still love those Logo toy cars they used to hand out last century.
If coding is so universal, what language should everyone learn? We're nowhere near sorting that out. Shouldn't we be able to settle and standardize on the essential elements of a programming language? As it is, it's like arguments over mathematical notation. Multiplication works the same whether the symbol used is x or * or a dot or nothing at all because it's the default operation. But it's not so easy to tell what is trivial and what is important in programming languages.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
In my day we walked barefoot in the snow to get to school. Five miles - uphill both ways!
How old are you? Seriously, I'm an old fart and I love to make fun of people younger than me who say "why in my day". Did you have such a vastly better education than what's offered today, or do you just fancy yourself part of some elite? If the former, how do you know what's taught today? Do you at least have kids in high school?
I do have kids in school. The school places decently in national rankings, and I'm often alarmed by the quality of the kids' instruction. I think the GP is somewhat on the mark. For example, I've seen the kids taught to develop powerpoint presentations, where the emphasis was on the visual aspects of the presentation, rather than on the soundness or validity of their arguments. I've seen this even at the highschool level.
I don't have a good sense as to whether it's better or worse than when I went to school, because I'm not viewing both from the same perspective. But I do see a big gap between the education my kids are getting, and the education I wish they have.
Perhaps my expectations regarding kids' teachability are unrealistic (e.g., that they have longer attention spans and more interest than they really do). But I am sad that my employment situation hasn't allowed me the time to home-school them. I know they're capable of far more than is being asked of them.
Though for me Logic 101 was a lot better for my thinking than learning to code.
At the end of the day, coding is just a form of applied math. Sure, not 100%, but relational database is just relational algebra, UI programming is geometry and other stuff like matrices, functional programming is...well, yanno. And so on and so forth.
You probably can squeeze in some programming in math courses so people understand the basics. Not everyone should be expected to become a master programmer, or even a code monkey, but people should know the very basics, just as how they taught me the basics of how to bake a cake or whats the difference between the basic forms of investments in school.
Well coding, is the prime example where things that are not specific engouh, either fail totally or are COMPLETLY INSECURE (Pretty Happy Parsing errors)
You don't need to learn to code, you just need to learn how to describe something, that it can be reproduced within a certain margin of error. This is the description of a specification.
And you might say "reproducable yes, but does it work ?"
Not if the working condition is not specified.
If you can describe somehting acurate, THEN YOU CAN program!
Hint:
Good practice for writting "good"(see upper description) specifications:
- one page introduction make it 1/4 of a page
- List interfaces
- List operating conditions
- List operating requirements
- List ordering/delivery conditions
- List storage conditions
- List mounting unmounting possibilites and conditions (yes this includes tools and tool sizes)
- do the D-FMEA as easy as dancing YMCA !
based on this list collection of data you need to provide, if the data isn't 100% acurate and you know that, take an educated guess, (calculate, use your engineering skills, use previous data set a trigger level of acceptable conditions)
And it happens tom that learn to code can be a fantastic tool, probably the best, to achieve that goal.
Some of the worst logic and most fragmented display of problem solving I have ever seen in my life was produced by people who knew how to code so I disagree, learning to code does nothing by itself.
Coding is training for the mind. It's not strictly necessary for everyone, but it is broadly beneficial to everyone. What it teaches is the practical use of simple abstraction. Like learning music, it's good for you, even if you never get paid.
"We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
Should everybody learn to drive?
Should everybody learn to fish?
Should everybody learn to use an abacus?
Should everybody learn to make fire with 2 sticks?
Should everybody learn how to skin a rabbit with their bare hands?
The answer is no, and so is the answer to this question. In fact, this article is a perfect example of Betteridges law of headlines which, iirc, was covered here on slashdot a few months ago.
If you gave me a choice between a printer and a giraffe with explosive diarrhoea, i'll get my ladder and my raincoat
Bullshit. Kids have no way of recognising that aptitude in themselves. How could they? I find that people who haven't been introduced to computer programming previously have no idea what it entails.
Also, I'd like to point out that programming in school is mostly about structuring your thoughts logically and a feel for how computers work, not professional coding etiquette.
You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
I was good at math in High School. I got a 5 on the Calculus AP test. But I never did understand that whole 'f(x)' thing. Why not just put 'y='. I basically gave up trying to wrap my head around why someone would ever write 'the f of x'. Then one day in University in my Introduction to Computer Science class the professor shorthanded a function declaration on the white board as 'f(x)', and years of middle and high school math all of a sudden made a whole lot more sense. I think that many students would be able to grasp the concepts of variables in math class sooner if they had a chance to use them in a couple of simple programs first. Plus they would enjoy a little bit of programming a lot more than pre-algebra.
Alternate headline: "Should an article posing this question be posted to Slashdot every month?"
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
I am lucky enough to homeschool. I do it primarily for the reason you would like to homeschool. In theory, public education should be able to offer a better education than homeschooling. Unfortunately, our public education system is so broken on every level, from parent to president. Most kids leave high school with what I would consider about a 7th grade education. Even colleges are spitting out graduates with only an 8th or 9th grade education.
A good point. When I took geometry in HS I didn't like it and resisted learning it. It all seemed like just a bunch of arbitrary axioms that one memorized in order to solve puzzles, to my way of thinking. Later on in my education I ran across Euclid's Elements, and the way he put those axioms together into a logical system was a thing of beauty and elegance that I understood intuitively. Same content, but I only had the aptitude to understand it one way, but not the other.
"We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
For example, I've seen the kids taught to develop powerpoint presentations, where the emphasis was on the visual aspects of the presentation, rather than on the soundness or validity of their arguments.
You realize, of course, that this is also a valid skill in addition to having sound arguments or good information. The presentation of the information itself is something that is a valuable skill, and that includes how to insert various graphical features into a powerpoint presentation (or.. better.. some presentation software that doesn't bias toward powerpoint or keynote specifically) as well as when to use those features, and what to avoid.
It's really easy to become enamored with all the various features and wipes and whatnot and be distracted from the presentation itself by all the visual fluff. A good presentation segment will include that stuff and why to avoid it as well.
Can you be Even More Awesome?!
I disagree wholeheartedly that learning to code is too specialized. We're in a transitional period right now where people specializing in computers are the ones writing code, but once society commits to the information economy fully, we'll start to see domain experts writing code for their domain rather than computer experts having to learn the domain (or collaborating with domain experts) to write the code.
It's analogous to basic literacy. There was a time when specialists in various professions would seek out someone literate to do their reading and writing for them. Now, it's an expected skill for everyone to have. We're in that period for computer literacy. Eventually, everyone will be expected to write enough code to solve the problems they specialize in. There will always be computer specialists...the people who build the tools that everyone uses or people who's jobs require a higher standard of code. But we have that exact same situation today...journalists, writers, lawyers and many other professions are expected to have a higher level of proficiency with reading and writing.
It's imperative that people understand this. We're entering a period where more and more people aren't able to offer any greater utility than machines, be they robots or simple software. First it was basic arithmetic where computers exceeded humans. Over time, we've added the bulk of our assembly line work. Even advanced tasks like playing chess are now best performed by computers. Google and others proving that human drivers will eventually be replaced. We'll soon realize that almost every job that doesn't involve some degree of creativity is on that list. Learning to code will be the primary defense against being replaced in your work by a machine.