Продакшен. 23:52. Пятница. Восстанавливаем схему БД. Нет, не случайная авария. Просто я удалил поле, потому что Кирилл был уверен, что оно не нужно и не затронет всех внешних потребителей нашего API. Эх, подумал я. Опять было нарушено первое правило леса. Сколько раз я уже на этом попадался, и вот опять. Неужели так сложно было проверить? Нет, не сложно. Но зачем? Кирилл на проекте уже 5 лет. Он реально гений, ещё и суперответственный, мне до него далеко. Он уж точно должен был знать, насколько сильно заафектит систему это изменение, он же сам писал этот модуль, черт побери! Ладно, это был последний раз. В следующий раз я точно не проигнорирую правила леса!

Вы спросите меня, а что за правила леса? Ооо, это постулаты, написанные кровью, мой друг. Универсальная серебряная пуля, которую можно использовать как справочник и в обычной жизни, и для выживания в корпоративной среде. Присаживайся поудобнее.

Как и любая народная мудрость, уже тяжело вспомнить, откуда зародились правила леса. Кажется, основоположником первых правил леса был Илья Филиппов (@Legendary8971) — мой экс‑руководитель разработки сайта ГК Самолёт. Точнее даже не так. Сами правила леса были перечислены в стареньком смешном ролике эпохи Макса +100500. Вон она где вся мудрость притаилась, за небольшим леопардовым пледом. О чем это я? Точно, смешной ролик. На видео молодой парень энергично перечисляет несколько правил, которые обязательно необходимо применять, если ты собрался идти в лес. Ссылку оставлю где‑то здесь.

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

Приведу классическую формулировку правил леса из оригинального ролика:

  1. Никому не доверяй.

  2. Всегда держи нож наготове.

  3. Не лезть в воду, а то схватишь простатит.

На видео их всего три. В дальнейшем мы уже сами расширили список до 4.

По прошествии времени пришли к следующему списку:

1. Никому не доверяй.

Буквально относись к делу так, что все участники уже обосрались, и надо думать над тем, как бы это исправить.

2. Всегда держи нож наготове.

Всегда должны быть варианты для смены вектора.

3. Держи ноги в тепле.

Не забывай заботиться о своей менталке и физухе, иначе быстро откинешься. Оригинальная формулировка была немного изменена для удобства.

4. Все вокруг мошенники.

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

Знаете, как я понял, что это не просто набор условно красивых фраз, а буквально набор для выживания? Каждый раз, когда я нарушал одно из правил леса, я всегда вспоминал этот список. Любой мой провал, независимо от масштаба трагедии, попадал в одно из четырех этих правил. И если бы я вспоминал про них чуть пораньше, или даже вспомнив, не проигнорировал, понадеявшись на старое доброе авось, то проблем у меня было бы сильно меньше. В целом приведенные выше постулаты уже даже звучат аксиоматично, но всё‑таки приведу парочку примеров с полей для пущей убедительности.

Начну с конца, а именно с четвёртого правила — «Все вокруг мошенники».

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

От банального — проверить, не скисло ли молоко перед тем, как налить в кофе (хотя на упаковке хороший срок годности), до внесения каких‑то изменений в систему, потому что некий Кирилл «точно знает как надо».

Сформулируем итоговый вывод: четвертое правило леса не про злой умысел (не всегда про него). Это про то, что все (я, ты и вот он тоже) транслируют информацию через призму своего узкого контекста, додумывают и боятся показаться некомпетентными. Поэтому важные решения нельзя принимать на основе чьих‑то заявлений.

В пятницу некий ПМ Максим Карась спрашивает в чате: «Мы успеваем зарелизить фичу к понедельнику? Все ли готово?». Аналитик Руслан отвечает: «Все спеки уточнены». Малюта‑фронтендер Игорь утверждает: «Код написан», а тестировщик Серёжа заключает: «Критические баги пофикшены».

ПМ складывает в голове 2+2 и докладывает наверх: «Команда говорит, что все готово, катимся в срок!». А ты, будучи тимлидом, не перепроверяешь, потому что «коллеги ответственные и очень сильные».

