Итак, пилим новую фичу в программе, и вот в первый раз алгоритм отработал без (явных) ошибок. Измерил, что надо, спел, станцевал. Закончена ли работа?
Даже в первом приближении работа ещё не закончена. Надо запустить алгоритм ещё раз без перезапуска всей системы. У меня очень часто бывает, что первый запуск работает нормально, а во втором всё идёт наперекосяк.
Главная причина этого -- изменение стартового состояния. Перед началом выполнения всё, что надо, должно быть занулено, заединичено, очищено или, наоборот, набито нужными данными. Даже если мы следуем школьным правилам инициализации переменных, мы всё равно можем что-нибудь упустить, потому что реальные программы не настолько тривиальны, как int a=0; А ещё -- потому что инициализация может вызываться при старте программы, но не при старте алгоритма -- за этим тоже надо следить.
Получается, что первый запуск алгоритма оставляет некий мусор, который за собой не убирает. И этот мусор используется как исходные данные для второго запуска.
Конечно, этого быть не должно. Поэтому повторные запуски позволяют легко выявить такие ошибки. А дальше можно начинать ловить более мелкие баги.