April 16, 2003
Classifying programmers

Many of us coders have a hard time deciding just what to use for a job title.. there are so many different terms that essentially describe the same job.. developer, engineer, programmer, coder, hacker.. In theory, anyway, they describe the same job. I'm sure many would argue against such simplification. but before you fire off an angry comment bear with me, please, I will explain.

What matters is how I introduce myself to people. It really varies vastly from situation to situation. Most of the time it's a simple "I write computer software".. which usually elicists a response of "aaah..." and a vaguely blank stare... When I introduce myself to one of my mom's friends I make sure to throw in a term "engineer" in there somewhere so my mom can stick her nose up in the air "see? My daughter is an *engineer*" even though she has very little clue about what I really do.. and frankly the idea of an engineer her friends probably have is about as close to my job as Moscow is to Bundtown, Tennessee.

"Why do you sit in front of the computer all they long like this? "
"uh.. mom.. " sigh.

The problem of what to call my job arrives when I talk to someone in my field. Another geek.. because everyone has their own pre-conceptions about what a programmer is and what (s)he isn't.

So after careful consideration of this problem.. well, okay, the reality is closer to "after having nothing better to think about during a boring meeting.." I've decided to define my terminology a little better. I write code for a living, but while I may have the same official job title as some other coders I know I don't really think I should be classified the same way some of them are because there are so many different types of programmers that one general term of "programmer" is just not descriptive enough to be useful.

So there is the term "programmer" -- easiest definition, of course, "one who programs". That is what I do, it's what we all (the general code-writing "we") do.. So this one's easy.. a programmer is someone who writes code.

Then there's "software engineer" -- "one who engineers software". Not every programmer is a software engineer.. in fact I would dare say that vast majority of programmers are not. We all know the type.. they write their code, they do a really good job, code is functional, it does what it should.. but that's where it ends. The finer points of design and esthetics escape them... they just don't think about writing software in those terms.. it's just a job to them. Those people who go the mile above and take time to think through design and would not be caught dead copy-pasting code without at least giving the thought to how it functions as part of the overall design are software engineers. They engineer, not just code.

Lastly, but not leastly.. there are "hackers" -- not in the definition made notorious by media (for whom geeks behind keyboards are not exciting enough.. they had to make them into dangerous masterminds) but in the original term of well.. hacking stuff together. I'm sure we all hack code every now and then.. In a hurry.. need to patch a bug in production version.. a hack is sometimes the only way.. but then there are programmers who never do anything *but* hack. Often solving some of the most complex problems and producing some of the most brilliant solutions that neither of the types listed above could ever come up with.. Unfortunately more often than not.. they're the only ones who can even understand the flow of the code.. so if such a coder gets hit by a steam train.. people left over to maintain their code are essentially screwed. I once attempted to work with such code.. it would have been easier to convert a catholic priest to judaism than to understand how this particular project worked. But it did work and well.

So going by above definitions.. I would have to say I'm a software engineer. Of course next time I introduce myself to someone and give them this entire spiel about how I define my job title they will be asleep by the time I reach the term "software". Maybe I should just say "I'm a professional geek". It's quicker.

Posted April 16, 2003 11:58 PM in Geek Stuff , Java
TrackBack URL for this entry: http://www.unix-girl.com/mt/mt-tb.cgi/670
Comments
On April 17, 2003 12:23 AM kasia added:

Yes, I keep hearing about things like that.. good luck to whoever has to come up with a way to standardize testing a software engineer's knowledge.. it sure as hell will *not* be simple with the pace at which technology changes.. not to mention the wideness of the field.

#
On April 17, 2003 02:04 AM Yuri added:

Well there should be a difference, and I don't think programmers can really call themselves engineers if they don't have an engineering degree or equivelant qualification.

I guess it comes down to this (for me), an engineer is someone you want to build something like a bridge. Its complex and it must stay up.

A computer programmer is someone who builds something that may be as complex as a bridge and you hope it stays up.

#
On April 17, 2003 04:45 AM Mike added:

Ah, yes. I remember going through this conundrum a few years ago...

These days, of course, I'm a Manager. As such, I have been drained of both my technical skills and the ability to worry about stuff.

Life is good...

#
On April 17, 2003 08:54 AM Christian added:

