I'm quite weary of analogies in IT (especially car analogies which work oh-so-well as we all know - "you wouldn't steal a car" now, would you...) because they're all inherently flawed and mostly just attempt to draw a strained parallel with the pet peeve of whoever does the arguing (and I'm no exception). But if we must, here's a car analogy for you: Driving a car is like driving a car - broadly speaking all you have to do is not hit stuff directly in front of you. Writing software, on the other hand, is rather like driving ALL cars in New York simultaneously - not exactly something the human mind was tailored to do. We do our best, but pervasive failure to attain perfection should not come as a surprise. As long as we are the ones doing the coding and as long as our tools do no more to prevent failure than they do today, we should NOT expect this to change.