The majority of software development will never be engineering simply because it doesn't need to be.
The term "engineering" when referring to bridge building, etc. fundamentally reflects a level of process discipline and technical quality control. Although I think these notions appeal to many programmers, most software just isn't important enough to require them. And because these things hard to do and unnecessary, they just won't happen.
That said, there is software that benefits from and requires real discipline. There is quite a lot of hard real-time and safety-critical systems programming practiced today that constitutes engineering.
The term "engineering" when referring to bridge building, etc. fundamentally reflects a level of process discipline and technical quality control. Although I think these notions appeal to many programmers, most software just isn't important enough to require them. And because these things hard to do and unnecessary, they just won't happen.
That said, there is software that benefits from and requires real discipline. There is quite a lot of hard real-time and safety-critical systems programming practiced today that constitutes engineering.