Thursday, November 13, 2008

Job Titles

I talked earlier about the term ‘IT’ being used in different contexts. This can be a problem because people often have different notions of what IT is. It can be a general term to describe the technical field, which is how I use it, or it can also refer to internal corporate IT departments. I tend to refer to such departments as ‘IS’ or ‘MIS’ rather than IT.

Similar confusion abounds when it comes to job titles. What exactly is the difference between a computer programmer vs. a software engineer vs. a developer? Or an analyst vs. a systems analyst vs. a programmer analyst?

To a large degree this is a game of semantics. In theory all people who write software should be considered software engineers, in the sense that engineers are people who apply scientific and technical knowledge to real world problems. However, in practice there are real distinctions between the various titles that can lead to differences in pay, prestige, and more than a bit of elitism.

A (business) analyst (or systems analyst) is commonly one who translates business needs into software requirements. This type of position exists mostly at internal IS organizations; software companies in comparison tend to have product managers who fill such roles. At any rate, analysts and product managers both tend to stay out of the purely technical realm, except perhaps for those designated as “programmer analysts”.

As for programmers vs. engineers, that distinction came about in large part due to the different educational programs that many universities provided. Students often had a choice between undertaking a computer science degree offered in a school of engineering versus a CS degree from a math or liberal arts college. If you undertook an engineering track, you were exposed to more hard sciences (think chemistry / physics / calculus); in comparison, the math/liberal arts curriculum was seen as a less hard core approach (think more ‘softer’ classes like English Lit.).

To some degree this is an unfair distinction between two very similar programs, but the distinction has still stuck in many people’s minds. So much so in fact that some people saw a ‘programmer’ title as being inferior to an engineer title. As a result, even people who did not have a true engineering degree started calling themselves “software engineers” just for the added prestige. Some saw that as a cheapening of the title, but others felt entitled to the designation due to the nature of their responsibilities.

As for the term ‘developer’, it gained popularity with the advent of the web when people who put together static HTML pages started being called web developers. Some of these people eventually moved on to write some Cold Fusion or PHP code, but the title of web developer stuck with them. Unfortunately this has led to the term becoming somewhat ghettoized in certain circles, such that a “web developer” is thought to be someone who doesn’t write any ‘real’ code, at least not in the classic O-O sense.

My point of view? Call yourself what you like – developer, engineer, programmer. I don’t care, as long as you produce results. But if pressed, I’ll use the term ‘developer’ to avoid the programmer / engineer title controversy.

1 comment:

Anonymous said...

I agree with most of what you said. The wording seems to throw people off.

I hooked you up with a Stumble and a Digg link. You have a lot of good articles here.