â€œ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.