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.
Comments
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.
Posted by: kasia | April 17, 2003 12:23 AM
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.
Posted by: Yuri | April 17, 2003 02:04 AM
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...
Posted by: Mike | April 17, 2003 04:45 AM
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....
Posted by: Christian | April 17, 2003 08:54 AM
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.
Posted by: Travis | April 17, 2003 11:17 AM
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?)
Posted by: davec | April 17, 2003 11:43 AM
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.
Posted by: Matt | April 17, 2003 02:37 PM
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...." :)
Posted by: Arcterex | April 17, 2003 02:58 PM
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 ;-)"
Posted by: MiMaS | April 18, 2003 04:07 AM
Over here in the UK, the title 'software developer' is most common.
Posted by: Baba | April 18, 2003 10:28 AM
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...
Posted by: Harald | April 18, 2003 10:54 AM
So your boss wouldn't let you put UNIX Girl or Geek Goddess on your business card?
Posted by: Techie2000 | April 18, 2003 01:43 PM
Dave, you read that backwards :)
Posted by: kasia | April 19, 2003 09:19 PM
With this kind of economy my blog title says what I'm becoming to be :P
Posted by: andres | April 24, 2003 11:58 AM