As many of you will be aware, the Twittersphere was recently ignited by Lottie Dexter (Year of code boss can’t code) and her car crash performance on Newsnight. I don’t have much to add to what has already been said apart from to note with sadness yet another typical example of a public servant being involved with technology of which they have no comprehension.
Jeremy Paxman expressed cynicism within the interview regarding the idea that all people need to be able to code, and by extension that all children need to be taught coding. I think this betrays an understanding of what it means to “be able to code”. I would like to illustrate this with a couple of examples.
I recently finished Doing data science which is quite a fascinating tour (my review forthcoming on this blog) not only of the field of data science, the domains in which it is used, and the uses to which it is put but also of the people who call themselves data scientists. They’re a very diverse bunch and their ability to code is highly variable. Some are hardcore computer scientists with years of experience optimising C++ implementations of machine learning algorithms. Some are reasonably competent, able to produce efficient and accurate Python scripts and munge a bit of data on a Linux command line. And some, by their own admission, are terrible programmers. They can hack together a few R scripts and their skills lie elsewhere. But it’s pretty clear from reading what they do and how they use computers and code that all would have benefited from learning coding at school (no doubt, some of them did).
Even further down the coding food chain, I interact with a lot of people who use data and spreadsheets every day or every week who cannot code. They cannot write macros, they certainly can’t write Visual Basic scripts, and they do, in general, waste fantastically large amounts of time fiddling around with data when a macro or Visual Basic script (or R, or Python…) could do the heavy lifting for them in seconds.
And even further down, right at the bottom, there are people who don’t use spreadsheets, don’t analyse data, and don’t really have occasion to use macros, scripts, markup languages, or anything else. Would they benefit from learning to code at school? I think they would. Jeremy Paxman suggests that we don’t all need to code, and that’s true. We don’t all need to write production quality C++ code or develop Android applications, or design PHP/ MySQL databases. However, we don’t all need to build bridges or write novels or prove the Riemann hypothesis either. We still learn physics and English and maths. Knowingly or unknowingly, all these individuals interact with code and data and they make purchasing and HR decisions that relate to code and data. I’ve been to meetings full of individuals who are all desperate to make use of new technologies, to make purchasing decisions about them, to hire people who can use them, who have absolutely no understanding of how complex a given task is, how it would be achieved, and what the different options are (Local or server-side implementation? Proprietary or open source? Database or spreadsheet?).
In the last five years I’ve learned to ask the same questions again and again of any data process- can a computer do this faster than a human being? Can a computer do this more accurately than a human being? Can a computer do this more cheaply than a human being? What are the tradeoffs between speed, accuracy, and cost if we assign different parts of the task to computers and human beings?
I ask these questions of any process and I teach the people around me the answers to these questions as well as encouraging them to begin to ask these questions themselves. In the NHS, at least, these questions are fundamental to the working lives of many of the staff that I interact with. They cannot begin to ask these questions without some basic understanding of the way that computers work.
So, to answer Jeremy Paxman’s question, we don’t all need to be able to code, just like we don’t all need to make cars or operate nuclear power stations. But a grounding in the fundamentals of computer science is essential in today’s workforce. Predictions about the future are always wrong, my favourite perhaps being:
“Where a calculator like the ENIAC today is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and perhaps weigh only 1.5 tons”- Andrew Hamilton (1949).
However, it seems sure that the foregoing will remain true for the next 30 years at least.