In all fairness to "software engineers", this discipline is so new it is a joke to call it engineering. Civil engineering is centuries old with more than a few huge heaps of rubble created when they pushed outside of their bounds of knowledge at the time. Lots of exploding steam engines and crashed airplanes before best practices were codified in those disciplines. Real engineers have to pass a professional exam. You could try the same thing for software engineers but the exam would be meaningless almost before anybody could take it. That tells you the discipline is too new to called engineering however comforting the title may be. Give it another 50-100 years until it settles down. Right now, programming is more of a craft than an engineering discipline.