Is Software Engineering “Real” Engineering?
Sometimes I read/hear arguments why or why not software engineering is a “real” engineering discipline and what “engineering” software means in contrast to “just” writing code. I don’t want to go down the rabbit hole of arguing how engineering software is different from engineering physical things, but I would like to turn the discussion around a bit: What can traditional engineering learn from modern software development?
From all I heard, maintaining specifications in traditional engineering is far away from methods such as “version control”, “documentation as code”, or using CI pipelines to automatically run linters and heuristics to detect issues and inconsistencies immediately after a change has been made. It’s rather about maintaining tons of Word documents in shared drives.
Since there are inherent differences between traditional engineering and software engineering, maybe we should stop using the term (software) “engineering” and just say “software development” for the practical part and “software research” for the academic part?