I agree that software is inherently volatile. In civil engineering there aren't too many layers above physical and chemical limitations, and we've explored those layers for thousands of years.
In software the foundations for building your software is more software. To some extent, physical limitations offer constraints, but mostly the constraints are mathematical and the potential variations inside those constraints are mindboggling.
Part of the reason we get anything done in software at all, is that we apply artificial restraints, mostly caused by arbitrary historical happenstance, and don't explore and change those foundations every time we build something new.
Sometimes brave souls do explore and recreate parts of the foundations, and then the whole craft needs to be re-evaluated again.