There is not one single best programming methodology, one best set of practices. Different software systems are deployed in very different environments with very different demands.
NASA spacecraft need the most bug-free software possible. The methodology employed by the On-board shuttle group in Clear Lake Texas is well suited to developing such systems.
Banks, internet commerce, etc. need highly secure software systems.
The home computer market, games, entertainment, etc. require software that is economical throughout its entire lifecycle.
Experimental (exploratory) programming needs to be quick and easy to adapt and change.
Each of these environments calls for a different set of methodologies, tools, and practices. We should not be looking for (or try to teach) one single best practice.