top | item 6237007

Everybody does not need to learn to code.

49 points| Libertatea | 12 years ago |slate.com | reply

73 comments

order
[+] freyr|12 years ago|reply
Every student should have, at least, exposure to coding and the opportunity to learn it. This has not been the case in my lifetime.

In middle school, a special instructor was brought in to teach programming to the GATE kids. She decided she could only handle one student. So out of the entire class, only one kid was exposed to programming in school

When it was time to enter high school, there were two public schools in the area. One had an AP Computer Science class, but the student body was notorious for its high rates of drug abuse. My parents stuck me in the other, which offered no programming classes at all.

In college, I applied to be a CS major, but I was required to choose a second major since CS was impacted. The school admitted me into my second choice of major. Despite pleading my case with the CS department and arguing with the provost after I enrolled, I was unable to switch into the CS major or take CS classes.

I don't mean to whine. I'm sure I had it a lot better than many self-taught programmers. And maybe if I fought harder, I would have gotten in. But the education system did me no favors in learning CS.

And when I see politicians and Silicon Valley billionaire executives lamenting the lack of skilled programmers in the U.S. while doing nothing effective to fix the problem, I have to roll my eyes.

[+] talmand|12 years ago|reply
My experience was that by the time I found someone that actually taught something "computer", I already knew more than they did. This was the rule until I was about halfway through college.
[+] throwit1979|12 years ago|reply
Sorry, I don't intend to cast aspersions on your upbringing, but why does class availability matter at all to this discussion? Myself, and everyone in the small group of middle school kids at my school who were interested, learned programming from books. Our school was extraordinarily poor, so the whole notion of CS classes was laughable.
[+] the_watcher|12 years ago|reply
Exposure and opportunity are the keys. Not everyone should learn to code, but everyone should be exposed to programming and given the chance to pursue it. Replace the year I spent learning cursive with a programming intro.
[+] mistercow|12 years ago|reply
Most programming classes that do exist also aren't available until high school. This is a mistake. Elementary school kids are totally capable of learning the basics (I was using HyperCard when I was 6), and they have a key advantage: they don't feel much shame from making mistakes. Kids get frustrated and distracted, but not embarrassed.

This is a major problem for adults learning to use computers in general, and for programming in particular. If you're afraid of poking at a system and possibly breaking it, it's very difficult to learn how it works.

[+] samatman|12 years ago|reply
Disagree. Everyone needs to learn to code.

I was taught long division as a child. Didn't like it; who does? Nor do I use it.

But...

When I was 15, I finally got a chance to study programming. One of the first things our professor showed us, was how to do string-based long division, with a computer.

The enlightenment was profound.

Why was I doing this, when everyone else was learning to symbolically find quadratic roots on paper? Why do we teach algorithms for years, and never, ever teach Algorithms if you don't specifically ask? Why is Al-Khawarizmi's legacy in education Al-gebra, and not Al-gorithms, which are actually named after him?

[+] samatman|12 years ago|reply
Let me elaborate. Anyone who has participated in the math education of a child, or remembers being one, has heard the compliant "But I'm just going to use a calculator! Why do I have to learn this!"

Currently, the answer is "if you want to get into college / learn more advanced things, you have to learn to do this, all by hand."

The answer should be "Well, if you want to get into college, you're going to have to learn how to program that calculator yourself. So you need to understand how to do what it does, or you can't tell it what to do".

The difference is huge.

[+] mistercow|12 years ago|reply
>I was taught long division as a child. Didn't like it; who does? Nor do I use it.

Really? I mean, I guess I don't like long division; nor do I dislike it. But I like being able to get its results, and I do it all the time in my head. What do you use instead?

[+] lazyant|12 years ago|reply
'Al' in Arabic means 'the'
[+] jusben1369|12 years ago|reply
Let me ask, earnestly, why is learning to code better or more important than:

- Studying medicine at school so you can avoid engaging with the expensive medical system for all but the most critical issues? - Studying law so that you understand how to read contracts and understand legislation?

Mathematics and language are the building blocks of programming. We study those. Going further upstream into the outputs of those disciplines (medicine, law, computer science) to pick compulsory topics doesn't strike me as making much sense.

Also, how do we reconcile this with the emphasis on design whereby the concept of the underlying nuts and bolts should be abstracted away from the end user? (two very separate questions I know)

[+] Volscio|12 years ago|reply
I would figure a lot of what you pay a lawyer for is not making sure you understand the contract but a) to save time and b) to have someone who's in the profession and knows the legal quirks, loopholes, and procedures.

