Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Possible Duplicate:
System Analyst vs Computer Programmer?

What the main occupational difference? Which one pays generally better? Which has the better Work–life balance?

I am asking because I am a computer science student and interested in the industry.

share|improve this question

marked as duplicate by Mark Trapp, Thorbjørn Ravn Andersen, Glenn Nelson, gnat, ChrisF Mar 20 '12 at 13:00

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I recall reading, but can't find the source now, that for many years Bill Gates named his occupation on his passport as "programmer". Which is a plus on his side, if true. – Joseph Quinsey Mar 20 '12 at 2:49

What the main occupational difference?

Just to be really confusing, the terms are often used largely as synonymous. However, the following cases may be true depending on the country, industry, or even company at which you work:

  • A programmer may be someone who configures devices (such as mobile tower equipment, PABXs, Routers and so on), but has no experience with programming languages or complex scripting.
  • Programmer may be used synonymously to describe a relatively junior developer.
  • A Software Developer may describe anyone generically at any level of experience who writes software for a living.
  • Software Developer and Software Engineer may be used to distinguish between a computer programmer, and a computer scientist.
  • A Software Analyst may be described more as a tester, or quality control focused Software Developer. (Rare, but I have seen it).
  • Software Analyst or Analyst Programmer may refer to a more senior software developer who is required to develop software as a means to support, streamline, or even replace business processes. Alternatively, less a day to day programmer and more someone who analyzes business requirements in order to provide specifications to the programming team.
  • Any of these titles may have the words Graduate, Junior, Senior, Principal, etc attached to define relative years of experience and/or pay grading.

In more general terms however, I prefer a simpler view:

  • Analyst describes a business-focused person who is more concerned with business process, capturing requirements, and producing specifications.
  • Developer describes a person who is more focused on the processes that are used to produce working software. This person may generate specifications, but usually is less involved with determining business requirements, and is generally a software jack of all trades who can do a little bit of everything with regards to the software development lifecycle.
  • Programmer is a generic term that describes anyone who is involved with encoding rules as software.

Which has the better Work–life balance?

Work/Life balance is entirely up to you to decide, and to negotiate with your employer. No job or title specifically dictates the work/life balance per-se.

Which one pays generally better?

As for pay, that generally comes down more to responsibilities than it does the job title itself. That said, in general you can tell who gets paid more by the words used in the title. Graduate and Junior Obviously get less than Senior and Principal positions, with more generic titles thrown somewhere there in the middle. Analysts may get a little more, but that is not always the case. Again it comes down to your ability to negotiate your package, your experience, and the way in which the company itself structures its pay grading.

share|improve this answer

A software analyst is the person who studies the software application domain and prepares the software requirements and specification (Software Requirements Specification) document.

A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management. They may contribute to the overview of the project on the application level rather than component-level or individual programming tasks.

A programmer, computer programmer, or coder is a person who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst.

share|improve this answer
I think the real answer is, it depends on the definition of the company. – eradicus Mar 20 '12 at 2:51

The answer to the questions is:

It depends.

It's better to have the information you need clarified with the company you're joining. Titles along with their responsibilities vary from one organization to another.

share|improve this answer

Software Analyst is not a very common title, at least not in my experience. In some organisations it seems to be a synonym for Business Analyst. However, I've seen the two roles defined this way -

The Business Analyst (BA) prepares a Business Requirements Specification, which describes the business needs for a system in a language and format that is digestible to the system users.

The Software Analyst (SA) takes the Business Requirements Specification and prepares a Functional Requirements Specification, which breaks down each business requirement into logical components that might be more easily translated into a computer program. The Analyst might also prepare a Non-Functional Requirements Specification, which would specify system needs such as Performance and Security.

In the above delineation, the BA will spend most of their time liasing with the end-users and especially with the SMEs (Subject Matter Experts). The SA, by contrast, would spend most time talking to the BA and the programmers.

As I said at the start, it's rare to see Software Analyst as a stand-alone role. Much more common is to see this role combined with the programming role, and called an Analyst/Programmer (A/P). The typical A/P is expected to be able to create reasonable funcational specifications, and to have the ability to liaise with the BA, or even directly with the users, in order to come up with a workable system.

Programmer and Software Developer are very often used interchangeably. I've sometimes seen it suggested that a Programmer purely cuts the code, whereas as Software Developer delivers a whole solution, including all design aspects. But I don't believe there are hard and fast definitions for the roles.

share|improve this answer

Of course there are formally speaking there are differences as in Robert's answer. However, these professional titles are very often used as nothing more than identifying pay-grade, rather then different set of skills. Typical corporate pay-grade hierarchy for software developers is as follows:

  • Junior Programmer
  • Senior Programmer
  • Analyst/Programmer
  • Functional Analyst
  • Business Analyst
  • Project Lead
share|improve this answer

In my experience, the title doesn't mean much at most companies. I've had each of those titles at different times and different companies I worked at. It didn't matter if I was called a programmer or software analyst, the work was the same and the pay was the same.

The biggest difference comes from moving into project/program management roles or business analyst roles. In those cases, you generally code less (if at all), attend more meetings, deal with users on requirements and their complaints and so forth.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.