Michael Feathers gave a talk at JAOO about the ethics of error prevention. He mentions that preventing errors in applications have many different solutions, but most of the time we only need to pick one or two. He then moves on and coves 5 techniques:
1. Abstraction: Use of object oriented languages and higher end languages.
2. Design by contract: document precondition and post-conditions. The clients of the routine are obligated to fulfill them.
3. Clean room engineering: discipline of annotating code that proves to yourself that the code you are writing is correct.
4. Test driven development: write a test for a new capability, compile, fix compile error, run test and see it fail, write code, run the test and see it pass, refactor as needed, repeat.
5. Pair programming/software inspections: Fagan inspection: planning, overview, preparation, meeting, rework (looping back to planning), follow-up
Michael wraps up by mentioning that each of these techniques forces us to focus on what we are doing and steers us away from complication. They each trigger contemplation. The craft of software development is not about languages or tools. It is about practices. Quality is in the intangibles.
This presentation is available on InfoQ at http://www.infoq.com/presentations/error-prevention-ethics