Страхи и суеверия рука об руку идут с разработчиками по жизни. Будем откровенны — тому виной баги. Баги бывают у всех. Некоторые баги точь-в-точь детские страшилки, что появились в далёком прошлом и противоестественно существуют уже десятки лет. Иррациональная боязнь встретить баг (напороться на любую неудачу) привела к возникновению занятных обрядов и ритуалов, о которых и пойдёт речь в этом посте. Быть багофобом естественно и не зазорно, а способов справиться со страхом превеликое множество.
Есть такие баги, которые как конверт с сибирской язвой или древняя шкатулка на старом индейском кладбище — вещь с отчётливым знаком черепа и костей. В стандартном блокноте Windows с 2001 года есть ошибка, которую никто не собирается исправлять. Adobe Flash — кладезь фундаментальных багов. Критическая уязвимость в командной оболочке Bash на старых устройствах просто не может быть закрыта — баг существует во всех версиях Bash, созданных за последние 25 лет. А небольшой баг, обнаруженный в опенсорсном OpenSSL, привёл к появлению одной из главных уязвимостей за последние годы. И конечно же, баги, которые обнаружены в уже не поддерживаемых версиях операционных систем, останутся с вами навсегда.
Принято считать, что обновление — это священный Грааль, избавляющий от всех проблем, не так ли? Как назло, некоторые баги бывают вызваны именно обновлением. Пример, хорошо знакомый владельцам техники Apple. Прилетает прошивка iOS 9.1, и нарушается работа сканера отпечатков пальцев Touch ID. Это далеко не первый (и явно не последний) подобный случай. Если вы пользователь Ubuntu, то вы понимаете, о чем я. ;) А ещё из-за мааааленькой опечатки (был добавлен лишний пробел) в скрипте инсталлятора драйверов Bumblebee (поддержка NVIDIA Optimus под Linux) у пользователей была случайно удалена папка /usr. Так что баги вездесущи, подчас неустранимы, проявляются совершенно невероятным способом, возникают порой из-за просто мистических совпадений. Подобные ошибки приводят к тому, что пользователи утрачивают веру в спасительный апдейт. Сейчас ты скорее будешь ждать, что обновление поставит кто-нибудь другой, а уж оценив стабильность работы, обновишься и сам.
Так баги становятся частью суеверий, суеверия превращаются в мифы, а мифы ведут к страхам. Мы спросили наших разработчиков, с какими страхами они сталкивались в своей работе.
Дмитрий Матвеев, продуктовый разработчик в Одноклассниках:
Мой самый большой страх в том, что я могу искать «трудно воспроизводимую ошибку» там, где её вообще нет. То есть, например, тестировщик мне сообщит о проблеме на одной из версий приложения и о том, что проблема воспроизводится не всегда. Но я же программист, я понимаю, что должны быть какие-то причины и условия, при которых она воспроизводится всегда. Поэтому сижу и основательно разбираюсь. Но почему-то либо проблема не воспроизводится больше, либо исправление для неё не работает, а стопроцентно должно. Тут-то и начинает закрадываться какая-нибудь паранойя «а на то ли я вообще смотрю?», «не сошёл ли я с ума?» и т. д.
Недавно так четырьмя парами глаз разбирались с проблемой, перепробовали, казалось, всё и сдались. Очень давно не уходил с работы настолько уставшим. А на следующий день, решив, что одного дня будет достаточно, чтобы справиться с проблемой, в чём бы она в итоге ни оказалась, одолел её за пару часов. Потому что в голову пришли свежие идеи и проблему начал разбирать там, где надо, и с другого конца. :)
Мораль такая: утро вечера мудренее, а если что-то ну никак не получается, надо забить на это, поспать, сходить в душ и попробовать снова. ¯\_(ツ)_/¯
Александра skvot Китова, тестировщик в проектах Armored Warfare, CrossFire, Warface:
У меня профессиональное — не бояться вообще ничего. :) На самом деле наиболее страшная для нас вещь — это, как метко выразился мой коллега, «тестирование методом Шрёдингера», когда прилетает таск «Тут пришёл какой-то патчик… Что-то в нём разработчики убрали, а что-то добавили… Патчноутов нет, появятся только через три дня, а дедлайн через два дня, поэтому, пожалуйста, протестируйте ВСЁ». Из примет, которым обязательно нужно следовать, выделю одну: никогда не закрывай таски до успешного выхода в релиз!
Алексей pifagor_mc Петров, директор по качеству Почты Mail.Ru:
Расскажу про суеверия. Если фича запускалась долго и с множественными багами, то после релиза необходимо соорудить алтарь жертвоприношений, чтобы на продакшене не было багов.
Регрессов мало не бывает, лучше перебдеть, чем недобдеть.
Если разработчик говорит: «Там фикс в одну строчку», то следует провести все мыслимые и немыслимые испытания — практика показывает, что чем атомарнее фикс, тем больше шансов сломать всё.
Во время раскатки билда на продакшен зайти к админам со свечкой, молиться на графики со словами «Во имя гендира, техдира и тимлида, QA!»
Тестировщик тестировщику — друг, брат и «помоги, пожалуйста, регрессы погонять».
Андрей andrewsumin Сумин, руководитель клиентской разработки:
Страх разработчика — рекурсия, которая приводит к self-DDoS. А ещё когда катишь релиз и видишь на графике полку. Откатываешь, а полка осталась. O_o
Ольга rukola Курицына, руководитель подразделения главной страницы Mail.Ru:
Я очень боюсь забыть токен дома. «Вдруг война, а я без токена».
Андрей mamonth Терешко, программист Почты Mail.Ru:
У меня есть такие суеверия. Не деплоить на продакшен в пятницу вечером — к больной голове и занятым выходным. Не коммитить без комментариев — к плохому настроению у релиз-инженера.
Алексей Антропов, руководитель группы системных администраторов:
Какие ещё суеверия, у меня в очереди 74 таска и одновременный запуск двух проектов!..
И специально для тех, кто читает в постах только вступление и заключение, мы подготовили сокращённый, дайджест-вариант поста в форме видео, из которого вы узнаете, как визуализируются страхи программистов. В конце ролика самых терпеливых ждёт бонус: три простые вещи, которые способны избавить айтишника от страхов раз и навсегда.
Не судите строго, это наш первый 666-й пост! И выпал он по несчастному совпадению на пятницу, 13-е. А какие суеверия есть у вас?