Few days ago I was in a train and I’ve heard an interesting story between two persons sitting behind me. One said he is a C# developer (programmer) and another is software engineer who works in the small company as security specialist, specialized for embedded devices software security.

Discussion continued, but I was still thinking how many many people are not able to describe and explain what they actually are. In this case, the first person said he is a programmer and other one is software engineer, and the difference is huge.

I started to Google a bit, and I red a lot of different definitions of terms programmer, software developer and software engineer. On the http://chrislema.com/ you can find the following definition (paraphrased):

Programmer is a person who can code, developer is person who can code and has a bit more experience but software engineer is on totally another level because of engineering part in the term

On the http://www.skorks.com/ they defined terms as:

Programmers: Programmers write awesome code. Making it clean, well-factored and error free are very important concerns, but not at the expense of getting the job done. It is all about knowing the meaning of “good code” within their domain. They need to have some math skills, but this is not a paramount concern.

Developers: They write code. Making it well-factored and clean is important, but other factors often take priority. Math skills are very much optional, but it does help to be aware of common problems and solutions related to the domain they are in.

Computer Scientists: They write code (yeah I know it’s a bit of a bombshell). It may not be the prettiest or most well-factored code, but it gets the job done. It is not about the design of the code or “good” practices, it is about proving what they set out to prove. A computer scientist is as much a mathematician as they are a technologist

Those websites are on the first place if you search for programmer vs software engineer vs developer on Google. Usually, people make distinctions between these terms based on mathematical knowledge, saying that programmers can be really bad in mathematics, computer scientists should be real mathematicians, but I’ve met a lot of “programmers” with great math skills. The distinction between these terms should not be made based on mathematical skills or knowledge, but knowledge about software.

So let us start from the begging. “Software engineering is an engineering discipline whose focus is the cost-effective development of high-quality software systems” [1]. First time this notion software engineering was proposed in 1968 during ‘software crisis’.

I like another much more powerful definition of the software engineering saying that “Software engineering is an engineering discipline which is concerned with all aspects of software production [1], starting from planning, designing, implementing (developing, programming), installing, maintaining and all other processes involved“. This part “engineering discipline” explains that software engineers are applying theories, methods and tools to make things work in financial and time constraints. Now we can easily say that software engineer is person who can be (or is) involved in all aspects of software production applying theories, methods and other approaches in order to produce a software.

At the other hand, computer scientists are (more) concentrated on theory and fundamentals, that software engineers are going to use in their projects.

Sometimes you will also hear a term called system engineering, which is broader term than software engineering, and it is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Now it is obvious that software engineering is just a part of system engineering.

If you are careful reader, you can imply that programmer or developer is a person working in one process of software engineering called software development (there are other processes like software testing, software design etc…).

It is obvious that software developer comes from software development, and programmer probably comes from “programming phase or programming process or just programming“. You can understand now that it doesn’t matter how good you are at writing programming code, what are your math skills to be a developer, as long as you are involved in software development process of software engineering. For example, have you ever heard a software tester saying that he is developer? Probably not, because he is involved in another process called software testing.

Sometimes a person can be involved in all processes of software engineering (for example you are creating your own app), but it is still proudly saying “I’m programmer”, which is wrong. Stating that you are programmer you are saying that your work is less worth. You have to realize that your software is a product just like “Nutella” is. Just imagine how much work you need to produce a new product (for example new car), and don’t think it is easier with software.

Today, people are specializing themselves (for example, tester, security specialist, architect etc…) and are most of the time involved in one process of software engineering, because software engineering is so expanded discipline that it touches all aspects of our lives.

At the end, person two said right thing. He said he is software engineer, currently working as security specialist, and he is specialized in embedded devices security. His explanation is going from general to specific, which easily explains that he understand what is “happening” when company is producing a software, but in that process he is involved in its security.

Hope I helped you to make better understanding of who you are, and what you are going to say during your next interview.

Software engineer, developer or programmer, who are you actually?http://code-epicenter.com/wp-content/uploads/2016/01/programmer-vs-software-engineer-vs-developer.jpghttp://code-epicenter.com/wp-content/uploads/2016/01/programmer-vs-software-engineer-vs-developer-150x150.jpgAmir DuranDeveloper's careerdeveloper,programmer,programmer life,software engineer,software engineeringFew days ago I was in a train and I've heard an interesting story between two persons sitting behind me. One said he is a C# developer (programmer) and another is software engineer who works in the small company as security specialist, specialized for embedded devices software security. Discussion continued, but I...The point is to understand