tgoop.com/gdb_dbg/221
Last Update:
И вот: дипломы написаны, защиты пройдены, студенческие шапки подброшены в воздух. Плюс еще пара месяцев потрачена на окончательную продуктизацию диплома, полишинг и базовое локальное тестирование. Близится самое интересное и ответственное: момент ОГРОМНОГО коммита всех правок в транк. Вы, конечно, можете сейчас подушнить и сказать: "ты чего, нужно было по кускам коммитать!", но это и так уже были куски, так вот первый кусок был все еще огромным, как чертов авианосец.
Наконец, день X (дальше тянуть нельзя): я прохожу последние локальные тесты, просматриваю каждый из сотен измененных файлов вручную (я уже тогда был параноиком) и зажмурившись... вливаю все в транк.
У меня была некоторая уверенность в том, что в целом то все работает, я действительно много и под нагрузкой тестировал в последние месяцы. Но, конечно, настоящая проверка - это огромное ночное тестирование с очень разными сценариями, которое шло по ночам на всех наших машинах одновременно (да, мы тогда были небольшой компанией, у которой не было лишних денег, так что по ночам девелоперские тачки тоже гоняли тесты).
И вот я иду домой (а в этот момент и начинается ночная сборка). Дома сижу и через remote desktop смотрю на то, как сборка продвигается на разных машинах. Пока что до исполнения дело не дошло, так что переживать рано, но я, конечно, все равно очень волнуюсь. В конце концов я засыпаю только для того, чтобы утром побежать на работу (даже не глядя на статус сборки), чтобы уже там оценить последствия. Сажусь за свою машину (пока что в офисе никого нет), кажется, у меня есть пара писем от работавшего ночью QA (святой человек был), медленно начинаю смотреть на статус сборки, и...
Следующий месяц своей жизни я помню смутно, он прошел, как в тумане.
В общем, я развалил нахрен приблизительно все. Вообще. При том спорадичными багами, которые умело избегали обнаружения на локальном тестировании. Уже ночью на меня завели пару ишуев, а весь наступивший день (да и пару следующих) на меня продолжали создавать все новые и новые critical и blocker. Потом, видимо, стали жалеть и просто дописывать новые тестовые сценарии в уже существующие тикеты.
Замечу, что это никак не аффектало клиентов, но вот другие разработчики просто не могли нормально тестировать свои правки: у них все падало из-за меня. Это безумно давило мне на психику, мало того, что у меня все разваливалось, так и другим людям я реально мешал работать.
Вы, наверное, скажете, что логичным шагом было бы откатить огромную правку и продолжить локальное тестирование (благо информацию о падающих сценариях я собрал). Но честь и хвала моему лиду, он решил тогда дать мне время на отладку. Первые, самые легко воспроизводимые баги я отладил за пару-тройку дней (в которые я, конечно, херачил часов по 18). После этого сборка чуть ожила, хотя в каком-то смысле все стало только страшнее: оставшиеся баги были уже не так просты, дать какой-то гарантии на время их отладки я не мог, workaround предложить тоже не мог, а если бы я откатил, то потерял бы сценарии для воспроизведения уже насовсем, слишком уж они спорадичны! Именно тогда я впервые встретился с багом, который воспроизводился раз в год (как я узнал еще через 11 месяцев).
В целом то я к тому времени уже что-то умел в отладке, но этот месяц что-то изменил во мне кардинально: я отлаживал столько таких злых спорадичных багов, я делал это настолько постоянно (на работе, дома, на парах в аспирантуре, в транспорте, когда шел за кофе, в редкие минуты, когда выбирался погулять воздухом), что в какой-то момент я с ними породнился что ли. Познал дзен, если можно так сказать в ситуации, когда на тебя косо смотрят все твои комрады, у которых опять что-то упало из-за тебя. Ну, и реально научился отлаживать.
Через месяц сборка окончательно (хе-хе, так нельзя говорить в случае спорадичных багов, это тоже урок, который я усвоил) позеленела, я выдохнул, команда тоже. ↓
#дух_машины
BY Алло, это отладочная?
Share with your friend now:
tgoop.com/gdb_dbg/221