Когда я начал работать инженером-программистом 2,5 года назад, баги меня пугали. Я не знал, где и как начать отладку, и это казалось огромной задачей, с которой я никогда не справился бы в одиночку.

Мне часто хотелось получить пошаговое руководство о том, как подойти к процессу отладки. Я так и не нашел его, поэтому решил создать свой.

Шаг 1
Не торопитесь и будьте методичными
При отладке очень важно, чтобы вы работали настолько методично и чисто, насколько это возможно. Меняйте по одной вещи за раз, записывайте шаги, которые вы предпринимаете, и записывайте свои мысли. Работая настолько чисто и контролируемо, насколько это возможно, вы избегаете копания в яме с ошибками, и менее вероятно, что вы внесете новую ошибку, внеся ненужные изменения.

Шаг 2
Исследование
Чтобы устранить ошибку, ее нужно понять. Чтобы понять баг, нужно задать себе множество вопросов, например:

– Вызывается ли код?
– Я пропустил файл?
– Правилен ли этот маршрут?
– Что делает этот параметр?
– Каково его значение? переменная?
— Функция находится на сервере, в клиенте или — при отладке теста — в тесте?
— Я внес ошибку с моим последним изменением, или это было все
– Эта функция делает то, что я думаю?
– Я работаю с правильным файлом?
– Какая функция возвращает неверное значение?
– Что такое сообщение об ошибке на самом деле говорит мне?
- Это происходит в моем коде или в библиотеке, которую я использую?
- Могу ли я написать тест, чтобы воспроизвести ошибку?

Шаг 3
Доверяй, но проверяй
Часто я делаю предположения, в которые искренне верю, и даже не думаю подвергать их сомнению. Я говорю себе что-то вроде: «я правильно написал имя переменной», «ошибка была вызвана последним внесенным мной изменением» или «эта функция делает X '. Проходят часы, прежде чем я выясняю, что в имени переменной была опечатка, что ошибка была всегда, но мое последнее изменение вывело ее на поверхность, или что функция на самом деле не выполняла X. Вы можете доверять своим предположениям, но проверять их.

Шаг 4
Установите таймер и попросите о помощи
Разница между работой в команде с другими инженерами и работой над своими личными проектами заключается в том, что нет неограниченного количества время тратить на ошибки. Когда вы ставите свое имя в билете в спринте, вы, по сути, говорите: «Эй, я беру на себя ответственность за этот вопрос. Я позабочусь о том, чтобы все было закончено». Взятие на себя этой ответственности не означает, что вы должны делать все в одиночку. Это означает, что вы закончите выпуск и своевременно подготовите его к отправке в производство. Иногда это означает, что вам нужен опыт кого-то другого.

Способ найти баланс между немедленным обращением за помощью и попытками решить проблему в одиночку в течение нескольких дней — установить таймер на час. Если к тому времени ошибка все еще не исправлена, вы можете сообщить своим коллегам.

Вот шаблон сообщения, которое вы можете отправить:
- Это то, что я пытаюсь сделать
- Я сделал... и я ожидал, что это произойдет, но вместо этого... произошло
- У меня есть пытался …, … и … исправить, но …
- Я думаю, что причина, по которой это происходит, в том, что…
- Это кажется возможным/невозможным, потому что …

Шаг 5
Сделайте перерыв
Исследование ошибки требует большой концентрации. Чем дольше вы работаете над ошибкой, тем больше вероятность того, что вы что-то упустите. Сделайте перерыв, выйдите на улицу, приготовьте, уберите на кухне, примите душ, потренируйтесь, пообщайтесь с друзьями, вздремните, посмотрите «Офис». Когда вы вернетесь к своей ошибке, скорее всего, все станет намного яснее.

Всегда есть логическая причина ошибки. Конечно, для выявления некоторых ошибок требуется немного больше времени, но нет ничего необъяснимого и, следовательно, решаемого. Чем противнее ошибка, тем лучшим инженером вы станете, я обещаю.