Kids Should Know How to Code
bloomberg.com
bloomberg.com
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 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.
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).
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 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.
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.
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.
Kids, and computer programmers, should be taught how to think and analyse.
Coding is what comes after analysis.
People need to raise their expectations of what children are capable of when given the right resources and environment.
I'm a big fan of the Japanese model.