Again and again I hear people state that "software engineering" is too young to be mature, that in the future we should expect to work "just like in the other engineering disciplines": get a specification, apply your aggreed upon engineering formulas, and build the thing, correctly, the first time.
Are engineers actually doing that?
The documentaries I see about engineering projects always show the involvement of models, virtual reality, software- and real simulations to test assumptions and get feedback from customers. They need to do that because building (and potentially destroying) the real thing is too slow and/or costly.
Not so much with software.
Which bridge would you trust more: one that has been "mathematically proven" to withstand a storm, or one that actually has survived all kinds of storms over the last year, a hundred times a day (as shown by the acceptance tests, executed by the continuous integration server)?
I have a hunch all those engineering skills, while certainly valuable, in the end are "just" a crutch, necessary because real life testing is just not realistic for them.
It is with software.