It comes down to there being an objective, complex or sufficiently interesting, and usefully applicable material at the base. Software has this, it is just abstract: instead of atoms, it is bits and operations.
A 'material' means understanding, and rules, can be formed. Instead of force mechanics, software has algorithmic complexity. Sorting's lower bound of O(n log n) would be an example of basic knowledge. Of course, with only 50 years history, understanding of software's material is immature, and there is much to be discovered. But merely assembling pieces in regular, predictable ways, is sufficient for a simple kind of engineering status.
Engineering seems often conflated with process. But this misses the essentials. Process is only support. It doesn't tell you about the material, or about design. It only helps you be better organised in what you can already do. Buildings don't stand up because the designers rigidly followed a process, they stand up because there is an understanding of how forces work in structures (etc.).
In a large, industrial, sense, software engineering lacks in certain ways, in certain areas. But at the core, it is essentially engineering.
It comes down to there being an objective, complex or sufficiently interesting, and usefully applicable material at the base. Software has this, it is just abstract: instead of atoms, it is bits and operations.
A 'material' means understanding, and rules, can be formed. Instead of force mechanics, software has algorithmic complexity. Sorting's lower bound of O(n log n) would be an example of basic knowledge. Of course, with only 50 years history, understanding of software's material is immature, and there is much to be discovered. But merely assembling pieces in regular, predictable ways, is sufficient for a simple kind of engineering status.
Engineering seems often conflated with process. But this misses the essentials. Process is only support. It doesn't tell you about the material, or about design. It only helps you be better organised in what you can already do. Buildings don't stand up because the designers rigidly followed a process, they stand up because there is an understanding of how forces work in structures (etc.).
In a large, industrial, sense, software engineering lacks in certain ways, in certain areas. But at the core, it is essentially engineering.