В субботу ночь полыхает красным заревом, а в воздухе чувствуется запах напалма. Выясняется, что «написан» не значит «прошел код‑ревью», а «баги пофикшены» не значит, что проведено регрессионное тестирование на стейдже. Обидно, но ты понимаешь, что никто не обманывал. Каждый сделал свою часть работы, но финальной стыковки по каждому пункту не произошло. Из‑за размазанной ответственности, из‑за большого перегруза команды или ещё почему‑то.. Кажется, пришло время ввести Definition of Done и просить не просто устные статусы, а перед важным релизом смотреть на факты: ссылки на пулл‑реквесты, отчет автотестов, наличие заполненной карточки регресса и так далее. Ты не просто спрашиваешь «готово?», ты смотришь на приборную доску и понимаешь, а готово ли.

Четвертое правило — это, по сути, важное уточнение первого правила: «Никому не доверяй».

Исходи из того, что все участники процесса (включая систему и даже тебя) уже где‑то ошиблись, ведь они, как и ты, обычные люди. Думай, как минимизировать ущерб.

Кирилл (5 лет на проекте, автор большого бизнесового модуля) на дейлике уверенно заявляет: «Это поле в API в новом релизе можно смело дропать, им никто из внешних потребителей не пользуется. Ставлю жопу». И вот ты доверяешь его экспертизе и репутации без дополнительной проверки. Коммит, деплой, бим, бим, бам, бом.

Оказывается, год назад другой интегратор завязал на это поле свою логику, потому что «в документации оно было». Их критический функционал падает, вы в авральном режиме разгребаете последствия.

Согласно первому правилу леса, необходимо подойти к Кириллу и сказать: «Верю, но давай перед удалением разошлем письмо всем внешним системам, с которыми мы работаем. Пометим его как устаревшее и через 3–4 релиза удалим. А может, это повод поднять версию API, что думаешь?» Даже гения иногда нужно затормозить и предоставить какие‑то доводы, потому что гении тоже люди.

По цепочке из этой ситуации мы выходим на второе правило леса: «Всегда держи нож наготове».

У тебя всегда должен быть отработанный план Б (и даже В) для быстрой смены вектора. Это не паранойя, это громоотвод.

Бизнес требует выкатить критичный фикс в пятницу в 18:00. Продакт говорит: «Не очень срочно, в течение часа должно быть на проде. Клиенты ждут». Ты, скрепя сердце, соглашаешься.

Хотфикс затаил в себе трудноуловимый баг, который проявляется только в полночь, когда луна в Раке. В 00:15 ты это понимаешь, что в Раке уже ты, но возможности откатиться назад быстро нет. Илья Филиппов улыбается, глядя на меня, а ваш руководитель улыбается вам?

Мой «нож» — это feature flag, о внедрении которых мы заблаговременно подумали. Выкатываешь фичу под флагом. В 23:52 ты видишь аномалии в метриках. Одно ловкое движение рук в админке — и код, вызвавший проблему, деактивирован.

Соблюдение этих правил требует душевных сил, внутренней дисциплины и силы воли. Без третьего правила точно не обойтись: «Держи ноги в тепле».

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

Обычная неделя, проект горит, ты работаешь по 12 часов, ешь за клавиатурой, сон всегда был для слабаков. Пятница, 23:52 — твое обычное время окончания работы.

На фоне усталости ты убираешь не ту колонку в БД, потому что твой мозг уже НЕ может работать. Продлеваешь себе рабочий день еще на 3 часа.

Это путь в один конец. Ты жестко ставишь будильник на конец рабочего дня. Если это не падение прода, ты говоришь себе «стоп». Идешь гулять с собакой, в спортзал или просто спишь. Утро вечера мудренее. Утром, с холодной головой, решение проблемы находится за 20 минут. «Ноги в тепле» для руководителя раскрывает еще и второй смысл — не тащить все на себе.

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

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

Комментарии (18)