The Difference Between Software Engineer & Computer Programmer
Before we talk about the software field we have to talk about a general concept. We have to remember the definition of technician vs engineer in general.
Technician: a worker in a field of technology who is proficient in the relevant skill and technique, with a relatively practical understanding of the theoretical principles.
Engineer: a person who design, analyze, build, and test machines, systems, structures, and materials to fulfill objectives and requirements while considering the limitations imposed by practicality, regulation, safety, and cost.
This is the classical pictures of technicians and engineers.
Let’s go back to the first industrial revolution era. in this time it wasn’t also clear who is the mechanical engineer,
- What is his education? in that time there were no education programs for mechanical engineers, the first golden edge of mechanical engineers has just started. and the closest education programs available and popular at that time were Physics education programs.
- What are his responsibilities? there was a huge need for mechanical engineers and technicians everywhere you need a machine.
- When should the people call him with an engineer title?!
at the beginning of the Industrial Revolution, all of those questions was a debate between professors and in all academic halls.
Again, History repeats itself but as always in a new phase. a new era is rising.
In the last 60 years, the Software\Technology revolutionary era has begun.
Nowadays software operated everywhere, in all fields… Medical fields, Aerospace field, finance, economy, management fields, agriculture, geographical, transportation, war weapons…
Now Software engineers and programmers almost the most wanted people in this Software\Technology revolutionary era, and it is totally similar to what happened before in the first industrial revolution era.
the same debate appears again but in the software area.
- What is his education? before 60 years there were no education programs for software engineers, Software\Technology revolutionary era has just started. and the closest education programs available and popular at that time were Mathematics education programs.
- What are his responsibilities? there is a huge need for software engineers and technicians (programmers) everywhere you need software.
- When should the people call him with engineer title?!
Programmer: Is a worker in a field of software who is proficient & skilled in a programming language such as (JAVA, PHP, C, C#, Python….) with a relatively practical understanding of the theoretical principles such as (Object-oriented programming, functional programming, data structures, algorithms…).So Anyone knows a programming language in a skilled way he is a programmer
Software Engineer: a person who design, analyze, build, and test software, systems, to fulfill objectives and requirements while considering the limitations imposed by practicality, regulation, security, and cost, Software Engineer has a foundation of computer sciences such as (Machine learning, Computer vision, Image processing, Pattern recognition, Data mining, Evolutionary computation, Knowledge representation and reasoning, Natural language processing, Robotics, Systems architecture, Operating systems, distributed systems, Networking, data transmission, artificial intelligence …)
So the main difference between Software Engineer vs Programmer is scientific knowledge. which you can touch whenever you work with both of them.
An engineer can work technician, But the technician can’t be an engineer, it is the same Software engineer can work as a programmer, but the programmer can’t be a software engineer.
By the way like any field, engineers and technicians work together to achieve the goals.
Another simplified projection example to clear the difference between a Software engineer and a Programmer.
Building contractor VS Civil Engineer:
Building contractors can build homes even with 10 floors without any civil or architecture engineer, but they can’t build a Dam, build a tunnel…, because simply they missing the scientific knowledge, the contractor doesn’t know scientific topic such as (Moment distribution, Structure, geology, soils, hydrology, environment, mechanics…), but Civil engineer can design and build a Dam, tunnel…
It is the same in the software field, Programmers can build an entire website, apps. But when it comes to build a (Compiler, Machine learning, artificial intelligence, Computer vision, Autonomous driving …) framework, Apps they can’t.