Я бы посоветовал почитать работы ныне покойного Э. Дейкстры (E.Dijkstra).
Например "Дисциплина программирования". Или его
Заметки и
Программистские басни
Одно из его (шуточных) высказываний (по памяти): "Если отладка это процесс устранения ошибок, то программирование это процесс создания ошибок"