“Words words words” –Shakespeare
Once I was a programmer. I became one by learning BASIC, then QuickBasic, then C, then C++, and so on. Hours of copying code from magazines, scratching programs into a notebook with a pencil, solving problems, falling in love with ideas. I wrote programs. I programmed. I was a programmer.
I studied hard and eventually became a Software Engineer. I worked hard and became a Senior Software Engineer (with a brief detour as “Member of Technical Staff” at a new-fangled startup). Now I run my own company so I’m whatever the hell I choose to call myself. One thing I’m not, and have never been, is a coder.
I’m not sure when coding started to replace programming as the term for what we do, but I suspect it was around the time when non-technical executives began to think of custom software as a commodity, when the perception emerged that you could get quality software development at bargain-basement prices. Perhaps coincidentally, it was around the time MIT switched from Lisp to Python for their introductory programming classes: in their minds, programming was now about “patching together… disparate parts to make a usable whole” rather than actual creation. I’m not knocking Python – it is a joy to develop in. And I’m sure MIT still makes good CS grads. However the change was emblematic of a general shift in attitude. It was also around this time when pundits wanted to “demystify” programming, to convince us that “anyone can learn to code.”
We care because terminology matters. Terminology matters because it reflects and shapes attitudes. To me, “coding” is a mechanical exercise. Calling me a coder is like calling a lawyer a typist. It’s like calling a CEO a meeting-attender. Developing software is more than just the physical act of writing code. Software creation involves planning ahead, solving problems, communicating with team members, rising above frustration and doubts, selling ideas. “Coding” is just the visible part, that picturesque iceberg section that rises magnificently above the water but is buoyed by the greater part, below the sparkling surface. It’s not the ability to write code that makes a developer valuable, it’s knowing what code to write.
We’re in it together
“But, but but!” I hear you protest. “What about copying and pasting from Stack Overflow? What about churning out WordPress pages? Surely, the people who do that, those people, we can call them coders, right?”
Honestly, I hope not. That type of development is becoming more and more common, and is in fact a great way for a beginner to get into the field. The hope is that after enough time and with enthusiastic study the ideas and best practices start to sink in. Just as back in the Jurassic era I didn’t understand every line of code that I copied from Compute! Magazine, a developer can get by in most circumstances without a deep theoretical understanding. But eventually, eventually you’re going to encounter a situation where you have to think, to create. And that’s why experience matters. And hiring managers, you do get what you pay for.
The flip side of that coin is in the tech media: the overuse — and misuse — of terms like “algorithm” and “artificial intelligence.” (And no, Facebook wishing me a happy birthday is not AI.) The perception has stratified the profession into the elite “computer scientists” — the ones making algorithms and hoozits — and “coders” — the rest of us plebeians whose jobs can be farmed out to the lowest bidder.
We’re still building the profession
We have difficulty with terminology because software development is unique in the history of work. Because software has infinite reusability, much of what we do has indeed become “patching together disparate parts.” But that means that when we do need to leave the reservation and actually program, we’re creating something altogether new. Every time we write a line of code, we’re doing something that has never been done before. (Although I think at some point everyone should write their own web server from scratch, but that’s for another blog post.) That’s also why scheduling is so hard. How do you predict inspiration? Just how deep is that unexplored cave?
What is in a name?
In the end, I acknowledge that a word is a word is just a word and surely a programmer by any other name would smell as sweet. If you like calling yourself a coder, carry on doing so. If you want to “learn to code in 24 hours,” I wish you the best of luck. This is a blog post, not a manifesto.
But keep in mind the reality of what we’re doing and who we are. We’re inventing, not assembling. We’re artists, not painters, craftsmen, not drones. We’re creating, not reproducing. Yes my friends, we are more than coders.