- Programming computers is a piece of cake. Or so the world’s digital-skills gurus would have us believe. From the non-proﬁt Code.org’s promise that ‘Anybody can learn!’ to Apple chief executive Tim Cook’s comment that writing code is ‘fun1 and interactive2’, the art and science of making software is now as accessible as the alphabet.
- Unfortunately, this rosy portrait bears no relation to reality. For starters, the proﬁle of a programmer’s mind is pretty uncommon3. As well as being highly analytical and creative4, software developers need almost superhuman focus to manage the complexity of their tasks. Manic attention to detail is a must; slovenliness is verboten. Attaining this level of concentration requires a state of mind called being ‘in the ﬂow’, a quasi-symbiotic relationship between human and machine that improves performance and motivation.
- Coding isn’t the only job that demands intense focus. But you’d never hear someone say that brain surgery is ‘fun’, or that structural engineering is ‘easy’. When it comes to programming, why do policymakers and technologists pretend otherwise?
It doesn’t help that Hollywood has cast the ‘coder’ as a socially challenged, type-ﬁrst-think-later hacker, inevitably white and male, with the power to thwart the Nazis or penetrate the CIA.
- For one, it helps lure people to the ﬁeld5 at a time when software (in the words of the venture capitalist Marc Andreessen) is ‘eating the world’ – and so, by expanding the labour pool, keeps industry ticking over and wages under control6.
- Another reason is that the very word ‘coding7’ sounds routine and repetitive, as though there’s some sort of key that developers apply by rote to crack any given problem.
- Insisting on the glamour and fun of coding is the wrong way to acquaint kids with computer science. It insults their intelligence and plants the pernicious notion in their heads that you don’t need discipline in order to progress. As anyone with even minimal exposure to making software knows, behind a minute of typing lies an hour of study8.
- It’s better to admit that coding is complicated, technically and ethically. Computers, at the moment, can only execute orders, to varying degrees of sophistication. So it’s up to the developer to be clear: the machine does what you say, not what you mean9. More and more ‘decisions’ are being entrusted to software, including life-or-death ones: think self-driving cars; think semi-autonomous weapons; think Facebook and Google making inferences about your marital, psychological or physical status, before selling it to the highest bidder. Yet it’s rarely in the interests of companies and governments to encourage us to probe what’s going on beneath these processes.
- All of these scenarios are built on exquisitely technical foundations. But we can’t respond to them by answering exclusively technical questions. Programming is not a detail that can be left to ‘technicians’ under the false pretence that their choices will be ‘scientiﬁcally neutral’. Societies are too complex: the algorithmic is political. Automation has already dealt a blow to the job security of low-skilled workers in factories and warehouses around the world. White-collar workers are next in line. The digital giants of today run on a fraction of the employees of the industrial giants of yesterday, so the irony of encouraging more people to work as programmers is that they are slowly mobilising themselves out of jobs.
- In an ever-more intricate and connected world, where software plays a larger and larger role in everyday life, it’s irresponsible to speak of coding as a lightweight activity. Software is not simply lines of code, nor is it blandly technical. In just a few years, understanding programming will be an indispensable part of active citizenship. The idea that coding oﬀers an unproblematic path to social progress and personal enhancement works to the advantage of the growing techno-plutocracy that’s insulating itself behind its own technology.
- It can be fun – as well as frustrating when you get stuck!
- I’ve found it’s more fun when you’re solving a problem you find interesting, or can see fits into some wider context that is important.
- It can be a bit like “playing”.
- Well, it is – both in the sense that you’re writing an application that you have to interact with when you test it.
- Also, modern debugging aids are interactive, and iterative.
- This is true of those who have really “got it”, or who have to perform the really high-end “analytical and creative” tasks envisioned.
- But must reasonable bright people can perform straightforward programming tasks – it’s just that they are much slower, more error prone, and get really stuck when things get more complicated.
- There wouldn’t be aptitude tests if anyone could do it!
- The element of creativity has been disputed. I seem to remember a line in "Pirsig (Robert M.) - Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values" claiming this, and noting that it was commonly disbelieved.
- Any complex development task can be performed more or less efficiently, and determining the best way is a creative process, not just relying on what you’ve been taught (if anything).
- Creating software to address a problem or function of your own devising is also highly creative.
- What isn’t (so) creative is the coder’s task of converting a very explicit specification into code in a formulaic manner – eg. using a code template.
- Why “lure” rather than “attract”?
- Is the author trying to suggest that the wrong sort of person is being “lured”?
- I’m not sure what he means here.
- While flooding the market with inappropriate people, the average salary – and maybe even the peak salary – may be depressed, but the total salary bill is vastly inflated.
- “Coding” shouldn’t be confused with “encoding”, the algorithmic translation of one string into another.
- The coding required for translating very detailed specifications into code can be like encoding, which is why it can be a bad thing motivationally to divide the analytical and coding tasks between different people. Neither the analyst nor the programmer has much fun.
- This ought to be the case, but there’s a temptation just to get on with it, and muddle through.
- This obvious point cannot be over-stretched.
Text Colour Conventions (see disclaimer)
- Blue: Text by me; © Theo Todman, 2018
- Mauve: Text by correspondent(s) or other author(s); © the author(s)