I would figure a lot of what you pay a doctor for is not to mend every problem you have with your body to but to ensure that it's done timely, safely, and with the least amount of risk/damage/scarring/whatever as possible. Yeah you could probably do your own surgery but why?

Learning to code is hardly as serious an undertaking and yet it teaches you how to think about solving a problem, estimating time to solve that problem, and reducing the amount of time needed to create the solution to that problem. It teaches general problem-solving skills and at the very least can lead to recreational uses (building small games or family web sites).

I think problem-solving is probably one of the most important skills one needs in his toolbox to succeed in life and so why wouldn't it be taught as early as children can comprehend it?

[+] samatman|12 years ago|reply
You know how Physics is sometimes viewed as a kind of ad-hoc applied Mathematics? For that reason, we often/usually consider maths the more fundamental discipline.

Mathematicians are generally doing ad-hoc applied computer programming in order to carry on mathematics at this point. Give the academy another 50-100 years to figure out what this means, if anything, about the fundamentals of each discipline.

I think we'll conclude that advances in the rest of mathematics are all built on computable mathematics now, including proof, making computation foundational until/unless someone finds a more powerful approach.

PS: There are no doubt mathematicians reading this, and the ad-hoc part may make you bristle. If you can point me to a paper that begins with a proof of correctness, of both the hardware and operating system which ran whatever code was involved, I'll take it back.

[+] kolinko|12 years ago|reply
Basic medicine (how the body operates) and basic law (how the government operates) is usually taught in elementary school.

Basic computer understanding is not, or at least is being taught extremely poorly. Children don't need to learn the intricacies of Word. What they should be taught is how to code (so they understand basics of computers/filesystems/text editors) & use Google (so they know how to find more information) - everything else they can teach themselves.

[+] zeckalpha|12 years ago|reply
The ability to program is the literacy of the millennium. One thousand years ago "Everybody [did] not need to learn to read", yet today, many countries have a near 100% literacy rate.

However, I don't think we need to force today's programming languages upon people. Let's invent the printing press of programming languages, making the cost of learning to program much easier. (IFTTT is working on this.)

[+] cgore|12 years ago|reply
The best example of this are spreadsheets. There are plenty of people who don't think they can program and don't think they have any need to program, but will write some really insane things in Excel. They just don't realize what they are doing is programming, poorly. The great advantage of computers isn't "better TVs", it is that they are "compute-ers", and anybody who has an office job has a real use for one.
[+] mathattack|12 years ago|reply
Of course not. And everyone doesn't need to learn how to drive. Or speak Spanish. Or cook for themselves. Or balance credits and debits.

But people who can do any of the above proficiently have many doors and options open to them that others don't. And those who can do it at least a little bit can at least have some awareness for when they hire someone to do it for them.

[+] gus_massa|12 years ago|reply
You just forget reading and writing. A few centuries ago most of the people couldn't read and write, and it was not clear that it was a good idea to extend that knowledge to everyone.

"But people who can do any of the above proficiently have many doors and options open to them that others don't. And those who can do it at least a little bit can at least have some awareness for when they hire someone to do it for them."

[+] bobbbinsIII|12 years ago|reply
most people can learn to drive, learn another language and learn to cook. a much smaller number of people can learn to code competently.
[+] kailuowang|12 years ago|reply
IMO, one of the main benefits of everybody learning a bit computer language is so that they can understand better how computers think, which is quite different from people.

In an age when people are starting to interact with computer more than with other people, it's certainly valuable.

I don't worry too much about novices building shitty things, because debugging crappy code takes way too much energy then learning the language, from my knowledge, nobody enjoys that unless they get paid. And IMO corporations hiring crappy programmers is a problem that has nothing with everybody learning to code.

[+] michaelwww|12 years ago|reply
I think you make an important point here. People should understand basic math and basic programming, if only to protect themselves from charlatans. If more people understood basic financial math we wouldn't have as severe a credit crisis as we had recently. People would have understood the risk in all those crazy loan offers (no income - no money down - no problem!) Congruently, when companies of the future say "trust our computers, they're artificially intelligent" people are going to have a little knowledge to base that trust on.
[+] jjtheblunt|12 years ago|reply
The title is crap English, but common: ignorance of De Morgan's laws means the universal quantifier "everybody", in its position relative to "not", means no one should learn to code. (Engineer with a Germanic Linguistics minor pet peeve.)

