So here are two articles, one from last month and one from a few years back. Both authors (Torvalds and Atwood) are well known – in fact Torvalds is super-famous – and they’re both saying the same thing: coding is not for everyone. No more than plumbing or cooking, it’s not an essential skill in modern life. It’s not the ‘fourth literacy’, mentioned as part of the “Year of Code” initiative earlier this year. It’s a very specialised and creative skill, and not everyone will be good at it, or even able to do it at all.
Jeff Atwood, the author of the ‘Please don’t learn to code’ article makes a good point about the assumption that coding is the goal. It’s not. Code is a tool, and the job of a tool is to solve problems. Many software tools are badly designed because they have too much code. Word for Windows is a very inefficient tool, for example, because most of its functionality is rarely used. It has lots of code – too much, in fact. Atwood also makes the point that a bad programmer is not much use to anyone. Although there’s not been much published research on the topic, I’m fairly sure that many of those who ‘learn to code in a day/week/month’ will fall into the ‘bad programmer’ category. Linus Torvalds, makes the same point in a more understated way. He says:
“I actually don’t believe that everybody should necessarily try to learn to code. I think it’s reasonably specialized, and nobody really expects most people to have to do it. It’s not like knowing how to read and write and do basic math.”
He also believes that computer courses in schools are a great idea, and while he doesn’t elaborate, it’s fair to assume that he doesn’t mean courses that teach Microsoft Word and PowerPoint. His opinions seem to me to be perfectly reasonable, even if they are out of tune with the current refrain about coding for everyone.
I appreciate that it might seem strange for me to support this – nowadays – very contentious views. Last month I wrote in my blog about the digital skills shortfall, and how organisations need to become more inventive in finding and training good coders. Surely a world where everyone knows how to code increases the pool of available resource and goes a long way to addressing the shortfall?
Not at all. The point about coding is that it is a skill that requires many thousands of hours to perfect, and even then it’s not straightforward. And it’s subtle and nuanced, like most creative endeavor. It’s not just learning a language: it’s about building an artefact. In my world – the world of professional software development – the coding is just one (relatively small) part of the building project. For example, the master builders – ‘technical architects’ in the jargon – rarely code at all, but they’re the ones who know how the software, hardware, communications, everything – all fits together.
This is why in our AppCamp and CodeCamp we talk about how software is designed and built. We emphasise the need for related skills, like project management, and change control. IN our appcamp, we work with very talented developers and help them acquire some of the most important skills needed by IT practitioners, such as making a presentation, or describing a complex technical problem in a simple, easy to understand manner.
As I said last month, good coding requires aptitude, flair and raw talent. It’s not for everyone, and it’s only one of the skills a professional needs. But it’s fun!