76 comments

[ 3.6 ms ] story [ 104 ms ] thread
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.
glad I wasn't the only one who spotted this.
Heh - I spotted the same thing and immediately assumed, perhaps naively, that he was pointing to an example of something that was a mistake ;)
There's also the use of document.writeln.

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

document.writeln is generally frowned upon in production code since there are better ways to manipulate a page using the DOM. I still see it used occasionally for debugging (although even that usage is disappearing, as most browsers have some form of debug console available) and in tutorials and books for beginners.

Here's a Stack Overflow post that outlines some of its pros and cons. http://stackoverflow.com/q/802854/1288

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.
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.

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.
This is one of the better essays arguing against "learn to code" because it actually acknowledges that there are real benefits to learning coding that don't relate to working in an IT job, just as there are real benefits to learning to write that don't relate to being a published author.

But I disagree with the notion that, as the OP states, that learning to code is futile because "most who “learn to code” will end up learning anything that sticks."

One of the most common niche phone apps I've seen used day-to-day, among my peers, are apps used to calculate tips from a bill. Even though the math needed to do so is trivial: it's literally a concept mastered by fourth or fifth grade. Yet these tip-calculating apps are popular. Obviously, math is not something that "sticks" in a practical way with most non-STEM people...yet, why do we bother spending roughly one-third of the K-12 curriculum teaching and testing it?

Well, from my layperson's viewpoint, I'd argue that while many people lose the ability to do math, they at least understand that it exists. They may not be able to multiply 0.15 or even 0.20 against a whole-dollar amount in under 30 seconds, but they at least get the concept of percentage of a whole, and, if there are multiple diners, the concept of division and order of operations (you want to divide the bill after adding the tip).

Would they understand this without any education in math? I'm just a layperson but I'm guessing that such a concept could be totally foreign to someone who has never learned division. At the very least, if such a person were given a malicious app that incorrectly calculated the tip (on the order of 2 to 3x, in favor of the server), that person would have no idea that they were being fleeced.

So I think that it's too early to give up on coding just yet...there's a middle ground between baking out a skeleton Rails app and having done enough code to understand logic and computational thinking for the rest of your life.

>> They may not be able to multiply 0.15 or even 0.20 against a whole-dollar amount in under 30 seconds

I don't know how you would even need 30 seconds to do this. Lets say our bill is $62.50. Finding 20% of that is simply multiplying that by 0.20, which is also just multiplying by 2 and moving the decimal point over on stinking place.

2 * 62.50 = $125.00 ~ 12.50

It's that simple. I don't even think about it. Maybe people just see '20%' and that scares them.

Maybe that's where the problem lies. Your average non-coding person might spend all day trying to figure out how to sort a list of names but it would come naturally to a C+ programmer like myself, and come even faster and in a much better algorithm/implementation to someone who's a good programmer.

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.

most people can learn to drive, learn another language and learn to cook. a much smaller number of people can learn to code competently.
We should at least give them a shot and a nudge in the right direction, hey?
A much smaller number of people can learn to drive like a professional driver, speak another language fluently, or be a restaurant chef. Coding isn't isn't really different from those other activities: you should learn the basics, because it will help your life, and leave the complex stuff to professionals.
Trust me, I don't cook competently, but I live alone and can get food done when needed. We don't all have to be professionals at something but we need to understand it especially when our lives depend on it. Take medicine for example, I'm also not a doctor but that didn't stop my school from forcing me to learn biology (which I loved btw) and I think we should all know things about the world when we deal with them on a daily basis. I also didn't major in electronics but I still know better than showering and cleaning the innards on the hair dryer with water while it is plugged in.

It is the mentality of imperative knowledge that should be considered when talking about teaching programming. Not the idea that all people should know how to compile Linux.

You caught my spirit perfectly. A little biology knowledge can help interacting with a doctor. It's silly to assume people should know how to compile their operating system, but an appreciation and understanding for how data is aggregated and manipulated is useful.
Only a small number of people might be coding competently currently, but that doesn't mean only a small number CAN.

