Are Software Engineers Real Engineers?
Software Engineers are engineers in their own right, but they are quite different from traditional engineers such as Electrical, Mechanical, Civil, Geomatic, Agricultural, Chemical, Aerospace, or Mechatronics Engineers.
Software Engineers are not real engineers in the same vein as Electrical, Mechanical, or Civil Engineers. This does not diminish the software engineering profession, the skills required, or its value, it simply means that Software Engineering is not strictly regarded as an engineering discipline in the same way that, say electrical engineering is.
There are many engineering principles that are common to both software engineering and other traditional engineering fields. But there are many implementations that mark the distinction between software engineering and traditional engineering disciplines.
Software engineering may as well have been called software development and it would have been fine, but to emphasize the seriousness and contribution of software toward the advancement of technology, Margaret Hamilton coined the term Software Engineering.
In the book Fluency With Information Technology: Skills, Concepts, & Capabilities by Lawrence Snyder, Margaret Hamilton is quoted saying,
“When I first came up with the term, no one had heard of it before, at least in our world. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. It was a memorable day when one of the most respected hardware gurus explained to everyone in a meeting that he agreed with me that the process of building software should also be considered an engineering discipline, just like with hardware. Not because of his acceptance of the new “term” per se, but because we had earned his and the acceptance of the others in the room as being in an engineering field in its own right.”
Software Engineers are different in many ways from traditional engineers. let us consider some of the things that mark the difference between software engineering and traditional engineering disciplines.
WHY SOFTWARE ENGINEERS ARE NOT REAL ENGINEERS?
We are going to look at the scope of work, the training, regulations, and how math is used in each of the fields.
In order to become a software engineer, you need a degree in computer science, information systems, information technology, or software engineering. This degree will take you 3 to 4 years of full-time study at many universities around the world.
You are likely to take classes such as Discrete Math, Numerical Analysis, Analytic Geometry, Computer Systems, Programming, Computer Graphics, Artificial Intelligence, Algorithms and Data Structures, Electronics, Distributed Systems, etc.
On the other hand, for most traditional engineering disciplines, you will need a bachelor of Engineering degree, which will take about 4 to 5 years of full-time study at many universities around the world.
For most traditional engineering programs, you will take the same classes in the first and second years depending on your university. You are likely to take classes in Engineering Math, Numerical Analysis, Electronics, Physics, Engineering Practice & Management, Safety, programming, Engineering Drawing, Workshop Technology, etc.
Some of these classes overlap, for example, Numerical Analysis, Electronics, and Analytic Geometry are common to both software engineering and other engineering disciplines.
You will also notice that Engineers in Electrical, Mechanical, Geomatic, Agriculture, and Civil share a lot of classes and do nearly the same type of Math from start to finish. On the other hand, most software engineering classes are only unique to software engineering.
It can be seen that while the training and setup for Electrical, Mechanical, Agricultural, Civil, Industrial, Chemical, or Geomatic engineering are similar, software engineering training is completely different from these traditional engineering disciplines.
Traditional engineering disciplines involve a lot of physical work. Whether it is building bridges, installing telecommunication systems, making agricultural equipment, making roads, designing and testing electrical equipment, building industrial plants, etc.
Safety measures, handling materials and chemicals, and ensuring that the forces are balanced, are all at the core of engineering. Even the engineer that works on programming projects will do mostly hardware programming or low-level programming.
But for software engineering, the work revolves around the design, development, testing, and maintenance of software. Software engineering is more about making a computer bend to your will.
I remember my lecturer in Digital Electronics once told me that, unlike Computer scientists who are software programmers, electrical engineers are hardware programmers. I have seen this to be very true in many cases. Engineers generally focus on the hardware or the physical parts and components, not so much for software engineers.
In many countries, engineers and software engineers are not regulated and registered by the same organization. If the same organization is regulating both, then the two disciplines will be in a different category to mark their distinction.
For example, the American Society of Professional Engineers has a category for Engineers and another category for software. The Engineering category contains the traditional engineering discipline and the software category is for software engineers and related disciplines.
In Zambia, Engineers are regulated and licensed by the Engineering Institute of Zambia (EIZ) while software engineers are regulated and licensed by the Information and Communications Technology Association of Zambia (ICTAZ)
These distinctions show that Software Engineering is not treated as engineering in the same vein as engineering disciplines like Electrical, Mechanical, Chemical, Civil, Geomatic, or Industrial Engineering.
- TYPE OF MATH INVOLVED
Another key difference between Engineers and software engineers is in the math they learn and use. Most engineers will do the same engineering math, this math is calculus and trigonometry heavy. I remember once upon a time I was solving calculus problems in 3 dimensions.
This Engineering math is used to solve problems in many engineering fields. I remember using a lot of calculus for electrical engineering classes such as signals and systems, digital signal processing, circuit analysis, and analog electronics.
On the other hand, software engineering focuses more on discrete math which excludes continuous math such as calculus. In discrete math, you will gain a good understanding of Set theory, number theory, combinatorics, graph theory, information theory, etc.
Discrete Math is used heavily in cryptography, computer algorithms, automated theorem proving, and programming languages. Software Engineers also learn and use Numerical Analysis and Analytic Geometry.
It can be seen that while engineers focus on calculus-heavy engineering math, software engineers focus on Discrete math.
Ultimately, software engineers are different from engineers in how their training is conducted and how they approach work. While there are a lot of similarities between engineering disciplines such as electrical, mechanical, civil, chemical, etc. there are not many similarities between software engineering and other engineering disciplines.
Software Engineers are not real engineers in the strict sense of the term. The principles of engineering may be similar, but the training, scope of work, and math usage are different for software engineering and engineering.
Most engineering governing or regulating bodies do not include software engineering in their regulations. Software engineering is mostly regulated by a different body from the one regulating Engineering.