views:

1819

answers:

5

I have seen many job titles for people involved in a software development process, but never found a consensus on what they mean.

I know many of them are equivalent, and found some other questions about that here in SO, but I would like to know your definitions and comments about them.

I want not only to know if there is really a consensus, but also to know if what I suppose to be a Software Architect, is really a Software Architect, and so on.

The job titles I mean are:

  • Developer
  • System Analyst
  • Programmer
  • Analyst Programmer
  • Software Engineer
  • Software Architect
  • Designer
  • Software Designer
  • Business Manager
  • Business Analyst
  • Program Manager
  • Project Manager
  • Development Manager
  • Tester
  • Support Analyst

Please, feel free to add more titles to this list in your answers. It would be very helpful.

+1  A: 

I think there definitely isn't a consensus and that there is also a huge amount of overlap between the various terms. Depending on my mood, the time of the day, the person I am talking to and the position of venus I will call myself a Software Engineer, a programmer, a developer or a used car salesman (actually not that one).

I tend to agree with Joel and Jeff's take on Software Architects (from their recent podcast). I haven't had any good experiences with large projects where a large number of non-coding architects are making decisions about implementation.

I should clarify that, although there is overlap for development positions, my understanding of management positions is clearer (based entirely on my own experience):

  • Project Manager - Manager with a development background (and potentially still writing code) who manages the development team and tracks requirements through the development process to release.
  • Product Manager - Responsible for creating the requirements based on a variety of sources and then communicating those requirements to the development team (project manager).
Cannonade
+3  A: 

One key issue you're going to run into is that Job Titles are often selected by Senior Management, whose view of the world is coloured by their industry.

For example, I've seen/read about the terms "Senior", "Manager", "Vice President", "Chief" and "Partner" being used to indicate the seniority of the position within the firm, rather than anything related to skills or responsibilities.

Add in the fuzzyness of the English language and all sorts of fun ensues ...

Some illustrations:

Is a Development Manager someone who manages development of a product, or someone who manages the development team?

Depending on your view, a Development Manager might be equivilent to a Project Manager, a Product Manager or a Team Lead.

Is a Software Architect just a Senior Software Developer who needed a payrise, or someone who actually controls the Architecture of the Software? Is a Senior Developer someone with a specific skillset, or just a Developer who hasn't moved into another field after 10 years?

And what about those who have more unusual job titles: Software Evangelist, Chief Information Officer, Chief Scientist, Resident Scientist, Senior Visualiser (all of these being held by people working on Software Development).

The key point I want to make is this: Until they're standardised (don't hold your breath), Job Titles are going to remain almost meaningless. What you want to see is the Job Description - details of skills and responsibilities.

Bevan
Thanks Bevan. I appreciate comments about both cases but what I'm really looking for are the skills that define each job title.
Rafael Romão
There is no agreed-upon set of skills for any of these terms. Chances are that there never will be, at least not across companies.
John Saunders
@John - That's why I would like to hear many opinions.
Rafael Romão
+2  A: 

There's a large amount of overlap between job titles. That said, however, it's sometimes possible to define the most common respnsibilities of the roles with a few titles. Here's a brief summary of what I'd think about when I hear a few job titles.

Regular staff

  • Developer. Responsible for day-to-day implementation of software. Transforms conceptual domain model into working, functional pieces that can be interacted with. Writes unit tests and possibly also integration tests. Collaborates with other developers and senior developers on more complex design issues.

  • Software engineer. Responsible for implementation and cohesive design; likely a developer with somewhat more design responsibilities.

  • Designer. Creative/artistic technical staff member with responsibility for creating graphics, multimedia, layouts, and generally appealing to the aesthetic sensibilities of software's users. May collaborate with software developers to understand the system better.

  • Tester. Responsible for verifying software quality and requirements objectives by producing integration and acceptance tests, and for verifying that these tests succeed.

Management and senior staff

  • Senior developer. More experienced developer with additional higher-level design and modeling responsibilities. Must frequently take a big-picture view and maintain awareness of what's going on in other submodules of the system. Probably participates in setting technical conventions on the project, such as development workflow. May prototype new functionality so that more junior developers can follow and learn from a particular model.

  • Project manager. Leader of a project team; responsible for shepherding the project to its completion. Ensures that team members receive adequate support from other management levels, and that cohesive team unit forms. Also responsible from insulating team from various extra-project threats such as scope creep and organizational changes, and maintaining general direction of the project.

  • Program manager. Responsible for achieving organization-wide objectives of schedule, budget, and quality. Likely to be accountable directly to executives. Leads high-level sessions for collaborations between programs and projects as appropriate. Escalates issues to executive staff if needed.

John Feminella
+6  A: 

Disclaimer: these should mostly be tongue-in-cheek. I apologize in advance if I offend anyone who actually has one of these titles.

  • Programmer - Writes code for a living. Can allegedly write Fortran in any language.
  • Developer - Writes code for a living but wants a better job title than "code monkey."
  • Analyst Programmer - You write code for a living but HR decided you weren't worth as much as a...
  • Software Engineer - Writes code for a living and is paid well because "engineer" is in the job title.
  • Software Architect - Someone who should write code for a living but doesn't.
  • Designer - Does things like lay out user interfaces in accordance with customer wishes. Bonus points if you are actually good at talking to the customer. The previous job titles usually can't do that.
  • Software Designer - Produces reams of UML diagrams in a futile attempt to avoid actually writing code. Ouch, that one hurt.
  • Business Manager - Determines whether we can afford to write all the code the above people are itching to produce. Super Mega Bonus points if you can trust them to do their jobs.
  • Business Analyst - Business Manager in training.
  • Program Manager - Joel just told you today how to do this one.
  • Project Manager - Business Manager of multiple teams. Has the authority to hire and fire people.
  • Development Manager - Leads a team of programmers. Wishes he could write code but management has filled his time with too much useless garbage.
  • Tester - Puts the software system through its paces. Breaks it in ways never thought possible. Writes bug reports. Good ones are invaluable, bad ones are less than useless.

One serious comment. In order to be good at most of these jobs, you need to know how to write code. If you manage programmers, you need to understand a little of what your people do every day. Designers need to know not to sell NP-hard features to the customer. And if you write code for a living, make sure you learn something new every day.

Kristo
A: 

There could be some non-conventional job titles even in Microsoft and Google!

Jaywalker