The proper wording for what the retarded author intended (it's Slate, after all) is "Perhaps not everybody needs to learn to code" or similar, but the not needs to negate the universal quantification. Because negation is not commutative with quantifiers, what the title says is not the same.

[+] qu4z-2|12 years ago|reply
Technically it doesn't mean "No-one should learn to code", it means "No-one needs to learn to code."
[+] npalli|12 years ago|reply
Well atleast the guy training others in the opening picture needs to :-). He is mixing cases in javascript (defined TXT and doing txt.toLowerCase()). Perhaps an HTML dude who is doing javascript.
[+] nlh|12 years ago|reply
Heh - I spotted the same thing and immediately assumed, perhaps naively, that he was pointing to an example of something that was a mistake ;)
[+] da02|12 years ago|reply
There's also the use of document.writeln.

I'm no JS expert, but... I thought that was a big NO-NO.

[+] warmwaffles|12 years ago|reply
glad I wasn't the only one who spotted this.
[+] crazygringo|12 years ago|reply
Nobody needs to learn how to code, any more than they need to learn contract law, or organic chemistry, or welding, or music composition.

People talk about code "literacy" as though it's the 21st century equivalent to reading and writing, but this is crazy -- even as a programmer, I don't interact with any of my devices via code. Being a programmer doesn't help me troubleshoot Windows or get my printer working. I don't configure my apps on my iPhone using code; I use their preferences screens. I don't have databases I need to query using SQL, anywhere outside of my job.

Programming is a profession, period. It's not a generally useful skill like riding a bike is. It can be useful to teach in schools, but only in the same way high school chemistry is -- not so the general population learns it, but just so the students who might want to choose it as a career, have enough of an initial taste of it to realize that.

[+] mistercow|12 years ago|reply
>Being a programmer doesn't help me troubleshoot Windows or get my printer working.

I think that is partly an artifact of closed source OSes. When I used OS X, I almost never fixed a problem with programming (other than a problem like "I don't have a program to do this"). Having switched to Ubuntu, I actually have found programming to be a useful way to work around problems.

Sometimes there's a "right" way that involves digging through documentation to find some random option, and an easy way that involves writing a shell script.

>It's not a generally useful skill like riding a bike is.

I totally disagree. It's not as useful as riding a bike, but it's certainly useful even when not used professionally. I recently was working out a recipe for a "one food to rule them all" inspired by soylent, and I wrote a program to calculate the ingredient proportions. It had nothing to do with professional programming, and it was incredibly useful.

[+] codegeek|12 years ago|reply
"does not need" can be applied to pretty much everything. But the point is not that. The point about learning to code is simple: It is definitely one of the important drivers of the next few decades. 100 years ago, most people could not read/write in many parts of the world. Today, thats not the case. Why ? Because reading/writing is an important part of how we live our lives today. Same with computers. Yes you don't need to learn how to code and still know how to use a computer. But that is today. Who knows 20 years down the road, coding (at least some kind of hacking) will be part of what we do on a daily basis ? Food for thought!!

Learning to program also teaches you a thing or two about problem solving and critical thinking. I have a 5 month old daughter. Guess what I will get her to play with as soon as she is old enough to start hitting the keyboard ? Yep, it will be programming.

[+] geekbri|12 years ago|reply
I used to work for the company that started this initiative. It's all just marketing fluff. A friend of mine who was there during the entirety of this initiative said that out of the 30 ish people who were forced to do this only 1 took it seriously. He also felt it was a severe waste of the engineers time.
[+] jliechti1|12 years ago|reply
From a practical standpoint, I really wish everyone was taught enough programming to know how to automate basic manipulation of text data. I see way too many people editing long lists of data by hand, when there are much better ways to go about it (even Excel works great for this kind of stuff).

Just knowing this setup below can let you do some really power automation of manual tasks and can save you a lot of time.

Example template in Python:

  import csv
  with open('mydata.csv', 'r') as csvfile:
       reader = csv.reader(csvfile, delimiter=',', quotechar='"')
       for row in reader:
           # Data manipulation here
[+] Jach|12 years ago|reply
I have more or less the same viewpoint. There are big gains if everyone understood how much time code loops can save, and if they started to see the areas of their lives where a manual task could be cast into an automatic task without much work.

But this suggests a different way of teaching intro programming, one that is more tool-based than concept-based, a way that's about searching for the existence of a tool and then finding and reading its documentation or examples so that one can use it in a simple, encapsulating control program. If you don't know about the existence of imagemagick, are you going to think you can loop through all the images in a folder and resize them, or extract a subimage from them, or something else, without having to write a ton of code? Maybe not, but you might search for a command line program to do the hard part and discover the tool, or it might have been part of an intro programming course focused on "look at all the neat things general computers can do to save you time if you have this problem". Same thing with Python's csv module, which someone who has used Python for over a year in a CS class may not have even known was there all along. There are lots of powerful one-liners and small code chunks that deserve a lot of respect since they can save so much time.

