For a while now, we've heard how anyone who doesn't know how to code will be resigned to a life of servitude in the technological underclass. Writer, developer and Stack Overflow kingpin Jeff Atwood disagrees...
The whole "everyone should learn programming" meme has gotten so out of control that the mayor of New York City actually vowed to learn to code in 2012.
10 PRINT "I AM MAYOR" 20 GOTO 10
Fortunately, the odds of this technological flight of fancy happening — even in jest — are zero, and for good reason: the mayor of New York City will hopefully spend his time doing the job taxpayers paid him to do instead. According to the Office of the Mayor home page, that means working on absenteeism programs for schools, public transit improvements, the 2013 city budget, and… do I really need to go on?
To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer and at least high school level maths are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it.
Look, I love programming. I also believe programming is important… in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That'd be ridiculous, right?
The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing and maths. I wish. It is wrong in so many other ways.
- It assumes that more code in the world is an inherently desirable thing. In my 30-year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can't get behind that. You should be learning to write as little code as possible. Ideally none.
- It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
- It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?
- It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that's true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can't even code, so please pardon my scepticism of the sentiment that "everyone can learn to code".
- It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79,000/year after attending a mere two-and-a-half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your 10,000 hours like the rest of us.
I suppose I can support learning a tiny bit about programming just so you can recognise what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognise plumbing problems when I see them without any particular training in the area. The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the internet, work. Being able to get around on the internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.
Please don't advocate learning to code just for the sake of learning how to code. Or worse, because of the fat pay cheques. Instead, I humbly suggest that we spend our time learning how to …
• Research voraciously, and understand how the things around us work at a basic level. • Communicate effectively with other human beings.
These are skills that extend far beyond mere coding and will help you in every aspect of your life.
Image: Vladimir Mucibabic/ShutterStock