Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I like the analogy that English writers don't have to be at Shakespeare's level; even being able to write a shopping list is a very useful. Hence it's a good idea to teach everyone reading and writing at school.

I think the programming equivalent of a shopping list would be something like a simple 1, 2, 3 cron script, or if-this-then-that event handlers. That only needs a very basic understanding of computing (and how to find information effectively online), but opens up lots of really useful automation, e.g. backing up files, sending an email (e.g. a notification/reminder to ourselves), etc. Even without some automated API to use, a sequence of 'print' and 'sleep' commands can be useful to help ourselves/others perform some common task, e.g. a receipe which tells us when to turn down the oven, when to put on the pasta, etc. Hence I think it's a good idea to have simple 'learn to code' classes in schools; whilst more advanced classes would be optional for those wanting to specialise down that path.



I would go even further and say that the most important aspect of teaching programming in schools is simply exposure. Most people don’t stumble upon programming in their day to day lives, especially now in the age of iPads and other locked down devices, so it’s important that the subset of population that would be good programmers are given the opportunity to at least try it out early in life.


I'd argue that they do, and that will become more and more true. Things as simple as an Excel file, or writing simple email filtering rules may expose you to _some_ programming.

As a side note - I believe this is going to be more and more true, especially among knowledge workers - I'm somewhat bullish on UiPath's low-code app platform [+]. As programmers we understand well the benefits (and pitfalls) of automating our menial tasks, if you can lower the bar so that most people (like assistant managers, receptionists, call center operators etc) can do that - you suddenly start exposing much wider audiences to programming. It's a tough problem but I believe RPA might just be the right foundation to enable that sort of thing.

[+] Disclaimer: I work for them so maybe that's natural :)


My experience with the exposure to excel is that it isn’t used in a way that exposes all users to programming experiences of any sort.

Even presently I’m staring down the barrel of a project that involves what is looking closer and closer to NLP to simply parse cell values to map them to positions in a layout and character styles in a given InDesign template.

The people responsible for a inputting the original data do it in what is basically paper napkin thoughts that have to be interpreted accurately for want of running aground advertising regulations (should a value end up incorrect in the entire process)

So I’m only speaking anecdotally, but applications as seriously powerful and user-friendly as excel do as much to obscure as they do to expose people to programming/computer science. I mean, excel does work so well for so many—even unintended—applications that the users expect unlimited magic in all things computer and fail to understand why new limitations may be imposed when they want their workflow simplified and it can’t “just work” no matter what.

(Forgive any latent frustration making its way into that comment, the project I’m referring to has felt nothing short of Sisyphean while a new application in the space of it would be quite simple to develop)


You’re in a bubble. Most people don’t use Excel, much less write formulas, and they certainly don’t write email filters.


I don't think people will get more exposed to programming as we go on, currently we are moving away from personal computers to dedicated app machines like smartphones where you don't see files and such.


The best cure for optimistic thinking like this would be simply to try teach some of that to _not_ self-selected group. It becomes clear very fast, how non-trivial "trivial" concepts are.


Not only that. But just the concept of programming is not something most people even grasp what it is.

I stumbled upon a nice way to show people what programming is the other day. However, it requires the person who asked the question to be engaged. If they only see programming as a trade of wizardry and a way to make money they may tune you out.

But my latest analogy for people who as 'what is programming' is to put a rock on a table and say 'teach this rock to go to the store write down every single step including getting off the table and opening the door'. They may get a bit angry and I will tell them a computer is no smarter than a rock and it will do exactly what you tell it. You need to be very explicit in what you tell it. If something goes wrong like you end up in the bathroom instead, something is wrong in the instructions and you have to fix it the rock cant. Now I am sure this analogy will fail on someone at some point. But it has worked on a few people I tested it on. My job is to pretend to be very stupid and then ask 'what sort of instructions do I need'.

That is just the simple style of programming. Add in callbacks, async, events, injection models, and SQL in there and people nope out.


It reminds me how Feynman described a computer as a superfast filing system https://youtu.be/EKWGGDXe5MA

Though programming is less about precise detailed instructions, it is more about glueing together mostly existing components in a manner understood by your team.


I had an Elementary school teacher that gave us a similar exercise to the rock thing. She said something like "imagine I'm an alien, and tell me how to make a peanut butter and jelly sandwich". I got so caught up in sharing my special technique I had at the time (extra glob of PB in the middle after covering both sides) that I just got a bit deflated when she stopped me to ask what I meant by what seemed like a basic step. (It was something like "okay, I have the bread", and I hadn't asked her to pick up the knife before applying the peanut butter)

Oddly I don't remember the point of the exercise at all, or if we did anything building on it. We certainly didn't do any programming.


As my dad says, computers are extremely-fast idiots.


I think teaching anything to a not self-selected group is excruciatingly hard. It's the same with foreign languages, math, biology etc.

An easy way out that schools use is to teach things that can be memorized like laundry lists. Name the 5 components of the <thing>. Name <famous person>'s 3 contributions and write a sentence to each. Specify the formula for <physicist>'s law.

As you say, if you try to teach a non-self-selected general population computing, you'll see how nontrivial even the mental model of files and folders etc. can be. But these are people who successfully do complex jobs in their lives. Sometimes even some sort of STEM-related or technical/engineering job, just not computer related, like a car mechanic. I don't think it's some sort of brain-compute-power/intelligence issue. A car mechanic uses similar brain pathways to "debug" and repair a car, keeping logical dependencies in mind etc.

Perhaps it's about the transition from physical to the entirely abstract/symbolic world.

It may be about a mental defense against the low-status of nerds, as in "I'm not like them (thank God, haha, I have a life), so I can't do this...".

Again, forcing knowledge into someone's brain is extremely difficult. They need to cooperate by their own will, otherwise you just get memorized lists that are forgotten after the test.

People learn languages by immersion when they want to interact with people around them, but when people are forced to live in a country they don't like, they can go decades without properly learning the local language, despite going shopping etc. and living a normal life.

I know relatives that run to me with all sorts of IT tech support issues, pretending they just cannot solve it. But when it's actually about something they really want done, like watching a movie or an episode of their favorite TV show, they are suddenly able to figure out all the details of torrenting.

Not that this is some novel insight, but motivation is key. If you have an actual goal in mind that you really want to achieve (like watching the next episode of a show), you will push through the discomfort and uncertainty of learning how to get there. If you want to learn a language because you love a culture, or you need it to talk to clients at work to get a promotion etc., you will learn much better.

Some charismatic teachers can create motivation where there was none. This sometimes ends up as "learning to please the teacher", but sometimes a single teacher's influence sets someone on a whole career course.

Learning basic coding (perhaps not necessarily becoming professional devs) should be possible for a large part of the general population if they have direct use for it today ("I cannot do <desired activity> unless I figure this out") outside of made up tests and teacher-pleasing.


"If someone wants to learn something you cannot stop them and if someone does not want to learn something you cannot force them"


> I like the analogy that English writers don't have to be at Shakespeare's level; even being able to write a shopping list is a very useful. Hence it's a good idea to teach everyone reading and writing at school.

Language "skills" are strongly social. Literary acclaim falls squarely within celebritydom. Your ability cannot be too far off from the mean or else few will understand you. Though there may be some unmeasurable internal utility as a thinking tool.

We learn to read and write to do it as well as our peers do. This covers 99% of the utility.

There may be a social argument for programming, software is eating the world and having some shared understanding may be useful. But clearly technical ability is much less socially bound. The point at which you stop getting extra utility is very far from the mean.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: