Different people in the development foodchain need different degrees of technical education.
For example, people directly taking business requirements and turning them into business rule code don't necessarily need a very deep understanding of e.g. OS and database internal algorithm design. Interpersonal communication and plodding yet correct code is the order of the day, assuming an appropriate architecture for entering said business logic.
Lower down in the abstraction stack, you need people with deeper knowledge of the mechanics and sufficient knowledge of the problem domain so that they can let the business developers above get their job done.
And you can go lower again, where deep knowledge of a particular OS, a particular DB, a particular piece of hardware etc., is needed to tune things or write device drivers etc.
The thing is, this economy of people is shaped like an inverted pyramid. There are more problems in the business domain that need solving than there are new pieces of hardware that need drivers, or new middleware architectures that need designing and building.
So yes, there is a "widespread" lack of CS & engineering fundamentals in the IT industry (IT specifically is over-broad for development), but it's not the problem that a lot of hard-core CS people think it is. Frankly, most CS / engineer experts would be bored stiff by a lot of the mundane work that goes on, and wouldn't put up with the lower wages paid because of the lower requirements of those jobs.