[+] wry|12 years ago|reply
I agree, basic scripting and automation would be more useful to the general population. Rather than just learning to code, I think that many people people could benefit from learning how to use technology first, include some theory and logic courses that lead into CS.
[+] jmilloy|12 years ago|reply
The logical fallacy here is arguing a general statement using a specific/narrow instances of it: "learn to code" is a very broad statement, and the differing opinions seem to stem from choosing (different) specific meanings.

When someone says "everyone needs to learn to code", they probably don't mean that everyone needs to become an expert. It's the same when we say "everyone needs to learn math" or "everyone needs to learn how to write."

On the other hand, when people say that "no, everyone does not need to learn to code", they tend to compare learning to code with software development, graduate level physics, etc.

[+] walid|12 years ago|reply
Totally agree. Programming should be in the school curriculum just like any other subject. Not everyone is going to be a coder, doctor, engineer or lawyer but we all need to know some (not extensively though) basics of each profession.
[+] kyllo|12 years ago|reply
I would say that not everyone needs to learn to develop software. Software development is a sufficiently difficult and complex job, that is best left to trained experts who do it full-time.

But everyone should learn how to use their computer effectively. Everyone would be better off if they were a "power user." And in the current state of computing, the complexity of computer architecture is not yet sufficiently encapsulated as to render it unnecessary to attain basic competency in some programming language in order to achieve that.

In other words, in order to leverage your computer's full power, you need to learn some scripting language and be comfortable operating your computer from a shell (be it bash, cmd, powershell, whatever).

Most people don't seem to have a clue how many degrees of computer literacy there are. The assumption seems to be, that you are either "computer illiterate" (which means you are an old person who hunts-and-pecks at the keyboard, double-clicks everything, and can at most use "the Googles" to do a search), or you're a "normal person" who can touch type and operate a GUI and maybe do basic formulas in MS Excel, or you're a "geek" who can read and write any type of programming code, build me a website, fix my internet connection, disassemble and repair my computer hardware, etc etc and you probably slid out of the womb knowing how to do that stuff. Yet somehow, you are still only making a modest hourly wage working at the Genius Bar or the Geek Squad.

Where most people really should be is somewhere in between the "normal person," GUI-only level, and the imaginary super-geek, computer whiz level.

[+] Dogamondo|12 years ago|reply
"Everyone should learn how to change a tire". That was what was lamented when I was a kid, so we learned it in boy scouts.

Let's take it a step further... "Everyone should learn how to change a cam-belt", "Everyone should learn how to perform a basic car service"..."Everyone should know how to rebuild an engine".

How far do you want to take it? I agree with the OP, moreso nowadays that we move more to consumption based computing devices.

To continue my analogy of the motor car to coding, to me both are really on a 'need to know basis' in the modern landscape.

You don't really need nor may be able to easily learn the intricacies of how your car works these days as they're a lot more sophisticated than the vehicles of yore and they're also lot more reliable when it comes to their intended purpose.

Does operating your iPad need anywhere near the learned skill of running programs on the C64 of yore?

[+] walid|12 years ago|reply
The thing is you are taking the learning metaphor a step further every sentence. You do need to learn the basics of maintaining a car if you own one. You might need to know about changing tires and also making sure the radiator has enough water in it. These are basic things and equally apply to computers. Not because you need to build a car or compile a computer program but because without basic education you don't know how to properly manage the computer like you do your car. Can you also imagine how much less bad computer laws will exist if lawmakers knew a little bit more about computers rather than rely on trial and error to get things right?
[+] fournm|12 years ago|reply
I'm more in favor of everyone learning CS theory (primarily logic really and anything else would just be icing on the cake), which would be a more transferable and honestly useful skill.

As it is, the most states try to bake learning how to write formal logic proofs into geometry and they do it fairly poorly.

[+] garg|12 years ago|reply
Programming is problem solving. Fine, don't learn how to code, but how about learning how to solve problems? And learning how to code is certainly something that can assist in learning how to problem solve.
[+] daja|12 years ago|reply
A lot of school kids don't even have basic math or writing skills. I see the geek appeal of everyone learning to code, but it's really not practical. There are far greater concerns. I think a personal living class should be required. Kids don't know anything about opening a bank account, loans, renting an apartment, etc.
[+] agumonkey|12 years ago|reply
Maybe not domain[1] specific languages, but recursive logic is cleansing for the mind.

[1] if by 'learning to code' they mean 'call a few ad-hoc libraries to process and format strings into <foo> concrete syntax' then I'd say it's domain specific and it's useless outside the current trend.