There is nothing special about programming; like learning a language, it is very possible to become competent, and anybody who is not mentally delayed can do so - it just takes effort. If you can code competently well done, but don't think yourself special.

coding competently requires intelligence and attention to detail. you need to be smart not just "not mentally delayed".
Not everyone needs to code competently. Just like not everyone needs to speak Spanish competently. (Or can learn other languages competently)

But... Learning a little Spanish can increase one's appreciation for Spanish culture. Even attempting to learn some programming can make one much more effective when they hire or direct a programmer, or engage in discussions about online privacy, or ask someone to help analyze a problem.

somewhat strange that this was downvoted. some people are obviously incapable of facing up to reality.
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."

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.

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.
I'm the opposite. Judging from my whiteboard handwriting, I wish I spent more time learning cursive.
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.
(comment deleted)
I remember trying that when I was in middle school and discovering that the local library did not exactly have a great selection, and I didn't know anyone who could recommend good resources. Searching the web kept bringing up the same few overly shallow tutorials which didn't even explain how to actually run a program. It's less of an issue today, but finding good resources to learn from matters.
Our library was also mostly useless. Maybe it's opportunity cost, then. We lived a ~5 hour drive away from anything resembling a city, so purchases of anything other than food were very infrequent. This allowed us to save up until the next trip to purchase a few C++ or Pascal( yeah I know )books from Bookman's and a cheap (student edition can be had when you're 10 years old without a student id) copy of turbo c++. That would last a year of learning. The next year, perhaps a VESA graphics book, etc.
> why does class availability matter at all to this discussion?

It matters because that's exactly what this discussion is about: making coding/programming part of our educational system.

It's about teaching kids programming in schools, and providing them with the same time, resources, and instruction they get to learn cursive or algebra or home economics or English.

Of course, we could always get rid of those subjects too, and expect the kids who are interested to learn them from books in their free time.

Also, not to cast aspersions on your upbringing, but how were you introduced to programming? Did you have a computer in the house or at a friend's house? Or did you just imagine sitting at a computer, and imagine typing commands into a computer, and imagine the results? Perhaps home computers are commonplace now, but it wasn't always the case. And it's not always the case in poor households. Is it likely that children from poor families and attending poor schools would have the same exposure to programming that you enjoyed?

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.
I had the same experience. While that's undoubtedly a credit to our tremendous intellects, it also supports the idea that education in "computers" needs to be rethought.

We've been teaching kids math, writing, reading, etc., for centuries (and we still struggle with it). But coding is relatively new, and our educational system doesn't know what the hell it's doing.

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.

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?

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.

(comment deleted)
Both answers are either incorrect or inapplicable to a large portion of the population.

The real answer has always been that you need to learn intuitively what "division" actually means, and we have no clue how to teach that, but doing it by hand seems better than the alternatives. I'm not sure if teachers just choose not to phrase it this way or they don't know either (in which case the real reason is because they were told not to allow calculators). But calculations are easy. Intuition is hard. Until we have better ways to teach intuition, I'm afraid we'll have to keep trying to let kids build it via forcing a slow-down of the thought process by having them do it by hand.

A better example would be integrals and antiderivatives. One can certainly learn how to "find the integral" just by using antiderivatives. One could learn how it applies to the real world, as well. "A ball is moving at 30m/s for 10 seconds, what distance did it travel?" Increment the exponent, divide the coefficient, plug in X.

But then kids approach, say, revolutions of solids. Suddenly, due to the way they're taught, they think that there are different formulae for rotating about the x and y axes. If they're taught how to construct the Riemann summation from scratch, see the relationship between that and integrals, and see the relationship between a curve and its revolution, I think that's when they start to get the idea of what an integral (not an antiderivative) really is.

It's the difference between saying:

I want to find the volume of y = x^2 rotated about the x axis. I have the function and I know I need to multiply it by the formula for a circle and then integrate it.

vs

I want to find the volume of something. I can describe each point on the cross section. Each item in the summation can be described as circular. I can describe all of these circular sections at once by adding them all together. The integral is that sum. I can find that integral by finding the antiderivative of the original description.

Which seems more "true?" Which is more difficult to teach? If kids always used calculators to pursue question 1, they'd never arrive at the problems that would let them arrive at question 2.

>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?

A calculator. Or more likely, the calculator app on his iPhone.

Personally, I like the ability to at least be able to get a rough approximation of an answer without having to resort to tech... but hey, call me old fashioned.

I had a very old-fashioned mathematics education. If I was good at doing math in my head, I'd be a professor. Instead, I had to learn to pick problems apart, or I couldn't do them. I'm also bad at remembering the precise steps involved, so when I found out you could write a problem once and then stop thinking about it, well, I never looked back.
I had to learn to pick problems apart

Well, that's what all good programmers do, so it doesn't look like not being good at math as been a disadvantage - quite the opposite I'd say. Sometimes you need to tackle things from a slightly different angle.

>A calculator. Or more likely, the calculator app on his iPhone.

That sounds so inconvenient. Sometimes I like to design programs or solve problems in my head when I'm in the swimming pool. I don't think they'd let me bring a calculator or phone in there.

Oh, I'm quite incapable of doing long division in my head. Far too ADD.

Professionally, I write parallel OpenCL software used by the mathematics, physics and chemical engineering communities. The irony is not lost on me.

EDIT: When I need to approximate long division, I multiply up from the divisor towards the dividend. I find this dramatically easier. My mother is incapable of subtracting in the normal sense, and does the same operation with addition.

I'm guessing that's ADD, predominantly hyperactive-impulsive type. I'm predominantly inattentive, which is actually probably why I spend so much time doing mental arithmetic instead of paying attention to what's going on around me.
Correct!

Most of my clock cycles, when I'm thinking, are playing a complex and ever changing set of arpeggiated notes. While I suspect that this is my linguistic ability functioning in some kind of overdrive, I have no particular insight into the exact process.

'Al' in Arabic means 'the'
yeah and 'gorithm' in English means "Khawarizmi"
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.)

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.
Perhaps learning to code shouldn't be required for the general populace, but maybe it should be in higher education, perhaps just for a scientific degree?
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.
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.

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.

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
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.
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.

