Which is true, and he gives a lot of points to support it, and I'd nod my head for the entire article if that was the title.
From my perspective though none of his points seem to support his chosen title, "Programming is not for everybody."
(It gets a lot sillier when you realize that nobody would title an article "Logic is not for everybody.")
John McCarthy (AI, Lisp) once said something akin to: "I think everyone should learn programming. It's the language we'll use to talk to our servants."
I think there is something in programming for everybody. It doesn't have to be compiler design or making the next facebook. Even if its just understanding what an algorithm means, so that you can write clear directions (a recipe, after all, is just an algorithm for preparing food, complete with for/while loops, etc).
Programming is just logic plus communication. And being able to convey ideas more clearly and more accurately is a delightful skill that will find uses all over life, regardless of if your job is programmer, EMT, chef, etc.
I kind of see coding (or scripting) similar to how I see writing. Not all of us are good enough, motivated enough, or would even enjoy writing for a living. But because the written and spoken language drives much of the world today, it's important to have a strong grasp of language, be able see how it is being used for or against you and be able to use it to your advantage.
The ability to read and write code is similar. Being able to write even simple scripts or simple data filters can multiply your productivity or give you new perspective on how to frame problems and approaches to solutions.
Without a strong grip on the written and spoken language, we are at mercy of others who wield it better than us. Code is in many ways similar to this. I may never be a a master writer or a master programmer (or even a 'good' one for either), but knowing the basics can't hurt.
Of course, we should note that writing and coding will have "diminishing returns" for most everyone. We should exercise discretion in how far we should take our pursuit and have good judgment on what we expect to get from either discipline.
I, for one, think that everyone should learn practical basic statistical analysis skills.
I also disagree with the "learn math!" crys of developers; I rarely find myself using more than basic algebra (variable substitution) in most tasks, and you don't get into the abstract calculus stuff until you're working on solving graph problems, /which is usually a bad idea/ because some researcher already has a better algorithm than you're thinking of using for the given problem. I would also assume that "learn to code!" doesn't mean "learn pointer math and understand how to balance a b-tree!", so let's not pretend that those kinds of things will matter to beginners.
TL;DR learn a /scripting/ language relevant to your interests (because you're more likely to stick with it if it interests you), and don't sweat the math until you absolutely have to. I would argue that /grammar/ is much more important in programming and understanding verbs vs. nouns is of great importance.
If we could get every sports fan to learn how to work a spreadsheet to track their favourite teams and be able to calculate the odds of X team beating Y team, I feel like the world might be just a tiny bit better.
If we could get single parents to learn how to project grocery costs and compounded interest on not paying that credit card bill this month in favor of buying ______ (ignoring how awful that situation is), I feel like the world might be just a tiny bit better.
If teachers had systems to conveniently track student homework completion / success rates, they may be able to more efficiently target their lessons to focus on those topics where students did the worse, and I feel like the world might be just a tiny bit better.
I'd also argue that "Personal Finance" and "Common Legal Matters" would be incredibly useful classes as /required/ for highschool graduation.
Ideally, some HTML/CSS and SQL on top of that so you can build a basic "full-stack" CRUD app, or customize a basic framework (Rails or similar) app.
That level of knowledge would make millions of non-programmer workers vastly more efficient at their jobs, but there isn't really any need for most people to go any deeper than that.
So math is useless.
And this is why it stroke me as odd when one of my younger (and intelligent) non-IT colleagues told me a couple of months ago "I cannot compose this fancy school essay, why cannot they ask us straight what they need written down?".
That's when I realized that even plain writing (as in composing) is not for everyone, there are people who back off when they hear that they need to "invent" stuff to be put on paper/screen/word editor.
I have met members of the general public. (Wow, I can't think of how to use that phrase without sounding at least a little bit patronizing. Fine. I am a little bit patronizing.) Many of them should have taken a logic class at some point. At least enough not to fall for obvious nonsense. At least enough to reason and argue avoiding fallacies and obviously incorrect positions. At least enough, in short, to think properly.
Maybe a deep understanding of different logic systems is not for everybody. They probably don't need to study the predicate calculus. But logic in general? Everybody needs at least a bit.
And it doesn't seem to be changeable at college level - I've no idea if it is innate or learned at an early age, but for adults there is a difference between "logical" people and "intuitive" (for lack of a better word) people.
For the first type it is trivial to teach/learn things such as logic, computing, troubleshooting, etc - even if they have no prior experience and have always been working and studying in unrelated areas such as linguistics or psychology. I've taught them and seen that - if I get an HR girl in an Excel course that 'thinks logically', within a few weeks she'll be able to do more with data than a number of non-logical-thinkng CS grads.
For the second type, I've seen them spend a decade with both college+masters studies and lots on-the-job experience, and they still haven't changed by that - they may remember the concepts of logic and even pass an exam on them, but they don't/can't/won't apply them. They aren't dumb - they may be very intelligent, hard working and effective at they know; but still they won't "reason and argue avoiding fallacies and obviously incorrect positions" even the next day after taking a course about logical fallacies. As you say, they are not "thinking properly", but that's how they are happy and achieving results and they'll stay that way.
Anyway, the reality is sure, logic is not for everyone. It clearly is not. I'm not talking about graduate level logic is not for everyone; I mean plain old logic is just not for everyone.
We may want it to be. But that's not reality. I think the world would be better of if everyone was at the same intellectual level of Einstein, but that's not reality.
This is a bit of a myopic view that assumes everyone has the capability to learn logic.
(Un)surprising truth: some people are dumb, and simply can't grasp it.
Very well said!
The "programming is not for everybody" arguments seem to come from looking at programming as the activity of coding at the master level. Anyone who's gotten anything done by asking someone to do it, or has found some information by asking a question of someone has engaged in the core activity of programming - i.e. the thinking behind what needs to be done and what information is needed for some task at hand and the communication of that thinking.
The making aspect of programming should also not be overlooked. Just as making your own table is fun even though you may not have made a good table by carpentry standards, or you may paint something to decorate your wall even if won't go for a penny on ebay, coaxing a machine to help you with something is also satisfying.
http://www.regular-expressions.info/email.html if you don't get why this is a bad idea (it's the equiv. of memorizing pi to the thousandth digit).
For example some artists may not want to "limit" their thought process to just logical, to more freely connect with and express their emotions (by no means am I implying that programmers lack of emotional connections). But after being trained to program it may be quite difficult to think any other way but logically.
I want to live in a world where I can find and talk to somebody who has not learned to program, who does not have any idea how computers work, but is exceptional in some other completely unrelated field, to see how they think, what their opinions are (which could be very different from my own yet extremely interesting). A world where (nearly) everybody has learned to program means it won't be possible (or at least very difficult) for me to do that.
Getting everybody to program of course has its many benefits to society, but the "What Schools Don’t Teach" video and similar articles always seem to imply that there is absolutely no downside, which I personally believe may not be true.
Seriously, what the hell?
I asked her, what was her age.
" oh sweet child, I have no idea, and it does not bother me, because it is not important, what is important is that I am old.now, and I will die soon, and that before being old, I did good things with ny life. You are young, do your best, strive for it while you can, and when you get old, enjoy what remains of your life. Don't care about your age, or the numbers on it, just live and do it, when the time.comes.to it be over, it will be over, it is useless to predict that."
And then, I was amazed at the wisdom.of a old lady that don't believed in math.
If you don't know basic maths, you are likely to spend much of your life getting ripped off left, right and centre.
And the whole thing is not about my selfish reasons to satisfy my curiosity, it's about diversity in the thinking process of people in society. Programming changes how some people think and reason, and it may not be the best for everybody in the entire world to learn, regardless of profession. That is my entire point.
Aside from being needlessly exclusionary, the entire notion that learning basic programming "warps" your way of thinking is about as ridiculous as the inverse - that learning about color theory and basic art & design irrevocably turns us into illogical über right-brained caricatures.
In my opinion, programming is not as simple of other forms of knowledge such as color theory. Knowing color theory doesn't mean you can paint well, just as knowing the syntax of a language doesn't mean you can write good programs. Programming is more about a way of thinking, and my entire point was that this way of thinking may not be beneficial/desirable to everybody in society.
Just like we shouldn't force everybody to learn English. People who can speak English may think quite differently from people who can only speak Korean or Chinese or German, and I don't think it's good to try to get everybody on the planet to learn to speak English. Part of it may be cultural, as with learning languages (programming languages included) you are inevitably exposed to the culture.
"By deliberately learning to imitate mechanical thinking, the learner becomes able to articulate what mechanical thinking is and what it is not. The exercise can lead to greater confidence about the ability to choose a cognitive style that suits the problem. Analysis of "mechanical thinking" and how it is different from other kinds and practice with problem analysis can result in a new degree of intellectual sophistication. By providing a very concrete down-to-earth model of a particular style of thinking, work with the computer can make it easier to understand that there is such a thing as a "style of thinking". And giving children the opportunity to choose one style or another provides an opportunity to develop the skill necessary to choose between styles. Thus instead of inducing mechanical thinking, contact with computers could turn out to be the best conceivable antidote to it. And for me what is the most important in this is that through these experiences these children would be serving their apprenticeships as epistemologists, that is to say learning to think articulately about thinking."
It's certainly a desirable trait for everyone whom we allow to vote.
Is there any evidence for this assertion? I've noticed changes in the way I think after years (not a couple classes) of programming, but I highly doubt basic programming knowledge in any way inhibits creative ability. However, if there is reason to think so, I'd be fascinated to read about it.
Cooking is not for everybody. But we still learn to cook.
Mechanics is not for everybody. But I was still out their working on the car yesterday.
Politics is not for everybody. But I still vote.
Accounting is not for everybody. But I still do my taxes and balance my budget.
It can all be summed up with one sentence: Every job is not for everyone.
> Programming is just logic plus communication.
Fair enough, but you are defending programming as a hobby or academic pursuit. That is not the context established by the original video, which was programming as a profession.
Professional programming ≈ Logic + Communication + Fat Salary + Bureaucracy/Politics - Predictability - Sufficient Time/Dev Resources - Personal Time
If anything, perhaps some ambiguity can be removed by titling it "Professional programming is not for everybody".
I want to use this great quote to advertise a programming class I'm teaching. Can't find the original. Any ideas?
But the sparseness of the hits leads me to think it's not a real quote, or it's been reworded -- something like that.