Mechanical and Civil engineering requires more up front design than software because of the physical processes involved (plus the consequences of mistakes are usually deadlier). There are more questions with definite yes or no answers in engineering, and engineering uses a more rigorous application of applied mathematics than software engineering.
If software engineering were more like civil engineering we'd spend a lot more time formally proving our algorithms before we implemented them.
If software engineering were more like civil engineering we'd spend a lot more time formally proving our algorithms before we implemented them.