"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?

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?
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)

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?

Hey Volscio thanks for that. I agree that problem solving is great skill to have. Philosophy long filled that role but has fallen a little out of favor. I studied it (minor) at University and many of the lecturers pointed out (mostly in a hope to keep us engaged and motivated) that some of the world's best philosophers make a small fortune on the side with paid engagements for large corporations. Corporations literally give them problems that they cannot solve in terms of the market and philosophers solve them. While somewhat skeptical at first I was ultimately very impressed with how philosophy taught a disciplined approach to problem solving
I think problem-solving is probably one of the most important skills one needs in his toolbox to succeed in life

This is the key statement. But I don't think it needs to be taught through programming, people were problem solving way before the invention of computers, or even electricity. I know this is HN so we have a biased view on this, but the ability to think/problem solve and programming do not go hand-in-hand.

I certainly agree that everyone should have exposure to programming, and the opportunity to pursue this further if they so wish, but to thrust it upon everyone is not the answer - not everyone will end up in a job where IT is the main focus.

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.

That's an interesting perspective I hadn't thought about. I've also always seen programming as a good way to actually learn math. Topics beyond basic algebra (e.g. calc, linear alg, stats, and even geometry) seem to lend themselves pretty well to programmatic implementation. Just imagine having to implement visual representations of Euclid's elements or Integration as Processing[1] apps. Sure you'd necessarily have to learn the concepts in order to implement them, but more importantly, you'd get to avoid all that cryptically terse math notation in favor of more sensible programming conventions :)

[1] http://processing.org/

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.

Again a pompous article trying to make an elite of the coders with an academic degree vs the self-taught crowd. Many excellent programmers I know are self-taught and due to their passion for working with code, they are much better than their 'full of degrees, certifications and diplomas' counterparts.
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.
"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.

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.

>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.

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.

Technically it doesn't mean "No-one should learn to code", it means "No-one needs to learn to code."
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.

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.

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.