The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.
Dijkstra (2000) "Answers to questions from students of Software Engineering" (EWD 1305).
E.W. Dijkstra Archive: Answers to questions from students of Software Engineering (EWD1305)[cs.utexas.edu]