I dunno about that. The Romans made great concrete, despite knowing nothing about Chemistry. They also made some pretty good roads using rules-of-thumb about soil bearing capacity, properties of materials, etc.
In any case, there is a lot of solid science behind software engineering. Would you employ a coding guy who hadn't formally studied the many algorithms that have been developed by PhD types over the years? I wonder how many "coders" waste time inventing something from scratch - badly - because they're unaware that someone had already solved their problem in 1956? I wonder how many of today's graduates can't even write, say, a bubble sort or a linked list because it's already in a class library somewhere?
At a more mundane level, good engineers put plenty of comments in their code because they're aware of the human factors involved in writing (and maintaining) good software.
I'd say the problem is not that it's immature, but that it's evolving too fast for engineering good practice to keep up with it. Engineering, of any type, is inherently conservative (or anally-retentive, depending on your views). When I was younger I got very frustrated with older engineers who were highly resistant to, say, using a new-on-the-market MCU instead of one that's tried-and-trusted with a bug-free toolchain. Having experienced endless frustrations trying to do things the 'modern' and 'better' way, I now have a much more nuanced view of these issues.
Personally, I blame salesmen. While I love the fact that I can now design with (say) a switchmode power controller IC that's pathetically easy to use, I also find it depressing that that wonderfully-designed piece of silicon will be thrown in the garbage two or three years from now.