It's not. It also is not quite not engineering too.
A lot of terminology and philosophy from engineering carries over to CS, but for most applications, the quality and thoroughness of real engineering does not, nor is it needed.
Computer science, or software engineering if you prefer, is a strange hybrid of a lot of things. On the pure development side, there is a lot of engineering-like stuff going on. In academia and research, there's a lot of science. And everyone is doing heaps of math. Unfortunately, English doesn't have a good word that encompasses all this, so we end up with poor terms that each only describe parts of the whole.
As a software practitioner, I find it hard to believe the distinction is a question of degree of quality and thoroughness.
CS largely involves design and implementation of machines and automaton, and in many cases far more complex machines and automaton (for example, self-learning ones) than "real" engineering. I can't see how this is not engineering, so I'll have to respectfully disagree.
Some CS involves that. Some involves fitting pieces together, or following an existing pattern: something more akin to carpentry then engineering.
My point was not to denigrate CS, but in fact to say that it is something larger then just engineering. Sometimes what we do is engineering, sometimes it's science, sometimes it's math, and sometimes it's carpentry.