| Silo и технический долг |
| 17.02.2026 00:00 |
|
Недавно я посмотрела сериал AppleTV Silo. Шоу рассказывает о жизни 10 000 человек, обитающих в подземном бункере. Они знают, что их предки жили там сотни лет, но не знают, зачем, и почему выходить наружу опасно. Бункер работает от генератора, который обслуживает команда Механиков. В третьем эпизоде показано, что генератор не работает правильно уже 30 лет и быстро приближается к критическому состоянию. Конечно, это сразу напомнило мне о техническом долге в программном обеспечении! В этой статье я рассмотрю восемь шагов, которые команда должна предпринять для работы с техническим долгом, с примерами из Silo и из проекта, над которым я работала несколько лет назад. Шаг 1: Осознайте проблему В бункере Механики знали о проблеме с генератором, но остальные — даже мэр —были не в курсе. Первый шаг — донести до руководства, что проблема серьёзная. В реальном проекте важный платежный модуль работал на перегруженном сервере, и только несколько разработчиков понимали риски, пока не сообщили об этом менеджменту. Очень легко сунуть голову в песок, столкнувшись с техническими долгом, но игнорирование долга не решает проблему – она никуда не денется. Здравый взгляд на проблему – первый шаг в определении, как ее решать. Шаг 2: Обоснуйте необходимость исправленияГенератор – единственное, что дает бункеру электричество и свет. Если он выйдет из строя, исправить это невозможно, и жители останутся в кромешной темноте. Без электричества нельзя будет выращивать пищу, и население вымрет. В компании перегрузка сервера могла привести к отказу всего ПО, а исправить это было бы очень трудно. Время отклика на обычные действия пользователей растянулось бы до бесконечности. В обоих сценариях важно, чтобы понимающие проблему люди внятно сообщили менеджменту, что произойдет, если проблему не исправить. Те, кто принимает решения, могут затем разрешить исправление и выделить ресурсы, необходимые для него. Шаг 3: Поймите риски борьбы с техническим долгомДолг не только сам по себе риск – его исправление тоже связано с риском. В Silo для ремонта генератора его нужно было остановить – с шансом он мог и не включиться назад. К тому же при слишком длительной остановке генератора реактор начал бы перегреваться и в итоге взорвался бы. В случае с платежным модулем – для работы с техническими долгом его нужно было перенести на другой сервер. Это могло повлечь срыв выплат миллионам пользователей. Важно в точности донести до менеджмента, каковы риски исправлений, чтобы менеджеры могли принять информированное решение. В редких случаях риск исправления технического долга превышает риск того, что мы оставим все как есть. Шаг 4: Составьте план с участием всех заинтересованных сторонВ Silo команда Механиков должна была обсудить план починки генератора с мэром и заместителем шерифа, потому что во время ремонта весь населённый пункт останется без электричества. Мэр и заместитель должны были составить план, который не допустит паники среди людей во время процесса. В компании, где я работала, нам нужно было обсудить перенос платежного модуля на другой сервер с командой, которая поддерживала платежное ПО, и с командой, которая контролировала еженедельные выплаты. Все заинтересованные стороны должны быть в курсе того, как будет решена проблема и каковы потенциальные последствия исправления технического долга. Шаг 5: Ограничьте масштаб проектаУ команды Механиков в бункере было всего тридцать минут, чтобы починить генератор до перегрева реактора, поэтому они сосредоточились на самом важном ремонте. Главный ротор, который был смещён, требовал первоочередного внимания, а пока его фиксировали, они лишь слегка подправляли другие вмятины. Когда я тестировала платежный модуль, я обнаружила два бага. Нам сказали, что их нельзя исправлять, потому что это потребовало бы дополнительного тестирования и усложнило проект. Оба бага имели обходные решения, поэтому мы оставили их без изменений. При работе с техническим долгом важно фокусироваться на самой главной проблеме, а не отвлекаться на второстепенные вопросы. Шаг 6: Имейте план откатаЕсли исправление технического долга связано с риском, обязательно имейте план отката. В бункере единственным планом отката было снова включить генератор и оставить ротор неисправным. Это было не идеальное решение, но по крайней мере позволяло поддерживать свет ещё несколько месяцев. С платежным модулем у нас был способ вернуть код на исходный сервер, если перенос на новый сервер не сработает. Шаг 7: Сообщите всем, кого это затронетВ Silo мэр понимала, что крайне важно предупредить население о том, что электричество будет отключено. Любой, кто не был предупреждён, мог бы впасть в панику. Поэтому она передала сообщение всему бункеру и отправила заместителей, чтобы убедиться, что во время отключения света все находятся либо в своих жилых помещениях, либо в общем укрытии. В случае с платежным модулем заинтересованные стороны уже знали о проекте и были уведомлены о времени переноса на новый сервер. Когда есть вероятность, что сервис будет нарушен или пользователи столкнутся с серьёзными изменениями, крайне важно донести эту информацию до всех, кого это касается. Шаг 8: Не делайте всё в одиночкуХотя Джульетта, главная героиня Silo, была одиночкой и часто настаивала на том, чтобы выполнять обслуживание самой, она понимала, что ремонт генератора потребует усилий всей команды Механиков. Некоторые члены команды снимали внешние панели генератора, кто-то работал над ремонтом ротора, а кто-то следил за давлением в реакторе. Аналогично, когда мы переносили платежный модуль с одного сервера на другой, у нас была целая команда людей, следивших за появлением ошибок и проверявших успешность платежей. Исправление технического долга лучше всего проводить совместно всей командой, чтобы изменения не оказали негативного влияния на конечных пользователей. ЗаключениеСкорее всего, ваш технический долг не настолько опасен, чтобы угрожать всей команде или сообществу, как это было в Silo! Но принципы, изложенные здесь, могут сделать исправление технического долга полезным, менее стрессовым и выгодным для ваших клиентов. |