Hacker News new | ask | show | jobs
by danso 3625 days ago
Every time a post like this comes up, I make the following points:

- Learning to code does not mean that everyone should work as a programmer, just like learning to read and write does not mean that everyone should end up as a professional writer (or even blogger).

- For millennia, human societies have done just fine without the literacy we take for granted today. Rulers could rule without it. And commoners didn't really have time for it. Plus, no one could afford Kindles.

- Before mass literacy, the ability to read and write was necessary to be a scholar or historian. Or part of the clergy. If you didn't want to be any of those things, you'd be well-justified in not spending a third of your lifespan (or whatever 12 years is to a pre-industrial-age lifespan) learning how to read and write, nevermind math.

- Fast forward to today. Western societies have 95%+ literacy. I don't think I need to enumerate all the ways we benefit from everyone being able to read and write, despite the vast majority of people being bad at writing (if Facebook posts are a loose measurement).

I agree with most of what the OP says but am disappointed that she still has a too narrow view about the scope of programming. Writing is, on the surface, the ability to record thoughts on a relatively permanent and highly distributable medium (compared to oral storytelling). It's a nice skill to have if you like being able to disseminate your ideas without literally having to tell it to each person, in person. But literacy's power goes deeper than that. A poet 500 years ago is able to write about love, and today, those of us who are literate can know his thoughts and perspectives, even though we don't know his (physical) voice or even his exact identity, nevermind his place in society.

The OP is completely right that people underestimate how hard it is for beginners to learn how to code. I've always thought that once a novice learns how to use a for-loop, they'll have enough of the power of programming to make their lives better. I still think that way, though I'm happy if that epiphany is reached after 10 weeks.

A for-loop turns out not to be that simple when you really think about what it represents, and there's a lack of easy real-life analogies for defining a stored block of code to be evaluated out of your control. But that's why programming is so much more than what the OP seems to believe. Someone who can write well can communicate their ideas to a yet-unknown human audience. Someone who can program can communicate their ideas to a machine with absolutely no brains of its own, but with limitless mechanical power.

How is that not a universally beneficial skill?

2 comments

> Someone who can write well can communicate their ideas to a yet-unknown human audience. Someone who can program can communicate their ideas to a machine with absolutely no brains of its own, but with limitless mechanical power.

How is that not a universally beneficial skill?

This is a great point. Programming machines is certainly analogous to communicating ideas to people. That said, machines and people differ in some very meaningful ways. As a result, it's not clear that learning to communicate with machines is of comparable importance to learning to communicate with people.

For example, a small number of people can create an application that provides a service used by billions (Facebook, Google, etc). This unprecedented degree of scalability and leverage is certainly a boon to the case that programming is important. However, it's simultaneously a point against everyone learning to code.

Why? Because when a small number of people can deploy solutions to the rest of humanity, the marginal utility of other people chipping in goes down. If 1% of the population can grow food for the other 99%, it frees up all of us to do other things. It's not all that helpful to spend your time learning to grow food if you can buy perfectly good food that someone else grew. And it's not all that helpful to learn to write a for-loop if you download apps written by other people.

I wholeheartedly agree, programming is a universally beneficial skill. Nobody is worse off for knowing how to code. But there are opportunity costs as well. An hour/month/year spent learning to code is an hour/month/year spent NOT learning X, where X is any number of valuable and applicable skills and habits that might benefit our society more than mass computer literacy.

I consider programming to be on the same level as "knows how to properly phrase Google searches". It won't make or break your life but it will make it a degree easier. For better or worse, Google has become a means of finding information - and finding accurate information quickly is a bonus. Programming allows you to automate many trivial but time consuming tasks. Even being able to write a few functions in an Excel sheet can save you hours at your job (and yes, FWIW I consider functions in excel sheets to be a form of programming). Everyone should be able to read and write basic programs, and as you said, people can still leave software engineering to software engineers.

I've easily saved more hours automating small tasks with Javascript (w/ JQuery) then I ever spent learning Javascript & JQuery...

Now on a completely unrelated tangent, please forgive me.

>you'd be well-justified in not spending a third of your lifespan (or whatever 12 years is to a pre-industrial-age lifespan)

Average lifespan was so much lower back in the day because children dying very young was relatively common (winters and illnesses, infections from injuries, etc.). If you made it into adulthood your life span looked to be much of what it is today (living to be 60-70+ years of age). But you didn't need to be able to read and write to farm, smith, or tailor. From a young age, your time was better spent doing minor tasks like gathering eggs from the hens and helping feed the pigs. So what fraction of your lifetime depends if you mean "average lifespan" or "typical lifespan assuming you made it through the early years". :P

Only a small portion of population would personally benefit from programming skills without doing it as a job. That means for absolute majority learning to code would be wasteful.
>Only a small portion of population would personally benefit from programming skills without doing it as a job.

I disagree entirely on this premise. Not because it is wrong, but because it has become less and less true over the past few decades.

Anyone who performs any trivial or repetitive task on a computer benefits from being able to set up a small (think 3-5 lines thrown in a for loop) script to automate the task for them and there is an increasing amount of people who perform trivial and/or repetitive tasks on computers. If it is only an hour once a week and they can have a small program turn that into a few seconds - they save 52 hours of doing a mindless, boring task each year. Having 52 hours to do literally anything else is a personal benefit. Minus time spent on automating the task of course. [0]

It's death by a thousand papercuts - except most people are failing to see the papercuts because they don't have an education enough to see what they could be automating with little effort. They go through their daily routine doing the same trivial tasks hundreds of times because the possibility of automating those tasks never crosses their minds.

Are the benefits minor? In most cases, yes. Just like the benefits of being able to properly phrase your Google searches is also minor.

Leave programming a photo-recognition app to the professionals. The average person won't need to know how to program that. Creating a small AHK macro that writes today's date? "Life changing"; actual quote from a coworker. The "life changing" program?

    :R*?:mdyy::
    FormatTime, CurrentDateTime,, MM/dd/yy
    SendInput %CurrentDateTime%
    return
>It won't make or break your life but it will make it a degree easier.

[0] https://xkcd.com/1205/

> Anyone who performs any trivial or repetitive task on a computer benefits from being able to set up a small (think 3-5 lines thrown in a for loop) script to automate the task for them and there is an increasing amount of people who perform trivial and/or repetitive tasks on computers.

I agree, this is the main reason (nearly) everyone should be taught to program. I often draw parallels between levels of programming and levels of mathematics. Not in a sense of understanding, but of complexity, and often when describing languages.

But I think that's a useful comparison here. Few people would say that teaching everyone arithmetic is a bad idea. Because being able to count is essential to surviving in our society (just from handling your own basic finances). More, but still few, people would argue against teaching everyone algebra (the high school sort, not the abstract sort). Because it enables people to take their understanding of arithmetic and extend it with variables, create more complex expressions and solve them for common problems. Same with geometry. Trig and calculus are where the "everyone should learn" part stops, those topics are for everyone who's going into STEM fields, and other (non-STEM focused) students that are sufficiently advanced and interested.

The parallel to programming:

Everyone should learn basic algorithmic thinking. Writing out a series of steps and understanding looping and conditional expressions and subroutines. These are the things that BASIC, shell scripts, and other (relatively) simple languages provide. These are the skills needed for automating many office jobs.

Fewer people need to know low-level bit twiddling, network code (to the point of implementation of protocols rather than application of libraries that implement protocols).

Fewer still need to understand more complex data structures, more complex algorithms, and full-blown application development (whether it's server-side, mobile, web-app, desktop, doesn't matter).