In my experience (as a civil then software engineer with a MS in CS in ML/Big Data) "real" engineering is much more prescriptive than software.
When you're designing a real-world engineering project, the entire specifications are defined legally (through national, state and local laws) and technically in manuals/books. Many engineering specifications will describe the work done to a T before you even need to think about it i.e. "water main shall be constructed of 12'' coated DIP at depth no less than 2 ft". A lot of the challenges are managerial and logistical.
All of this is on purpose. "Traditional" engineering disciplines are more mature and have the constraint of being safe for the general public. There isn't much room at all to creatively deviate from what's already specified.
I've found software design to be a lot more technically demanding in regards to designing and building things. There's a lot less precedent, more moving parts and many different ways to do one thing.
When you're designing a real-world engineering project, the entire specifications are defined legally (through national, state and local laws) and technically in manuals/books. Many engineering specifications will describe the work done to a T before you even need to think about it i.e. "water main shall be constructed of 12'' coated DIP at depth no less than 2 ft". A lot of the challenges are managerial and logistical.
All of this is on purpose. "Traditional" engineering disciplines are more mature and have the constraint of being safe for the general public. There isn't much room at all to creatively deviate from what's already specified.
I've found software design to be a lot more technically demanding in regards to designing and building things. There's a lot less precedent, more moving parts and many different ways to do one thing.