16 comments

[ 4.2 ms ] story [ 15.6 ms ] thread
You mean boys right? Teaching girls how to code is waste of time they are genetically predisposed for secretary kind of work. You don't believe me? Read the google manifesto.
While we are at it we might exclude black kids and the asians as well - whaddaya say?
There has to be previous discussions on HN about this. Does anyone have a link?

I'm probably going against the grain here, but do we need to teach kids to code? Heck, does Tim Cook know how to code?

It's been 20+ years now where kids have had access to computers in schools. In the late 90's they taught typing, Word, Excel, and Power Point.* Looking at most of my friends from high school who aren't in tech, that's all they use--if that. I was a bit surprised when my brother in law mentioned my nephews, who are about to go into high school, had never used a desktop computer. I was a bit surprised at first, but don't think it'll be a problem for them and it's probably common.

I think the expectation 25 years ago is that the average workhorse applications would be way more scriptable. So "a little" computer science could be done to automate repetitive things and lead to more computer science. I hear about Excel wizards and I've seen managers who are fantastic with pulling data into Power Point, but they seem very specialized to their profession. I've never had to use VBA inside of a Microsoft app. Every time I try and use AppleScript I have to dive in way more than the average person would bother (and I don't see options like that for Windows). Outside of work I might write a small Python/Shell script to scrape some web pages, or sort some data. I just can't see someone who had a class in high school doing anything useful.

I do think it's good to get exposure to computer basics and even programming if they're interested. Maybe, like the article says, it's comparable to higher level math and science classes.

* I thought it was a bit silly they were teaching Microsoft programs because who knows what would be around 5 years from then--I was wrong about that

I believe that we should teach everyone to code, even though I accept the reality that computing can be inherently complicated to include and maintain in a general curriculum.

I don't know if Tim Cook can code. Despite Steve Jobs' fantastic ability to do talk to a technical crowd about WebObjects [0], Woz claims Jobs never wrote a single line of code in his life.

But Tim Cook is Tim Cook, and Steve Jobs is Steve Jobs. For all lesser people, coding is both a powerful skill and more importantly, a profound way to think, never mind a medium for better understanding the computers that are inextricable from modern life.

Yes, the "Should you learn to code" debate is a frequent one on HN. I've found that when I disagree with people here, it's because we differ about what programming can do. I don't see programming as a means to be a web dev, or dev ops, or data scientist. I see it as something more basic but more universal: the ability to make machines do exactly what we want.

I teach journalism at the university level. And I force all journalism students to learn SQL, even as most of them have never done any type of scripting. My initial motive was because SQL was simply the most direct way to deal with bigger-than-Excel datasets and to do JOIN operations. I've come to appreciate that SQL is the most concise way to describe what we exactly what we want to do with data -- e.g. the simplicity and explicitness of SORT and GROUP BY, compared to memorizing the Excel menu actions for sorting and aggregation.

Because I learned SQL on the job long after I studied computer science, I never really saw it as a proper programming language. To this day I don't even know to define variables and functions in SQL. But now, I see that it still embodies important programming fundamentals, including how the interpreter is literal and unforgiving, how we have to know and state exactly what we want because the interpreter doesn't assume, and how important is to know exactly what you want and what you expect -- determinism and reproducibility are inherent attributes of programming.

To give an idea of how far removed today's college students are from what computing is at its core: on the first day of SQL, I explain how SQL is a language, and instead of button clicking, we write out what we want into the client using SQL syntax. Inevitably, a student will interrupt and ask how somehing about why the client isn't running my code. Or, how do we know when we've made an error.

After a few years of this, I understand their confusion: they see me type a SELECT statement into the client, and yet nothing happens. Well, of course nothing happens because I haven't told the client (or REPL) to execute it. But these students are so confused because they simply do not use software that waits for the user to execute (or, not so long ago, clicking the OK button). Think about it. Typing anything into Google Chrome's address bar causes an auto completion to execute. Same with Facebook. With things like Snapchat/Tindet/Instagram, you don't do anything that remotely feels like executing a typed-in command (most users probably think a Google search query is basically an executed command).

So IMO, learning programming is useful -- not necessarily to become a developer -- because you can be aware of the principles of computation without having to take a course that covers logic gates/NAND/ALUs/Assembly, etc. I teach Python for elective classes. But if journalism students don't take any other programming classes, at least they can put SQL on their resume.

[0] https://www.youtube.com/watch?v=goNXogpwvAk

I think it's a great question we should keep asking ourselves every 5-10 years. A farmer didn't have a daily use for reading 200 years ago, but today literacy is without question useful and has changed the world. I often wonder if there were other things, like higher level math, that would do the same if they were more ubiquitous.

I think coding has potential to do the same, but after 20+ years I haven't seen it change the average person's job and think it's less likely in the next 20 years than it was previously. The main reason is that the tools are moving away, making the burden higher: the GUI made this more difficult than when commandlines were in vogue, and tablets and phones make it even harder.

Programmers dump on Excel because people often use it as a database (even in capacities that should scare someone), but I think it's fantastic that it's one of the few things that has enabled an average user to wield a computer to do what they want. But, when working in an office, the average person thought I was the Excel guru because I could reference cells from other sheets and help them figure out why they were looking at #VALUE! I'm in no way an Excel guru, but tried to teach what I knew. I think they would have benefitted from a little bit of Excel knowledge, but the amount of training and time for them to learn and retain anything more than basic skills would be huge compared to the value I saw in the average job.

Yes, Tim Cook and Steve Jobs' roles don't require comp sci, but the jobs they had leading up over the last 30 years didn't need it, either. Tim Cook was working for IBM and Compaq since the early 80's before he was at Apple. He's had every opportunity to learn and leverage computer science (I wouldn't be surprised if Cook was an Excel guru, though). This is all conjecture on my part (I hear his daily-driver is an iPad pro). I would love to hear him talk about this if I'm wrong.

