I look at ads and the jobs seem to overlap. A lot of software engineer jobs even say CS or related degree so it doesn't seem like a degree in CS = software engineer. It seems like a programmer or developer with experience can transition to the role or become an "engineer". Or is the engineer just the same job with a fancy name... Is there really a difference or is it just HR throwing names around?
I refer to myself as a Software Developer. I like the way it sounds, and it indicates that I'm more than a programmer, or "code monkey", since I design the architecture, interact with the customer, and do other tasks that are require to achieve my end goal: working software.
In reality, there may be small differences between each name, but I have found that most often, the terms are generally interchangeable.
I can't speak for america, but to be an engineer in australia, you must have attended a 4 year degree, which includes at least 3months of relative experience in industry before graduating, attend classes in regards to professional ethics and conduct, as well as adhere to a set of tenets for behaviour over your career.
You must also commit to furthering your professional development.
The word software "engineer" is overused by people a lot in this industry.
These are relatively diluted terms, except that programmer certainly means something in particular. A lot of people use the title "Software Engineer" that can't write a line of C or know anything about computers at all really. Software "Engineer" is somewhat loaded. In the software world, we don't generally use that word "engineer" as rigorously as in other disciplines. It is some what controversial as in many countries "engineer" has real legal implications. But on those resumes, it's just a lot of "happy talk" for programmers.
Here is a discussion on it over at JoelOnSoftware and a blog post.
Some would argue, that it matters, it doesn't. Titles are meaningless.
I've been called both. In the end you sit in front of a computer solving problems by programming.
I regard the term "Programmer" as an outdated term. Nobody hires "Programmers" , they hire Software Engineers, Software Developers...
There is probably no one answer to this. I'm sure there are large companies that hire all three of these positions and internally they have specific meanings. The problem is the meaning is not universal. In general a developer position has greater responsibility than a programmer position.
Software engineer is an oddity. It is used inappropriately in most cases. Software development is generally not engineering. There are exception such as when it involves life and death at the level of NASA software or surgical software. But usually software engineers are found in places where the process is anything but engineered.
My personal opinion is that anyone can be a programmer if they learn how to write some code that compiles, runs and produces the expected output. A developer would be someone who can develop, maintain, and enhance a program, is able to design an application in a good way, and can achieve a number of non-functional requirements (e.g. performance requirements).
A software engineer, on the other hand, is someone who has knowledge to apply software engineering principles. He has knowledge about software design methodologies, software architecture, application security, and various other aspects of a system. He knows about design, development, testing, and probably deployment too. He does't necessarily possess deep knowledge in all these areas, but he has a minimum amount of knowledge that allows him to make certain decisions. Most importantly IMHO, a software engineer knows, applies and works according to a software development process, realizes the need for one, and can follow it effectively.
For a more detailed comparison, see these links from Wikipedia:
I've always been partial to "Software Architect"
Everyone sees it differently though. As long as your good at what you do, who cares about a job title? I used to know a guy who was a janitor, but preferred to call himself a "Sanitation Technician".
So technically I as a "developer" could apply for software engineer jobs as long as I have the skills on the listing. I'm working towards a BS in computer and information science degree because it's easier and school is a pain. But, on my own I learn and acquire skills about everything software.
The only reason I would apply for software engineer is if it makes more $$ and can help me acquire new skills, grow, what not.
I always went by:
- software engineer - software (engineer) - engineer, an academic title, must have a degree
- programmer - a job description
- developer, someone who develops, doesn't necessarily have to match the above criteria (engineer, programmer) but someone who decides what will go in the software, and what is the goal that's trying to be accomplished
Now, usually, people have a degree in cs's, they're programmer's working as such, but they work on someone elses guidelines, so that would be software engineer/programmer. If they're working on their own piece of software that would make them developers as well. But a developer, can also be someone with a non-cs engineering background, ...
I don't like titles from which you don't understand what that person really does.
This question is about what do these words mean in a job title listed in a job ad.
The short answer is that the title used doesn't matter. There are probably a dozen different terms that will be used by companies to describe essentially the same set of responsibilities (and every job I've ever had included clauses in the contract like "... and other duties as required", which means you could get hired for C++ programming and end up doing customer support, or vice versa, without ever officially changing job titles).
Having said that, HR departments for academia, government, military, etc are going to be a lot more careful about using terms like "engineer", where there is potential for confusion about qualifications when people take the term literally. But if there is a specific requirement (e.g., must have a P.Eng. license), you can be sure it's going to be called out in the job description, whether it's in the title or not. So you might need to be a registered engineer to get a Programmer job for factory automation, or you may not need a degree at all to get a Software Engineer position at an off-the-shelf software company.
If you hear anyone who says "oh, those people aren't really engineers, they shouldn't abuse the term", ignore them. My grandfather was an engineer, and he didn't have any 4-year degree. He drove trains. The word "engineer" was around long before professionalization. A "software engineer" is literally someone who controls software engines. In my current role, if I want to make my official title "Build Doctor" or "The Plumbing Professor", there's no reason I shouldn't be able to.
There are many names, and hence the job may or may not be the same. Some developers work according to defined rules of the architect and hence, they may not be called absolute software developers. Developers or Engineers take an active part in the analysis, design, implementation, testing and maintenence of the product.
And even though one might call oneself a Software Engineer or Software Developer , they aren't true SEs or SDs if they haven't contributed through all the phases of software development.
IMHO - Programmers - is obsolete, a term used for people who only act as a translator between the real world designs and the computer.
Software Developers or Software Engineers - a term used for people who are capable of doing software development right from the requirements analysis to maintenance of the software product.
In my experience, especially in non-English speaking countries these job titles are most often used interchangably i.e. there is no disctinction in "software engineer" <--> "software developer" (e.g. in my company, everyone in the development department is a software engineer, with the occasional addition of Junior or Senior, probably to get some uniformity into our job titles). Required academic titles are usually stated explicitly as part of the job ad.
Just a meaningless name. I don't care what title I get, it's pseudo-remuneration and whatever you call me I'm still going to be coding the same.
This is one discussion that is guaranteed to have no single conclusion. I bet we have all used different titles at different time - I for one, have used 'Software Developer' and 'Software Engineer' on many occasions. Judging by the comments that some of you have made above, I would say that the image the industry has stems down from the fact that lots of people in the industry have no formal qualification and as such should only be referred to as programmers.
In fact, I see lots and lots of 'programmers' who call themselves Software developers; yet they have no qualification to back it up.
So, I have decided it would be better to refer to them as 'Programmers'; and myself as a 'Software Engineer' because at least I have a formal university degree in Software Engineering to back the argument up.
Until we stop referring to unqualified programmers at Developers, we can not have the respect and recognition that our dedicated, hard-working and qualified Engineers deserve.