Баги: возможно, это не ваша вина, но все равно ваша ответственность

0
298
views

Перевод статьи «It may not be your fault, but it’s always your responsibility».

Ответственность за баги
Photo by Peter G on Unsplash

Если программист хочет быть скромным (а это часто советуют), при сообщении о багах ему следует исходить из предположения, что это его вина. Принцип, конечно, хороший, но что, если в результате окажется, что это все же пользователь сделал что-то идиотское? Что, если на самом деле баги были в сторонней библиотеке, а не в вашем коде?

Даже если баг это не ваша вина, это все равно ваша ответственность. В этом посте я расскажу, как это знание применять на практике.

Во-первых, следует установить источник проблемы

Пользователь сообщил о баге: он использует написанный вами код, и что-то пошло совершенно неправильно. В чем может быть проблема?

  • Ошибка пользователя: он мог сделать что-то, чего не должен был делать, или имеет неправильные ожидания относительно работы кода.
  • Проблемы среды: у пользователя может быть другая операционная система (не такая, как у вас) или могут отличаться зависимости.
  • Баги в сторонних пакетах: то есть, баг в чьем-то еще коде, не в вашем.
  • Баг в вашем коде: вы где-то допустили ошибку.

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

Если баг в вашем коде, вы можете просто его исправить. Но иногда у пользователей возникают проблемы, не связанные с багами. Порой они делают что-то глупое, а порой баги попадаются в библиотеках, которые вы используете. Что тогда?

Берите ответственность на себя

Даже если виноват кто-то другой, ответственность все равно ваша, и вы должны действовать соответственно.

Ошибка пользователя

Если пользователь допустил ошибку или что-то неправильно понял, это признак того, что в вашей программе есть проблемы с дизайном. Возможно, ваш API подталкивает пользователя к плохим шаблонам взаимодействия, возможно, ваша обработка ошибок недостаточно информативна, возможно, пользовательский интерфейс не просит пользователей подтвердить удаление их данных. В чем бы ни крылась проблема, вы можете попытаться исправить пользовательские ошибки путем улучшения дизайна:

  • Сделайте так, чтобы API удерживал пользователей от совершения небезопасных операций.
  • Улучшите сообщения об ошибках, чтобы позволить пользователю диагностировать ошибки самостоятельно.
  • Сделайте так, чтобы пользовательский интерфейс предотвращал опасные действия.
  • Для сложного пользовательского интерфейса добавьте систему ознакомления.

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

Проблемы среды

Если ваш код не работает в какой-то определенной среде, это тоже ваша ответственность:

  • Вы можете упаковать вашу программу так, чтобы она стала более изолированной и меньше зависела от среды.
  • Вы можете сделать так, чтобы ваша программа работала в большем количестве сред.
  • Вы можете добавить проверку, которая сразу будет предупреждать пользователя, что у него неподходящая для этой программы среда.

Если ничего подобного сделать не удается, напишите документацию.

Баги в стороннем коде

Нашли баг в чьем-то чужом коде?

  • Прекратите поддерживать более старые версии библиотеки, если они содержат баги.
  • Если найденный вами баг — новый, отправьте сообщение разработчику, чтобы он мог его исправить.
  • Добавьте в своем коде какие-нибудь обходные пути, чтобы пользователь не сталкивался с этим багом.

И снова, если ничто другое не помогает, напишите в документации, как справиться с возникшей проблемой.

Ответственность всегда лежит на вас

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here