I definitely think it should be accessible, but don't see the benefit of making what would have to be an abstract curriculum to high school students required. I'd like to see classes offered in HS, basic computer literacy mandatory, and specific, more professionally focused classes offered on the web and at community colleges (Excel, SQL, etc).

There's a chicken-and-egg problem with scripting support in desktop applications: if more of the customers were comfortable writing small programs, the companies creating them would see more value in providing decent scripting interfaces.

For example the Adobe applications like Photoshop and Illustrator have obviously had a fair amount of effort put into the scripting interfaces at some point, but it's fallen short.

They've done the 90% of the work which is embedding a sort-of-javascript engine and exposing the applications' functionality to it; they just need to do the other 90% to make it practical to maintain and share scripts, and glue them up to the UI, and so on.

I feel like my industry might be a window to that. I work in visual effects. Almost all of our applications (Maya, Nuke, Houdini) have a built-in Python interpreter and every facility over probably 20 people use it extensively all the way up to the Pixars, Wetas, and ILMs. Often the application UI is written in Python and could be fully customized, including adding/modifying menus, they have a console, and a shelf (for small, clickable scripts). They even have a cool think where you can see it print out the commands that get executed when you click buttons in the UI. I've also been responsible for scripting in Photoshop and it's miserable (not just because of Javascript).

I have junior artists ask if they should learn Python/programming or focus on their discipline and my recommendation is, "if you think scripting is going to be one of your primary responsibilities, learn it. If not, focus on getting better at your discipline." My experience in working with artists is that they have no idea what goes on under the hood. The amount of effort needed to even write simple scripts is enormous. There are artists who can crack open a console and write or modify a simple script, but more often than not they came from a solid technical background it's just no longer their day-to-day job.

Even in those programs, there's not just the hurdle of knowing what a variable, loop, or string is, but looking up the API for the application, how things are structured, and troubleshooting.

I think Excel is the most ideal example you'll ever get. The feedback loop is tight and there's a gradual slope to some insane programming. While there are a lot of amazing Excel gurus, the average person using Excel may not even need to know what a formula is. Their job is filling out and reading boxes that were put together by a manager. I don't see this changing in 20 years.

No.

Kids, and computer programmers, should be taught how to think and analyse.

Coding is what comes after analysis.

But coding, taught in tandem, can facilitate and reinforce analytical thinking.
100% agree, programming is a very powerful and practical skill for just about everyone in modern society.
I'm a positive guy and more is more...

Nope, for one this is a zero sum game and making coding a priority means other things have less budget - not money that may or may not be found but simply time of the kid. Coding is time intensive so where do we take that time away? Math? Reading? Writing? Kids struggling often with the basics...

And is there really such a huge need for coders? Considering the retiring baby-boomers a much stronger argument could be made for nurses. And unlike nursing coding can be off-shored...

It would make sense make studies and plans how do it effectively before cargo cult coding school on primary level just after that fad fizzled out.

Knowing how to code seems like maybe a bit too far for most people.

I think knowing how to use the kind of computers they're going to encounter would be most of the way there.

Simple things; the concept of files and directories, what the typical OS desktop window managers are actually presenting and how to work with them. What the command line is and how to use it; how to search for files, how to move files, grepping and viewing and so forth. How simple configurations work, maybe even the very basics of automating some tasks using very simple scripts (edging just barely into programming there).

I think people could get much, much further if they simply knew how to use typical computer systems they will be working with (which for most people basically means Windows), rather than just knew how to use some of the more common applications. The majority of people using computers just need to know how to use the computer, and can get a very long way before they need to write any code themselves if they can get some understanding and step outside the bubble of Microsoft Word or whatever they spend most time in.

The question is, what should be sacrificed in order to teach kids to code? They have a limited amount of time at school, so some other subject must be reduced significantly, to allow for enough time to actually teach them anything useful.
Sure but I think they should also be taught practical things as well like driving, taxes, light house maintenance, and other skills most of need for everyday life over abstract math and social science.

I'm a big fan of the Japanese model.

For example of how children can be taught to program at a surprisingly high level with a paucity of resources, see this blog post on CS in Vietnam: https://neil.fraser.name/news/2013/03/16/

People need to raise their expectations of what children are capable of when given the right resources and environment.