10 причин, почему ошибки надо исправлять сразу

Многие новички, а иногда и опытные программисты, сталкиваются с соблазном отложить исправление некритичного бага на потом. Приложение какое-то время работает, к наличию ошибки привыкают и постепенно про нее забывают. В конце концов, встает вопрос: «А стоит ли вообще тратить на нее время?». Конечно стоит! Вот десять причин, почему ошибки в программах следует исправлять сразу же.

1. Неисправленные ошибки скрывают новые

Часто можно встретить ситуацию, когда только что исправленный участок кода работает корректно и проходит тесты, но при этом всплывает новая ошибка. Возможно, вам повезло, и новых ошибок не будет. Но если они все же всплывут, не стоит откладывать их исправление. Вполне возможно, что игнорируемая вами ошибка с низким приоритетом скрывает более серьезную. Или, что еще хуже, потребует переписывания значительной части кода. Если у вас в коде есть такая проблема, будет тем лучше, чем раньше вы ее обнаружите и устраните. Не откладывайте — исправляйте ошибки сразу.

2. Неисправленные ошибки подразумевают, что качество кода неважно

Все мы стремимся, чтобы наши программы были высокого качества. Но иногда руки опускаются, и качество когда стремительно снижается. Если программист работает с кодом, в котором есть плохо написанные функции, без юнит-тестов, новый код, который он пишет, скорее всего будет таким же. Аналогично, тестировщик, видя десятки незакрытых багрепортов, вряд ли захочет добавлять новый. Если вы работаете в команде, такое настроение передается и коллегам. Рано или поздно они начнут задавать себе вопрос: «А есть ли смысл стараться? Зачем стремиться к лучшему, если оно и так работает?». Не позволяйте себе расслабляться — исправляйте ошибки сразу.

3. Обсуждение ошибок приводит к бесполезной трате времени

Обсуждение старых неисправленных ошибок — это пустая трата времени, вне зависимости, планируете ли вы архитектуру, тестируете приложение или просто собрались с коллегами. Есть только один важный вопрос: «Должна ли это ошибка быть исправлена?». Все остальное — просто шум. Какой приоритет ей присвоить? Сколько это займет времени? Следует ли сначала исправить баг №114 или №113? Всего этого можно избежать (как и долгих дискуссий), если исправлять ошибки сразу. Безусловно, в каждом проекте могут быть ошибки, которые требуют повышенного внимания, но это не должно быть нормой. Не тратьте время на пустую болтовню — исправляйте ошибки сразу.

4. Неисправленные ошибки ведут к дополнительной работе

Чем больше неисправленных ошибок в проекте, тем труднее понять, есть ли найденная в списке известных. Представьте, что у вас 5 неисправленных ошибок. При обнаружении новой легко увидеть, сообщал ли кто уже о ней. А если их будет 50? В этом случае или потребуется дополнительное время на просмотр всех отчетов (которое можно потратить с пользой), или отчет будет отправлен повторно. Повторный отчет потребует дополнительного исследования и тестов. Не делайте лишней работы — исправляйте ошибки сразу.

5. Неисправленные ошибки портят статистику

Разные команды по-своему отслеживают ошибки. Кто-то просто учитывает количество оставшихся, а кто-то записывает все: от плотности до времени жизни. Вне зависимости от способа расчета, любая статистика полагается на точность данных. По мере того, как количество неисправленных ошибок растет, получать точную информацию об их состоянии становится все сложнее. Чем дольше ошибка остается неисправленной, тем больше отклонение от действительности. В результате это дезинформирует всю команду и ведет к неправильным решениям. Не портьте статистику — исправляейте ошибки сразу.

6. Неисправленные ошибки отвлекают

Когда кто-то встречает неисправленный баг, у него в голове возникает много отвлекающих вопросов. Возьмем, например, программиста, который пишет новую функцию и замечает старую ошибку. Должен ли он ее исправить? Может, кто-то другой уже работает над этим, но еще не успел сообщить? Можно ли полагаться на некорректный код? Точно так же и тестировщик, обнаружив старый баг при тестировании нового кода, столкнется с вопросами: «Продолжать ли тестировать новый код? Сообщили ли уже об этой ошибке? Повлияет ли она (положительно или отрицательно) на результаты тестов?» Не позволяйте себе отвлекаться — исправляйте ошибки сразу.

7. Неисправленные ошибки могут срывать релизы

Время от времени возникает ситуация, когда необходимо выпустить новую версию приложения прямо сейчас. Экстренный патч, например, или заказчик хочет увидеть последнюю версию на своем ноутбуке. Такие события вызывают стресс сами по себе, а при наличии ошибок ситуация становится еще хуже. Выпустить свежую версию само по себе обычно не занимает много времени, но сколько потребуется для исправления ошибок — неизвестно никому. Даже если быстро исправить критичные, нужно будет протестировать приложение заново. Как результат — или задержка релиза, или выпуск версии, в которой исправлены только критические ошибки. Не позволяйте ошибкам срывать релиз — исправляйте их сразу.

8. Неисправленные ошибки срывают сроки

Нет двух одинаковых багов. Некоторые находятся за считанные секунды, на другие уходят часы. Некоторые исправляются за минуту, другие могут отнять несколько дней. Исправление некоторых можно проверить автоматическими тестами. Некоторые требуют ручной верификации. Все вместе сильно усложняет оценку сроков выполнения задачи. Очень легко предположить, что исправление ошибок и повторное тестирование займет незначительное время, по сравнению с остальным проектом, и его можно отложить. Такое случается редко. Даже при наличии всей необходимой информации сложно сказать, сколько на самом деле времени уйдет на исправление ошибки. Не срывайте сроки — исправляйте ошибки вовремя.

9. Исправлять знакомый код легче

Человеческий мозг может решать множество сложных задач. Но долговременное хранение информации — явно не одна из них. Информация, которую мы запоминаем, забывается со временем. Даже то, что мы делали ранее сами, становится размытым и незнакомым. Код, который пишется в команде — не исключение. Поэтому проще исправить ошибку, пока память еще свежая, а не через одну-две недели. Можно несколько уменьшить забываемость кода, придерживаясь определённых правил, но это только даст время и не поможет запомнить код навсегда. Не заставляйте себя вспоминать, как работает код, который вы писали давно — исправляйте ошибки сразу.

10. Исправить ошибку сразу легче

Исходя из всех вышеописанных причин, исправить ошибку сразу выходит дешевле. Если не исправлять ее, а искать обходные пути, она может повлиять на остальной код, демотивировать и вас, и команду, стать причиной бесполезных споров, лишней работы, некорректной метрики. Она будет отвлекать вас, срывать сроки и релизы и мозолить глаза. И чем дольше вы ее игнорируете, тем сложнее ее исправить и тем больше негативные эффекты. Не рискуйте своими деньгами и нервами — исправляйте ошибки сразу.

Перевод статьи «Ten reasons why you fix bugs as soon as you find them»