No Silver Bullet: Essence and Accidents of Software Engineering http://news.ycombinator.com/item?id=3068513
for a better idea why the state of art is actually much less terrible than it appears to idealists.
"I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.
If this is true, building software will always be hard. There is inherently no silver bullet."