Saturday, June 30, 2012

Who you calling "coder", coder?

Although Coders at Work is a fine collection of interviews with a stellar cast of software people, I hate the title and the way "coder" has become the word of choice for the kind of stuff I do. But I still haven't found a good name for it.

"Programmer" is OK but drab, "Hacker" is good but it has an unfortunate criminal second meaning, "Maker" is both too new and too broad, "Software Engineer" always sounded vaguely pretentious to me. "Software Designer" is probably the most accurate, but it never caught on. "Software Architect" isn't bad, although it tends to get interpreted too narrowly most of the time. Real architects (of buildings) integrate engineering concerns, the knowledge of and need to support patterns of human activity, and artistic striving…it's a label I'm comfortable with. Or simply "Developer", that is open-ended enough while capturing the creative essence of the activity.

But "Coder" is the worst of the lot, it suggests a drone grinding away in some 19th century office with a complete lack of creativity or engagement – someone who simply mechanically encodes ideas that were dreamt up by someone else. Blah.

Maybe it's a function of social context. I would be embarassed to be a labeled a "coder" at some non-specialist social gathering, but among software types it functions something as a badge of honor; it means that you are still hands-on and not some kind of distant manager or philosopher/flamer. Maybe it functions like "queer" or the n-word…a derogation being reappropriated as a badge of pride.

[update: I forgot "Computer Scientist", which is my actual current job title. Of course it is also quite pretentious, and it always brings to mind the adage that any field with "science" in its name isn't one]

5 comments:

I always liked the term "coder", because it connotes an obsession with code that takes us back to the foundation of our craft. Claude Shannon was obsessed with secret code puzzle books from a young age, and developed lasting insights about the nature of information coding. Alan Turing, of course, spent much of his professional career on secret codes, from specific to general.

We are not Shannon or Turing, but we do spend a great deal of our time crafting code, dissecting other people's code, and meta-thinking about how to improve the coding activity, make others' codes more transparent, and so on.

If you look at another industry that is heavily based on information -- biotech -- you'll notice that the "drone mechanically grinding away" is not called a gene-coder. It's called a gene synthesizer. To the extent that we reach a point where highly skilled creative professionals are designing and creating custom genomes, I wouldn't be surprised if those people are called gene-coders. I could see "designer" for both genes and computer code, but that might just confuse things in cases where design is considered a separate discipline.

Well, I have nothing against writing code, or spending your life up to your elbows in code, far from it, but I still don't like that word. If the code is the most important thing about your activity you are doing it wrong. (Or, maybe more accurately: if all there is to your job is coding then it isn't a very interesting, high-end, or high-status job. Not that there aren't a great many of those jobs out there).

The connotations of secret codes don't seem relevant to me, although obviously they are important to the historical development of computation. Writing programs does not involve encrypting or decrypting secrets, on the contrary, good code tries hard to reveal its structure and purpose as transparently as possible.

I didn't do a good job of making the connection to crypto. And I guess it depends on the connotations that a person has for the word "code".

If you think of "encoding", it seems pretty mundane. UTF-8 or EBCDIC or whatever. But coding is about defining a process for representing one level of meaning within another, hopefully in a robust and universal way. Think of the way that Roman numerals were limited, and what a difference to human events the shift to place-value coding made. Adding a 0 to our coding of place-value coding jumped us from parochial to universal math. Or think of how many billions of years the only replicators on earth were based on RNA or its predecessors. The emergence of DNA code suddenly permitted the dazzling biodiversity we have today, including the ability to generate beings (people) who are capable of being universal computers themselves. Or take the jump from encoding spoken language as pictograms to phonetic alphabets, which enabled a whole new level of progress. So if "code" connotes DNA, alphabets, language, universal Turing machines, etc. for someone, the label isn't so bad.

IMO, we already have good words for "drone mechanically grinding away". Two such words would be "calculator" and "computer". The word "calculator" originally referred to humans who were grinding away and processing calculations of trigonometry and logarithms, using a code that had already been given to them.

People labeled "programmers" obviously aren't computers, but perhaps the majority of their work isn't worthy of being associated with DNA code, decimal encoding, and UTMs. So maybe we reserve "programmer" or "developer" for people who are just telling the computer what to do, and we reserve "coder" for people who tell the computer how to do it.

If you Google coder the top hit is for "clinical coders", whose job is the fairly mundane process of taking a medical diagnosis and punching it into a computer (althought to be fair even that job category isn't quite as mechanical and un-mind-ful as it sounds).

But I don't disagree that there are plenty of positive interpretations of code and coders. They just aren't the first things that spring to mind, at least for the general public.

Or maybe we should even further embrace our professional nature as standing inbetween reality and formal systems and call ourselves "idea compilers".

[BTW your blog is beautifully designed, it makes me ashamed of the crude typography around here! Although the www. form of link is broken I think]

I just learned a new word "banausic", which means "serving utilitarian purposes only; mechanical; merely practical". Computer programs can range from the banausic to brilliant works of intellectual insight, but "coding" seems to emphasize the former.

As I tried to imply, that isn't even so bad, perhaps hacking is a gleeful and necessary rebellion against the disdain of the practical that derives from Greek philosophy and hasn't quite been erased by modernism. Maybe we should embrace the banausic.