Перевод статьи «It may not be your fault, but it’s always your responsibility».
Если программист хочет быть скромным (а это часто советуют), при сообщении о багах ему следует исходить из предположения, что это его вина. Принцип, конечно, хороший, но что, если в результате окажется, что это все же пользователь сделал что-то идиотское? Что, если на самом деле баги были в сторонней библиотеке, а не в вашем коде?
Даже если баг это не ваша вина, это все равно ваша ответственность. В этом посте я расскажу, как это знание применять на практике.
Во-первых, следует установить источник проблемы
Пользователь сообщил о баге: он использует написанный вами код, и что-то пошло совершенно неправильно. В чем может быть проблема?
- Ошибка пользователя: он мог сделать что-то, чего не должен был делать, или имеет неправильные ожидания относительно работы кода.
- Проблемы среды: у пользователя может быть другая операционная система (не такая, как у вас) или могут отличаться зависимости.
- Баги в сторонних пакетах: то есть, баг в чьем-то еще коде, не в вашем.
- Баг в вашем коде: вы где-то допустили ошибку.
Начать хорошо с последнего пункта, т. е., с предположения, что это баг в вашем коде и, следовательно, ваша вина. Я знаю, что это тяжело. Я сам часто ловлю себя на мысли, что проблема в чьем-то коде, а я виноват лишь тем, что должен был ее обнаружить. Но именно потому, что легче всего обвинить кого-то другого, начинать поиски лучше от противного. Это должно помочь справиться с нежеланием признавать свои ошибки.
Если баг в вашем коде, вы можете просто его исправить. Но иногда у пользователей возникают проблемы, не связанные с багами. Порой они делают что-то глупое, а порой баги попадаются в библиотеках, которые вы используете. Что тогда?
Берите ответственность на себя

Даже если виноват кто-то другой, ответственность все равно ваша, и вы должны действовать соответственно.
Ошибка пользователя
Если пользователь допустил ошибку или что-то неправильно понял, это признак того, что в вашей программе есть проблемы с дизайном. Возможно, ваш API подталкивает пользователя к плохим шаблонам взаимодействия, возможно, ваша обработка ошибок недостаточно информативна, возможно, пользовательский интерфейс не просит пользователей подтвердить удаление их данных. В чем бы ни крылась проблема, вы можете попытаться исправить пользовательские ошибки путем улучшения дизайна:
- Сделайте так, чтобы API удерживал пользователей от совершения небезопасных операций.
- Улучшите сообщения об ошибках, чтобы позволить пользователю диагностировать ошибки самостоятельно.
- Сделайте так, чтобы пользовательский интерфейс предотвращал опасные действия.
- Для сложного пользовательского интерфейса добавьте систему ознакомления.
Если улучшить дизайн невозможно, второе, что можно сделать, это написать документацию и в ней пояснить, что пользователь должен и не должен делать, и почему. А вот отказываться разбираться с ошибкой, возникшей по вине пользователя, это наихудший вариант: ведь если ошибку сделал один человек, вполне вероятно, что такую же ошибку совершат и другие.
Проблемы среды
Если ваш код не работает в какой-то определенной среде, это тоже ваша ответственность:
- Вы можете упаковать вашу программу так, чтобы она стала более изолированной и меньше зависела от среды.
- Вы можете сделать так, чтобы ваша программа работала в большем количестве сред.
- Вы можете добавить проверку, которая сразу будет предупреждать пользователя, что у него неподходящая для этой программы среда.
Если ничего подобного сделать не удается, напишите документацию.
Баги в стороннем коде
Нашли баг в чьем-то чужом коде?
- Прекратите поддерживать более старые версии библиотеки, если они содержат баги.
- Если найденный вами баг — новый, отправьте сообщение разработчику, чтобы он мог его исправить.
- Добавьте в своем коде какие-нибудь обходные пути, чтобы пользователь не сталкивался с этим багом.
И снова, если ничто другое не помогает, напишите в документации, как справиться с возникшей проблемой.
Ответственность всегда лежит на вас
Выпуск кода в широкий мир это всегда ответственность: вы говорите людям, что они могут на вас положиться. Когда пользователь сообщает о возникшей у него проблеме, это практически всегда что-то, с чем вы можете справиться. Поэтому будьте ответственны и исправляйте ошибки, независимо от того, кто в них виноват.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]