Who Am I?

(BTW, this is not the long inaugural post I mentioned before. I guess it didn’t have to come next.)

“When I discover who I am, I’ll be free.”
Ralph Ellison, Invisible Man

This is a subject that has come to my mind a number of times. Probably more so lately because I’ve been interviewing. But it also comes up occasionally when talking to younger programmers. What do we (whatever we are) call ourselves? What do we think, to ourselves, that we do?

I work in computer software as a programmer. My degree is in Electrical Engineering. When I started out I called myself a software engineer. But that was mainly because I actually was an engineer by degree and I guess, in some way, I wanted credit for that even though I never really worked as an engineer (at least not in the sense that my degree would indicate). Turns out, companies don’t mind giving out that title.

I no longer think that way. At least the part about needing credit. I was young.

Now, I do think that engineering, in its most general defintion, does include the kinds of things a programmer does. But I see enough use of the term ‘software engineer’ that could cummunicate more simply with the term ‘programmer’. In my old age I just want to be simple and direct so that is what I’ve now been responding with when someone asks me what I do.

I’m a programmer.

I hear a lot of people say they are a ‘developer’. That isn’t bad if the context is understood. But I want to say one thing no matter who I’m talking to. Saying I’m a programmer saves me from saying I’m a software developer. But I confess, all this was to lead up to what I really want to talk about.

Nearly my entire career I have noticed that a lot of programmers refer to themselves as a pick-a-language programmer. During college I used APL, Prolog, and Lisp more than anything else. But I never would have thought to identify myself as a Lisp programmer, for instance. After leaving college I used C++ for nearly 5 years, then Objective-C for 2+ years, and then mostly Java for more years than I can count. Regardless of the time, I’ve always thought of myself simply as programmer. Now that I’m trying to do more Clojure, am I no longer a Java or iOS programmer? I know there are certain niche markets where you need to identify yourself more narrowly. In fact, I just remembered that I did used to call myself a NeXT programmer. I would still tell people that I am a programmer and if needed I would say I can do iOS programming.

Part of the reason for thinking this way is probably due to how I came into programming in college. Learning a computer language was always anchored in solving problems. I learned APL as a means to write CPU design simulation. I learned Lisp as a means to write image processing and understanding programs. I learned Prolog as a means to write expert systems. Later I studied some of these languages for themselves but that wasn’t the original motivation. I think this stuck with me.

I’m somewhat sensitive to this because of the specific (narrow?) focus I usually see in job postings. Especially within the DoD world that I’m sometimes connected to. I get this. I get why this is. I’m not really arguing against it. But I have seen this result in people thinking of themselves (without much internal reflection) in very narrow ways. Specialization is cool. But picking language X and becoming and X programmer for life is not a good long term strategy these days. And to be honest it makes me sad. And to be even more selfishly honest I’m sad because the more a programmer views themself this way, the more it reinforces the narrow focus of most job listings. Which, I suppose, is what I really wanted to talk about.

Maybe there’s some arogance buried there on my part. Could be, but it’s an accurate description of where I am now. One thing I know, I don’t want to fall into an unrefelctive, narrow life. Which is why I think about these things. I’m not one to look down on other poeple that are content in their own place that they have chosen. But it is also true that some young programmers won’t necessarily know the larger world of programming without someone encouraging them to look beyond what they currently know and what they are currently doing. I’ve found that employers vary widely in how much they encourage their people to look beyond the job they are doing. And I’m not even going to get into the current college situation.

This is all getting better with the rise of the term polyglot programmer. While, to me, that’s still just programing, I won’t quibble (in general) if it leads to more job openings that emphasize programming per se. And as for the the so-called full-stack, hybrid, etc. developers, I’m not going there either. They are not at the heart of my concern.

So, I’m curious. What do you call yourself? I’m not talking about titles. How do you tell other people who you are to you? Was this natural or did you come to it over time? And how much should we care to talk about this with younger programmers? Or am I thinking too much about nothing?

“Who are you?”
“No one of consequence.”
“I must know.”
“Get used to disappointment.”
William Goldman, The Princess Bride