Real programming shouldn't be kept out of sight like the Wizard of Oz
The other criticism levelled by professional coders against Rory’s Great Coding Adventure may be less contentious to a technical audience. What he “learned” isn’t real programming, and bears little relation to it.
Several years ago I explained that a lot of problems with the web are sociological: people were addressing system-level problems using presentational-level thinking and tools. What Rory learned on his day out is presentational code. That’s what HTML and CSS are. The rest of the LAMP stack remains out of sight, like the Wizard of Oz.
(Redefining systems engineering in terms of painting is just one of several related trends: we’ve seen innovation redefined as talking about things, as James Woudhuysen explained here. But that’s a discussion for another time.)
So the day at the ad agency no more qualifies Rory to speak about computer programming than painting a fence qualifies you to be an architect or a civil engineer. You can certainly learn a lot about paint in a day. And paintbrushes. How far this gives an insight into building a system, or how systems interact, though, is highly debatable.
Which brings us to what for me is the most curious and interesting part of the campaign. At some point in the conversation with a compulsory-coding enthusiast (and I’ve had several of these conversations) you get to this next stage.
“OK,” they’ll say, “I concede that it’s not for everyone, and not everyone needs to learn open-heart surgery. But knowing even a little about how things work can’t do any harm, can it?”
Memorising runic symbols
I agree, it would be wonderful if people knew how things work: like proteins, machines or economies. It would also be wonderful if they knew some history, and perhaps with some basic philosophy, to be able to think clearly and identify specious arguments. Or cook.
But time is not infinite, and the proposition requires us to make special time for compulsory coding, shoving other subjects out of the way. Let’s take this proposition on its merits.
I simply refer the reader at this to the point about presentation tools above. Knowing how to place a CSS element 20 pixels from the margin doesn’t teach you how computers or networks actually work.
I very much doubt that we’d have so much ill-advised internet policy if, for example, people realised that "The Internet" is not a thing but a network of networks.
And here we return to opportunity costs, and the puzzling notion that learning those presentation tools teaches you anything.
Two very odd beliefs lie at the heart the compulsory-coding crusade. One is that by staring at these mysterious runic symbols, children will acquire some deeper wisdom. This is not education, it is really the opposite, a belief in mystification. (Let’s call this the Church of the Angle Bracket – it’s a web thing.)
The other is that getting down and dirty with “coders” is one of life’s great experiences, one that everyone should experience. This is as deeply patronising as Toby Young’s 100m race, and it’s nothing more than Nerd Tourism.
“Come at look at the coders. Smell their sweat. Live with them for a day!” the brochure will read. Donchaknow - it’s the new gap year. ®
Tin foil hat time
Learning to code has nothing do do with C,C++,C#, PHP, Ruby, Python, VB, et al, and everything to do with developing a logical view of the world, and problem solving. Two activities successive governments have tried to breed out of the population. Keeps them docile, you see. As long as they are fed their diet of "celebrity" gossip, soaps, and "reality" TV, they won't be thinking about revolting too much. I believe the Romans had a name for it.
Meanwhile, if you actually need people to do the logic and problem solving, then why not bring in non residents (who will be too busy working to revolt) or offshore the work ?
Given the level of mainstream debate on most issues requiring a bit of scientific knowledge, I'd say it's pretty much mission accomplished.
Andrew - you are wrong.
Andrew - I think you are missing the point of compulsory coding in schools.
I'm a programmer. I'm not a carpenter, although I did some carpentry at school. I'm not a chef, although I learnt to cook some things at school. I'm not a tailor, although they taught us how to sew. I'm not a writer, although they taught us how to write, and how to read critically.
If you introduce children to programming in schools (maybe not throughout their whole school career but for part of it), you will get different outcomes for different students - just as in every subject. For some, they won't enjoy it and it'll be a waste of time. For some it'll give them an overview and a bit of insight, but ultimately they won't directly use the skills. Interesting enough though. But for some it'll expose them to something that completely inspires them and harnesses their analytical and logical skills.
School is as much about learning what interests you, what you can be, and what you are good at as it is about learning skills you will definitely be using throughout your life. Your article seems to completely miss this point.
My driving question for supporting coding in schools is: how many great potential coders are there out there that don't even know it? How many that would never think to apply themselves to programming, or wouldn't otherwise have the chance to get started.
I don't like to speak in absolutes too much (ok I do) - but you are wrong.
I would say that an important part of programming that ought to be taught is how to deal - sorry interact - with people who can't. Most especially those above you in the hierarchy. Thorny topics such as 'I need time to refactor' or 'Just because our competitor does it doesn't make it a good idea'. Possibly even 'Asking me to work longer hours won't magically fix the problem'.
Programming is as much art as skill. Programmers need to be given enough freedom to enjoy their work and respect shown to them to encourage them. Yes, programming is a job but it is NOT a production line scenario. We need time to think and to explore and the business needs to realise that. We can work to a deadline but only if the schedule includes some 'us' time.