- Manager (program, project, people)
often they have overlapping behaviors and skills. Often different people assign different skills/experience levels to these titles. Often one person came preform the role of each of these titles.
Formally an Engineer title should be reserved for those with formal engineering education (say a bachelors degree in an engineering discipline) and possibly with certification of skills. There are formal Software Engineering degrees, but often one is call a SW Engineer without having such a degree (myself included although I have a BS, MS, and Ph.D. in Electrical/Computer engineering). In general, an engineer uses more formal (proven, tested, widely recognized, disciplined) methods to achieve a solution. Developers may use more artistic approaches to solving problems.
When I stated work my title was Programmer but in the late 80's it was changed to SW Engineer (not just me but for all programmers in my organization and may others) but my work was pretty much the same. So often this is a matter of opinion, fashion, or ego scratching.
IMHO a developer and programmer are similar, but today most people assume a developer has more skill or experience (and thus can work on more complex tasks). There is also the term Coder, which is often seen as similar to a programmer, but actually covers all skill levels.
An Architect is often a very senior developer that also has responsibilities for broad or deep conceptual (beyond coding) development acts, often ones that define the high level structure/nature of a project or program. There are industry guidelines about the architect role (the abilities they should demonstrate). This is less true for the developer or programmer roles.
While not an exact match, consider building constriction (note all titles are skilled, often certified):
Programmer - similar to carpenter, brick layer, glazier, etc. (builds code but often directed by more senior folks); generally no college
Developer - similar to building construction lead/foreman/project lead (codes and designs, executes plans); often college
Architect - similar to architect (makes plans, high level design of solutions, often also a developer); always college
Manager - supervises execution by above; often college
IMHO there is no direct correlation between Computer Science degrees (BS , MS, etc.) and these roles. It is possible to preform all roles with just on-the-job experience. But having more education prepares one to achieve the more skilled roles easier/more quickly.
Barry recommends the following next steps:
According to Bureau of Labor Statistics, a developer will often work closely with programmers who might actually execute on the design of the developer. But oftentimes, developers will use a variety of skills including good communication, project management, and domain-specific technical expertise. In fact, this last point is crucial to understanding the difference between a software developer and software engineer.
A software engineer should be able to do everything that a software developer does, but with a different design philosophy. Engineers take a bigger picture view than developers. This means that they need to be more focused on structure design and eliminating technical debt. Rather than being interested in solving the immediate problem at hand, they are interested in solving that problem at hand while minimizing the trade-offs to other parts of the system and its architecture.
I hope this helps! There are extensive differences. :)
This is a very good question and I really think there is no good answer:
The reason there is no good answer is because many companies / recruiters tend to confuse both. Software Engineers and Software Developers are the same. But in the idea this is wrong, though they share some skills: coding.
A software developer is, for me, around a Bachelor degree in Computer Science that knows how to develop software. They know some languages, basic and advanced data structures and are able to write software per the design.
A Software Engineer is, for me, around a Master degree in Computer Science. They know the ins and outs of the computer (both hardware and software), know some programming language, some basic and advance data structures. They are usually require to architect software, find new solutions to software issues and so on. Because they also have coding skills, they tend to implement the design they came up with.
With experience, both tend to get confounded and a software developer gets enough experience to architect software and software engineer has wrote many programs to be as proficient in writing software as a Software Developer.
To give you a concrete example: a software Engineer might be the one to architect a Artificial Intelligence library using research results in the domain. They may even code the library. The Software Developer may implement something using that library or help coding the library.
I believe, nowadays, the only difference is the degree you get, which tend to disappear after you get more experience.
I really hope that helped. Please do not hesitate to ask more questions.
If you're wondering which degree to work towards, it probably doesn't matter; the courses offered by your institution, your work history, ability to demonstrate your skills, and what you have actually learned mean more than the specific wording of your diploma.
If you're wondering how to navigate the titles in the job market, your best bet is to carefully read the solicitations and ensure that you are a good fit for the position regardless of whether it's titled "engineer", "developer", "designer", "architect", or for that matter, "bricklayer".
Good luck in your career!