... Most of the sw "engineers" we worked with had no clue what debugging was. ...
I'm of the opinion that there is no such thing as "software engineering" and am deeply suspicious of those who claim to be "engineers" in the realm of software. Some small part of the business of producing software is amenable to actual engineering, but most of it is not, and the activity of making it is a "craft" not engineering. Good software is craftsmanlike and the producers of the same are craftsmen and master craftsmen, titles anyone ought to be proud to be capable of wearing.
The dingle who coined the phrase was probably a fucking MBA... their entire degree consists of learning the same hundred or so ways to make numbers tell lies that have been taught for generations, and the current buzzwords in use for those lies. Of course they wouldn't get why the two are an oxymoron.
An engineer deals in absolutes and concrete (sometimes literally) concepts; what you put in your brain, what comes out of it and what goes down on paper are all representations of tangibles in the real world, and that translate directly to THINGS.
Programming is by definition almost entirely abstract, the polar opposite; even when you start out with something concrete, you disintegrate it into a collection of interdependent abstact objects that don't really exist anywhere until somebody makes the thing those abstracts represent.
Yes, there's a LOT of hard math involved... and that usually represents some real physics in the real world... but it's STILL ABSTRACT objects used to describe abstract concepts to represent reality. It is more a high-precision art than any kind of science.
*Currently overrun with two small children*