Ted Logan

Is programming a trade?

Wednesday, 6 August 2014

This weekend I was reading The Wall Street Journal's website when I found an article by Christopher Mims with the provocative title Computer Programming Is a Trade; Let's Act Like It. Since I make my living as a software engineer, my first instinct was to get defensive about my chosen line of work. Then I read the article and concluded that the author is mostly right, but not for the reasons he thinks.

The author's thesis is that because programming is easy and college is hard, we as a society should prioritize skills training, because it doesn't take an advanced degree from MIT to bang together an app that mostly works. This is strictly true: a bright grade-schooler can follow the right tutorials to bang out a functioning game or app or website. After all, programming is little more than typing, right? And so is literature -- if you give enough monkeys enough typewriters, eventually they'll type out the complete works of William Shakespeare, or a column suitable for The Wall Street Journal, but that doesn't mean they're literary geniuses or journalists.

Just as writing is more than typing, programming is more than just writing down programs. Computers are cantankerous beasts, prone to fits of rage in the most mundane circumstances. Modern computing is built as a Tower of Babel of abstractions and metaphors -- and every abstraction leaks by failing to fully contain the ugly details of the implementation below. Working at any particular level of the tower requires detailed knowledge of the levels above and below, so that one knows how they work and how they break. All of this takes experience and training, and the knowledge to ask the right questions. My engineering degree gave me an exhaustive survey of computing from bottom to top: from the silicon transistors past the logic gates through the operating system up through networking and graphics and AI. There's nothing sacred about the degree -- these days there are plenty of great resources available online -- but it did package it up neatly, and answered questions I didn't even know I should ask.

Great literature demands a breadth of life experiences, and great programming demands a comprehensive knowledge of the machine. But even more, great literature and great programming demand a diversity of experiences.

But that's where the current system breaks down -- and where the author is actually right. Most corporate hiring practices start by demanding a college degree as a minimum entry point, on the hypothesis that people who can make their way through an academic bureaucracy have the stick-to-itiveness to handle all the boring parts of a programming job (not to mention a corporate bureaucracy). This selects well for upper-middle-class white boys and upwardly-mobile Indians who went to college, and leaves out plenty of diverse people who would make excellent or good or even just fine programmers. (But not everyone who makes their way through an engineering or computer science degree can actually program; I've given more interviews than I can remember to candidates who couldn't program their way out of a paper bag.) Not everyone who can write a few lines of javascript can hit the high notes but not everyone has to. The article highlights the benefits of non-traditional education: gender and ethnic and economic minorities have a better shot if they don't have to jump through a bunch of arbitrary hoops. And if just a few super-star programmers find their way into great programming jobs through a non-traditional route the world will be a better place.