Let's not kid ourselves. Switching to a better programming language is no panacea to solve all of the problems which can arise in software development. For example, it is perfectly easy to imagine a correct program which is difficult or inconvenient to use. It is also perfectly easy to imagine users finding fault with a correct program which has some missing functionality which they would like. If a feature is never specified in the first place in an initial, abstract specification then nothing in a methodical program development approach will go wrong as the program is being developed. The forgotten feature, in Knuth's terminology [Knu89], will remain forgotten.
A clean, high-level programming language is simply a powerful tool in a programmer's toolset. With it the creation of saleable, efficient, secure and well-engineered programs will still remain a demanding intellectual activity which requires original, creative and careful thought.