OK there are some more subtle problems too, especially concurrency problems, although we should reasonably expect developers by now to understand and follow the rules of multi-threading to avoid race conditions and deadlocks.The solution to this class of problems are simple, although they require discipline:- Hire good developers and give them enough time to do a good job, including time to review