Hacker News new | comments | show | ask | jobs | submit login

This would be better titled "The 'What Schools Don’t Teach' video does not accurately depict the median life of a programmer".

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.




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


Hell, even the ability to bodge together a damned Excel worksheet with some magic formulas can be very powerful in the right hands.

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.


>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

Yeah, it's pretty amazing what you can do with a little Ruby, Python, or Javascript, with maybe a year or two of casual study and practice. That's about the level of programming ability that most people should have.

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.


Interestingly enough, discreet mathematics is also math. Surprisingly enough, every single programmer uses that thing everyday.

So math is useless.


I think the difference is we all come in contact with writing every day. So literacy is required if you want to get around in the world and if you want to communicate with others. Almost no non-programmers encounter code in their day to day lives. To me it doesn't make since for the majority of people to learn to code, because without practice their skills are just going to atrophy. Why add a ton of new people who can only write shitty code? We already have enough of those, I don't see the reason to add more. Programming well is hard and if you don't spend a lot of time with it you'll never get good.


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

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 think you're completely wrong. I don't see why you think an article title "Logic is not for everybody" is silly. Really, you think it is silly? I am not attempting any sort of humor here but have you ever met members of the general public? Logic is clearly not for everyone; I don't think that is a controversial statement at all, not in the slightest.


You know, at one point, somebody would have been writing that same comment for literacy. Or, as the case may be, not writing it :P.

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.


Well, from what I've seen in people that have not just taken logic classes but passed them, I'd say that there really is an innate difference - not in skill or experience or learning or knowing, but in the mindset; and a significant proportion of people don't/can't/won't "think properly" as you state it.

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.


Everyone keeps equating programming with literacy. Why. This makes no sense. We have a legion of IT professionals that have no idea about programming at all. Could it be the only analog to "literacy" is really, simply the ability to use computers? Literacy comparisons is just too far. Literacy, in terms of reading and writing are much more fundamental.

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.


In this case, I'm equating logic with literacy, which is more than reasonable. And it also happens that logic and programming are extremely similar (isomorphic, even).


> Everybody needs at least a bit.

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.


I think his argument was that it should be, not that it currently is.


Well, I mean actually that it is not in the sense that it never will be. It may not sound nice but just basic logic is not for everyone. Now if you mean some future utopia or something ... that's not really interesting to me. In such a case then you could never fault someone for saying "everyone should be maximally good at everything" but it has no verisimilitude with reality.


There are questions of cause and effect. Is the fact that a lot of people suck at logic and process based thinking because us coders are a special breed, or is it because they didn't get decent exposure to it in school?


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

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.


And this is why whiteboard programming interviews where syntax matters are toxic. I almost have the cojones these days to walk out as soon as they pull that crap, but it's a big red flag to me when they want the REAL regex to validate an e-mail address (though typically asking them if they want "the most naive implementation or the RFC 2822-compliant one" is enough to shut them up.

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


You imply that logical thinking is a desirable trait for everybody, which may not be necessarily true. I think that programming teaches you a way of thinking that you cannot really get rid of after acquiring it, and though good for a lot of people, may not be good for everybody.

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.


So I want to live in a world where I can talk to people who have never learned counting or arithmetic. So I think we should make sure those people still exist, by denying a certain percentage of the population a chance to learn about them.

Seriously, what the hell?


I once knew a.old lady that never learned math, and never cared to.

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.


Knowing your age is pretty poor justification for knowing basic maths. How about understanding the true cost of a loan, or how much you should save for your pension, or whether the 3-for-2 offer at your local supermarket is good value?

If you don't know basic maths, you are likely to spend much of your life getting ripped off left, right and centre.


You are stretching the issue a bit far IMO. Also counting and arithmetic is kind of hard NOT to learn even if you do not specifically learn it from somebody or in school because it is too essential to living in society. Programming is hardly the case.

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.


It's an absurd line of reasoning. You attacked the presupposition that everyone should learn basic logic with the further presupposition that learning to reason logically is detrimental to the thought process of certain classes or society.

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.


I never said people should not learn basic logic. What I said/meant was that learning to program may shift how people approach problems, in a way that favors logical thinking, which may not be ideal for everybody. Programmers tend to approach and react to issues/problems with reasoning, but for some people (maybe some artists for example), they may prefer to be more emotional and irrational.

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.


Perhaps comparing it to color theory is a stretch, but I think comparing it to something like 'learning how to see' as an artist is apt, and highlights the absurdity of the position you've taken.


But knowing color theory doesn't make you a bad programmer. Why in hell would knowing basic programming inhibit your emotions?


so, an alternate example 1. speaking english will give people advantages 2. learning a new language may quite well introduce you to new ways of thinking 3. so you'd prefer that not everyone had the opportunity to learn english, regardless of the individual benefit to them, in order to maintain the kind of society you want to be in.


That is not the case at all. I'm not saying that we shouldn't give the opportunity to learn programming to everybody, I'm saying that trying to get everybody to learn programming (which, in the ideal case, the end goal would be pretty much everybody on the entire planet learns to program when they were young) may not be all good.

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.


As a non-native english speaker I assure you everything has a cost even a supposedly universal good thing like english. The more fluent I am at english the more my thought process changes. There are already cases where I find myself unable to relate to the simple joy that people around me seem to get for free.


Slightly off topic, there's evidence that not having the language to articulate a concept can mean it is incredibly difficult to understand. http://www.guardian.co.uk/education/2004/oct/21/research.hig...


I agree that some programmers seem to get 'stuck' in a certain way of thinking, but I'm immediately reminded of Seymore Papert, in Mindstorms (1980), describing an ideal state beyond that:

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


Luckily some people's minds are quite resilient to becoming irreparably warped by logical thinking. :) I think you're overestimating how easy it is to fundamentally change the way someone thinks, as are the people who think anyone can get good at programming. There's practically no downside to letting everyone try programming because many will either quit or fail. But the upside is that some people will find out they're good at it.


You imply that logical thinking is a desirable trait for everybody

It's certainly a desirable trait for everyone whom we allow to vote.


The politicians of many "democracies" would disagree. They want the voters to be as stupid as possible.


> For example some artists may not want to "limit" their thought process to just logical, to more freely connect with and express their emotions [...]. But after being trained to program it may be quite difficult to think any other way but logically.

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.


I think programming warps your thinking when you do it for 10 hours a day 5-7 days a week, not so much if you do 1 semester of it at school.


I want to live in a world where I can find and talk to somebody who has not learned to write, who does not have any idea how the alphabet works, but is exceptional in some other completely unrelated field.


After the third paragraph, I interpreted the title as "Programming is Not [the Career Choice] for Everybody".


I got that sense as well. Which led me to the ask: so what is the point of this post? To spend many more paragraphs essentially saying what we already know.

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.


> It gets a lot sillier when you realize that nobody would title an article "Logic is not for everybody."

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

Typically: 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".


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 want to use this great quote to advertise a programming class I'm teaching. Can't find the original. Any ideas?


I went looking for it, and it appears in a handful of places:

https://www.google.com/#hl=en&sclient=psy-ab&q=%22le...

But the sparseness of the hits leads me to think it's not a real quote, or it's been reworded -- something like that.



That search (and lots others I tried) just returns the above HN post.


A recipe is not an algorithm, it is a heuristic.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: