Are Software Engineers Real Engineers or Scientists?
This is an article that I elaborated during my Master’s at Santa Clara University.
1. What if we asserted that software engineering is not an engineering discipline but a discipline of science?
First, we need to define science to assert that software engineering is a discipline of science. We have the following definitions1:
- a branch of knowledge or study dealing with a body of facts or truths systematically arranged.
- systematic knowledge of the physical or material world gained through observation and experimentation.
- any of the branches of natural or physical science.
- systematized knowledge in general.
- skill, especially reflecting a precise application of facts or principles; proficiency.
In Software engineering we have a set of objectives, constraints, steps, and principles.
For instance, the software engineering steps (analysis, design, code, and test) demonstrates a process that applies principles (reuse, decomposition, abstraction, modularity, and completeness) to obtain proficiency, better results, and efficiency.
Therefore, science has a lot of definitions in common with software engineering, allowing us to assert that software engineering is a science discipline.
2. Are software engineers really scientists? Why or why not?
Software engineers cannot be considered just scientists, but also engineers. Besides the abstraction of the product, they have to create a product that is viable as well. Using the waterfall model we can demonstrate better how engineers and software engineers have characteristics in common. The table below shows the similarity between engineers and software engineers:
Engineers and software engineers make analysis before start working to avoid time waste.
In addition, they design and prototype to have an idea of their final product.
Building and coding are related to the physical creation of the product.
Another important step is to test. By testing we can a have product with no or minor issues.
Engineers they install their equipment like the software engineers deploy them.
Therefore, by the definitions that we have, software engineers are real engineers.