My coworker and I joke about this all the time. In fact, we had someone new start in the department this week. My coworker was introduced as a "programmer" and he said "I perfer to be called an Application Developer" ... the next stop was my office where I was introduced as a "Developer" and I said "I perfer to be called a programmer"

I used to tell people I was an "Application Developer" since that is what my business card says, but that usually got blank stares ... so now I too say "I write computer software". I still kinda get blank stares though....

#
On April 17, 2003 11:17 AM Travis added:

Oh yeah, I might have added that most of the people in my area do actually have actual engineering degrees, so Big Blue's classification is accurate in that respect. However, we have this situation now where much of hardware design engineering is not done by a cadre of engineers armed with soldering irons, but with a cadre of software tools that were written by...other engineers, programmers, computer scientists, etc.

Re: Yuri's comment of reliability

But as software becomes more pervasive, some of it becomes as critical as a bridge for life and death. Lots of medical equipment comes to mind. The last thing you want to overhear from the medics arrive and find you having is a heart attack is, "The darn defribrillator crashed again. I told you we shouldn't have applied that firmware update. It'll be just a sec; it has to reboot..."

But for many things, yes, I'd agree, best effort is good enough.

#
On April 17, 2003 11:43 AM davec added:

I rarely use "engineer" because a) it demeans REAL licensed engineers to use the term on programmers who are made to cut corners all the time and drop engineering practices when it's convienient and b) I think most people that are "grown ups" think that engineers build bridges.

I usually say that I'm a programmer, because that makes it pretty clear what I do. Plus, it's always a good lead in to joke about what my actualy title might be.

I was actually the manager of the programmers at my company for almost 4 years, but I still introduced myself as a programmer (wishful thinking?)

#
On April 17, 2003 02:37 PM Matt added:

When I introduce myself as a games developer people always ask "Oh, do you play games all day?" which causes me to try very hard not to strangle them when I'm on a deadline and haven't had time to play games in the last 3 months.

I'm guessing that this isn't limited to programming, probably the vast majority of people have strange misconceptions about any job that requires significant technical skills.

#
On April 17, 2003 02:58 PM Arcterex added:

I guess "I get paid to tinker and have fun with computers and writing code" isn't good enough. Or maybe "I get paid *well* to tinker...." :)

#
On April 18, 2003 04:07 AM MiMaS added:

I surely could call myself "software engineer" and I do have engineering degree on that. But I usually say that I'm a "programmer" or "software developer" because here in Poland most people don't really believe one can be an engineer of such thing like software.
"software? engineer? no kidding ;-)"

#
On April 18, 2003 10:28 AM Baba added:

Over here in the UK, the title 'software developer' is most common.

#
On April 18, 2003 10:54 AM Harald added:

Ontario has the "only engineers can call themselves engineers" law too. The pros are fairly aggressive at defending the term; they have lawyers.

In the old days there were programmers and analysts (and programmer/analysts, an intermediate chrysalis-like stage, I think :-). Analysts did the design work, programmers slammed out the code. Nowadays everyone does both. Well, tries to :-)

In my office we call ourselves "software developers", but call what we do "software engineering".

Of course, I'm still really a system administrator in disguise...

#
On April 18, 2003 01:43 PM Techie2000 added:

So your boss wouldn't let you put UNIX Girl or Geek Goddess on your business card?

#
On April 19, 2003 09:19 PM kasia added:

Dave, you read that backwards :)

#
On April 24, 2003 11:58 AM andres added:

With this kind of economy my blog title says what I'm becoming to be :P

#
Trackbacks
NSLog();:Software Engineers
Kasia is wondering what to call software developers. She puts forth three main titles: programmer, software engineer, and hacker. Frankly, I'm not wild about any...
(read more)
April 17, 2003 08:46 AM
Daily Delusions:Fricklers and honorifics
For several days I have wanted to add something to what Kasia wrote about classifying programmers. I believe every 'programmer' has encountered the 'job-titlte' problem. 1) Programmer has become a bit of a derogatory term around here. A programmer is s...
(read more)
April 20, 2003 06:19 AM
Thinking Out Loud: Thought Leadership from an Enterprise Architect:Should Universities teach software engineering?
In a previous blog entry, I asked the question, Should Universities teach enterprise architecture? and got lots of responses. I figured I would ask the same thing about software engineering to see what discussion it provokes....
(read more)
September 30, 2004 05:37 AM