Книга Театр на проде читать онлайн бесплатно, автор The Shadow CTO – Fictionbook
The Shadow CTO Театр на проде
Театр на проде
Театр на проде

5

  • 0
Поделиться

Полная версия:

The Shadow CTO Театр на проде

  • + Увеличить шрифт
  • - Уменьшить шрифт

The Shadow CTO

Театр на проде


Театр на проде


Как IT-компании устроены в действительности — власть, абсурд, тихие риски и спектакли вместо работы


T H E S H A D O W C T O


The Shadow CTO. Театр на проде

© The Shadow CTO


the90daycto.com Telegram: @the90daycto


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

Оглавление

От автора 7

Действие первое. Власть 11

Театр на проде 13

Оргструктура — это художественная литература 23

Серёжа знает 33

Действие второе. Ритуалы 43

Театр надёжности 45

Спросят с тебя, решать будут без тебя 57

Десять тысяч запросов в никуда 67

Решили в курилке 77

Опять переименовали 87

Героям — премию, тихим — ничего 97

Действие третье. Декорации 107

Семь собеседований, чтобы нанять своего 109

Вики на четыре тысячи страниц 119

Статус, на котором всё хорошо 129

Занавес 139

Как прочитать любую компанию за неделю 141

От

автора


У этой книги нет имени на обложке, и это не кокетство.

Я вхожу в компании, когда там уже горит. Иногда меня на-зывают интерим-CTO, иногда «консультантом по инженерным процессам», иногда никак не называют, просто появляется че-ловек, который ходит по встречам, задаёт неудобные вопросы и через какое-то время начинает наводить порядок. Каждый такой вход — под NDA. Поэтому ни одной компании я назвать не могу, ни одного человека — тоже. Все, кого вы встретите в этой книге — Костя, Лена, Серёжа, Игорь, Оля, Вадим, — собра-ны из многих людей. Если вам покажется, что вы узнали свое-го коллегу, — вам не показалось. Просто ваш коллега работает во всех компаниях сразу.

За эти годы я побывал внутри нескольких десятков органи-

заций. Больших и маленьких, богатых и на последнем раунде, модных и таких, о которых вы никогда не слышали, хотя поль-зуетесь ими каждый день. И вот что я вам скажу: они гораздо больше похожи друг на друга, чем принято думать. Снаружи: разные продукты, разные логотипы, разные ценности на сте-нах. Внутри — один и тот же спектакль, поставленный по одной и той же пьесе, силами местной труппы.

Про этот спектакль и книга. Про то, как решения принима-ются в курилке, а на комитете их только объявляют. Про то, как компания держится на человеке, о котором нельзя думать. Про постмортемы, которые ничего не меняют, метрики, кото-рые ничего не значат, и реорганизации, после которых всё остаётся как было, только названия новые.

Сразу договоримся о жанре. Это не разоблачение и не нытьё. Люди, которые всё это разыгрывают, — не дураки и не злодеи; большинство из них умнее среднего и искренне стара-


ются. Театр возникает не из глупости. Он возникает из устрой-ства — из того, как расставлены стимулы, кому что видно, за что хвалят и за что спрашивают. Умные люди в кривой систе-ме ведут себя криво, и это куда интереснее, чем «менеджеры идиоты». Моя работа много лет состояла в том, чтобы пони-мать эту механику быстро, за дни. Здесь я её просто рассказываю не спеша.

Каждая глава устроена одинаково, и это не случайно. Сна-чала: история. Как оно было — с репликами, с деталями, с тем неловким моментом, когда все в комнате всё понимают и все молчат. Потом. Разворот: что здесь произошло на самом деле. Потом механика: почему это не случайность, а закон, и в ка-кой компании ни открой дверь, увидишь то же. И в конце: что с этим делать. Не «как всё исправить» — так я не умею, а что конкретно можно сделать в понедельник, если вы внутри такой истории.

Читать можно подряд, а можно с любого места: главы само-стоятельны, хотя герои иногда переходят из одной в другую, как в любом театре с постоянной труппой. Книга разбита на три действия, и это членение содержательное, не декоратив-ное. Действие первое. Про власть: кто на деле решает, где она живёт и почему почти никогда не совпадает с табличкой на двери. Действие второе: про ритуалы — что люди делают вме-сто работы, когда за видимость работы платят щедрее, чем за саму работу. Действие третье — про декорации: что организа-ции строят, чтобы на это показывать (метрики, вики, процес-сы найма) и что за этими фасадами обычно пусто. А в финале весь реквизит собирается в один инструмент: метод, которым любую компанию можно прочитать за неделю. Он рабочий. Я им зарабатываю.


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

Занавес поднимается. На сцене — пятница, 18:40, и у нас упали платежи.

Действие

первое.

Власть


Г Л А В А 1

Театр

на

проде


Платежи легли в пятницу, в 18:40. То есть в худшее возможное время: все уже одной ногой в выходных, а до понедельника деньги через систему не пройдут. Это сразу видно в цифрах. И это сразу видно совету директоров.

Дежурил Костя. Костя сделал всё правильно: открыл ран-бук, перезапустил сервис по инструкции. Не помогло. Переза-пустил ещё раз — не помогло. Тогда Костя написал в общий ка-нал ровно то, что думал: «Похоже, дело в новом релизе бил-линга». Он не имел в виду ничего, кроме факта. Биллинг сего-дня катили, очередь до этого держала, логично посмотреть туда.

Костя не знал, что только что поджёг фитиль.

Релиз биллинга был хозяйством Андрея, VP Engineering. Упавшая очередь: хозяйством Марины, VP Platform. А между Андреем и Мариной уже год шла тихая война. Не за деньги на-прямую. За статус. За то, чья команда в этой компании ядро, а чья обслуга. От этого в следующем квартале зависело, кому да-дут людей, а у кого заберут; чей сервис назовут «платформой», а чей — «легаси, которое пора выпиливать». Война шла вяло, по переписке, месяцами. И тут: повод. Началась она, как по-чти все такие войны, с невинного документа. За год до описы-ваемой пятницы кто-то наверху попросил «прояснить зоны ответственности инженерии» — обычная просьба, тысячу раз такие видел. Родился документ, и в документе оказалась та-блица, а в таблице: колонка «владелец». Биллинг записали за


Андреем, шину и очереди — за Мариной, и всё бы ничего, но в примечании мелким шрифтом значилось: «платформенные компоненты подлежат консолидации в единой команде». Чьей — не сказано. И с этого дня оба читали каждое событие в компании через одну призму: приближает оно консолидацию под меня — или под него. Таблицу ту, кстати, давно все забы-ли. А призма осталась. Войны вообще редко помнят свой повод. Им хватает инерции.

К 19:30 в канале оба VP. Не чинят. Присутствуют.

Марина пишет: «Давайте не будем спешить с выводами». Перевод: пока не доказано, что виновата очередь, я её винова-той не признаю. Андрей отвечает: «Очередь держала два года. Изменилось ровно одно: биллинг». Перевод: это не моё, это твоё. Оба правы — ровно настолько, насколько им нужно быть правыми. Они не врут. Они подбирают факты под готовый вывод, а вывод у каждого один: виноват другой.

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

Костю к этому моменту в канале уже забыли. Он, между прочим, сервис в итоге поднял: нашёл, что релиз поменял формат сообщения, а старые консьюмеры на нём падали, и от-катил. Написал об этом в тред — в 20:55, с логами. Тред не за-метил: там шло важное. Там два взрослых человека на очень хороших зарплатах выясняли, кто из них не виноват. Выход-ные тоже не пропали даром. В воскресенье вечером. Я потом видел метки времени: Андрей начал писать драфт постморте-


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

В понедельник собрали постмортем. Красивый: таймлайн

по минутам, диаграмма, five whys. В графе «корневая причи-на» написали обтекаемое — «рассинхронизация контракта между сервисами». Не Андрей. Не Марина. Виноват рассин-хрон. Рассинхрон в компании не работает, зарплату не полу-чает, на встречи не ходит: идеальный виноватый — спросить с него нельзя, обидеться он не может. Сам разбор, кстати, стоит короткой зарисовки, потому что формулировка «рассинхрони-зация контракта» не упала с неба, я видел, как она рождалась. Переговорка, двенадцать человек, у экрана — нейтральный ведущий из программ-менеджеров, выбранный именно за нейтральность, как швейцарский посредник. Андрей и Мари-на сидят по диагонали, максимально далеко, — рассадку ни-кто не назначал, она сложилась сама, по силовым линиям. Первые сорок минут идут спокойно: таймлайн, факты, Костин откат. Буря начинается на слове «причина». Андрей предлага-ет «изменение формата сообщений не было отражено в кон-сьюмерах»: пассивный залог, но всем слышно, чьи консьюме-ры. Марина встречно предлагает «релиз не прошёл проверку


обратной совместимости» — тоже пассивный, но всем слышно, чей релиз. Сорок минут — вдумайтесь, сорок минут двенадца-ти человек: уходят на редактирование одного предложения. Побеждает «рассинхронизация контракта между сервисами»: формула, в которой не видно ни релиза, ни консьюмеров, ни людей. Только два сервиса, самостоятельно, как взрослые, рассинхронизировавшиеся в пятницу вечером. Все выдыхают. Ведущий записывает. Протокол утверждён единогласно: пер-вое единогласие за час. Так рождается официальная история: не ложью, а старательным вычитанием всех подлежащих.

А теперь смотрите, что тут произошло в действительности. Технически инцидент был скучный. Формат сообщения по-

меняли, консьюмеры упали, откатили — час работы одного внимательного дежурного. Всё остальное: три часа перепис-ки, два VP, сорок человек в канале, постмортем на восемь страниц — не имело к поломке никакого отношения. Это был не разбор аварии. Это был очередной акт войны, для которой авария просто предоставила сцену.

Инцидент — это сцена. На ней решают не «почему упало» — это инженеры выяснят тихо, в логах, за полчаса, как Костя и выяснил. На сцене решают, кого назначат виноватым. Потому что для тех, кто повыше, у падения нет технического содержа-ния. У него есть только политическое. Пять минут даунтайма забудутся через неделю. А вот строчка «команда Марины уро-нила платежи» — не забудется; она всплывёт на планирова-нии бюджета, при делёжке людей, при следующем споре, чей сервис объявить легаси. И Марина это знает. Поэтому она в пятницу вечером не дома, а в канале, и пишет «давайте не бу-дем спешить с выводами». Она не чинит очередь. Она чинит формулировку. Чтобы было понятно, что так бывает не везде,

— контрастный кейс из другой компании, где мне довелось


наблюдать падение сравнимого калибра. Там VP появился в канале с одной фразой: «Что вам нужно, чтобы починить бы-стрее? Внешнюю коммуникацию беру на себя, клиентам пишу я». И исчез из инженерного треда — писал клиентам. Разница не в благородстве характера, не обольщайтесь. Разница в устройстве — в той компании инциденты не конвертирова-лись в бюджетные решения — падения разбирались отдельно, деньги делились отдельно, и топить соседа на аварии было попросту бессмысленно, некуда нести добычу. Тот же самый человек в конструкции Андрея и Марины вёл бы себя как Ан-дрей и Марина. Люди приходят и уходят, а конструкция вос-производит поведение с надёжностью станка.

Отсюда закономерность, которую я наблюдал столько раз,

что готов считать законом: чем выше ранг человека в инци-дент-канале, тем меньше он там чинит и тем больше позицио-нируется. Это не лень. На его уровне последствия инцидента

— не даунтайм, а репутация команды, и он защищает не ап-тайм, он защищает территорию. Рационально защищает, за-метьте. Система, в которой падения конвертируются в бюд-жетные решения, сама выводит VP в пятницу вечером в канал. Писать осторожные фразы.

У этой конвертации есть календарь, и его стоит знать. Ин-цидент в начале квартала, просто инцидент — до планирова-ния далеко, к тому времени забудется. Инцидент за три неде-ли до защиты бюджетов весит вдвое: он свежий, он ляжет на стол ровно тогда, когда будут делить людей и деньги, его вспо-мнят. Поэтому одна и та же авария в сентябре и в ноябре вы-зывает разное количество взрослых людей в канале, и это не суеверие наблюдателя, это можно проверить по любой компа-нии со стажем. Посмотрите, в какие месяцы у вас особенно


ожесточённые постмортемы. Наложите на цикл планирования. Совпадёт.

И вторая вещь, которую даёт эта оптика: вы начинаете по-нимать, зачем воюющей стороне нужен постмортем, написан-ный первым. Не чтобы разобраться. Чтобы задать рамку. Кто первым внёс в документ формулировку причины, тот и опре-делил, о чём будет спор — об очереди или о релизе. Дальше все правки идут уже внутри его рамки, и это половина победы. Пишущий первым не описывает реальность. Он выбирает, какую её часть все будут обсуждать.

И вторая закономерность, полезнее первой: настоящую схе-му власти видно именно на инциденте. В мирное время все улыбаются, «мы одна команда», на общих встречах сплошное согласие. В аварию маски слетают за минуты. Сразу видно, кто кого боится. Чьё слово весит. Кто с кем на самом деле воюет. Кто готов утопить соседа ради квартального расклада, а кто молча делает работу. Компания на инциденте: как семья на разделе наследства — всё, что годами было спрятано под вежливостью, выходит на свет за один вечер.

Что с этим делать, если вы внутри.

На инциденте смотрите не только на графики — смотрите на людей, это бесплатная разведка. Кто молча чинит: запо-мните их поимённо — это те, на ком всё держится, и в главе про Серёжу мы к ним ещё вернёмся. Кто пишет «давайте не бу-дем спешить с выводами» — этот уже понял, что выводы будут не в его пользу. Кто начал строчить постмортем раньше, чем починили, — тот пишет не постмортем, а обвинительное за-ключение, и торопится подать его первым, пока не подали на него.

И не деритесь за формулировку корневой причины — это почти всегда бой за прошлое. Полезнее один вопрос, обращён-


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

Свернём наблюдения в салфетку. Пять сигналов, которые

читаются в любом инцидент-канале за десять минут — не про аварию, про компанию.

Кто чинит молча. Имена этих людей выпишите отдельно: они держат систему, и они же обычно ничего за это не получают (глава про Олю будет как раз о них).

Кто присутствует, но не действует. Отметьте ранг: чем выше, тем показательнее.

Когда появляется первое «давайте не будем спешить с вы-водами». Секундомер с момента, как стала понятна вероятная причина. Чем быстрее — тем сильнее эта причина кому-то ме-шает.

Кто начал писать постмортем раньше, чем починили. Это не усердие. Это заявка на рамку.


И кого забыли поблагодарить, когда всё кончилось. Здесь: короткий ответ на вопрос, что в этой компании считается ра-ботой.

Пять сигналов, кстати, работают и в обратную сторону. Если в вашем канале молча чинят трое, никто не позиционируется, а причину нашли и назвали за час — вам достался редкий зверь. Берегите, такие компании поштучно. Отдельный прак-тический абзац — для тех, кто сам дежурит и не хочет, как Ко-стя, поджигать фитили. Костина фраза «похоже, дело в новом релизе биллинга» была технически безупречна и политиче-ски самоубийственна — в ней был адресат. Тот же смысл пере-даётся без адресата: «очередь падает на сообщениях нового формата, вот пример, откатываю до выяснения». Факт, вос-произведение, действие. Ни одного названия команды. Пусть принадлежность формата устанавливают те, кому это важно,

— им за это, в сущности, и платят. Это не трусость и не игра —

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

У Кости, кстати, эпилог хороший, что редкость для малень-ких людей в больших войнах. Его тихий откат с логами в 20:55 заметил один человек — та самая ведущая разбора из SRE. За-метила, запомнила и через полгода перетащила Костю к себе в команду. Войну Андрея с Мариной Костя с тех пор наблюдал уже с безопасного берега — и, подозреваю, с тем же выражени-ем лица, с каким вы читали эту главу.

А вот та же война, но с неожиданной развязкой: коротко, без сцен, потому что интересна тут именно развязка. Другая компания, два враждующих отдела, платёжный шлюз падает


в разгар распродажи. Всё идёт по знакомому сценарию: один отдел кивает на другой, оба подтягиваются в канал не чинить, а присутствовать. И вдруг выясняется, что корень — на сторо-не внешнего провайдера, стороннего вендора. Это он выкатил у себя изменение, которое всё положило.

Дальше происходит чудо. Два отдела, которые десять минут назад готовы были утопить друг друга, мгновенно и без вся-кой команды сверху объединяются. Совместный гневный ти-кет вендору. Совместное письмо, где слово «мы» звучит впер-вые за год. На разборе: трогательное единодушие — виноват вендор, вопросов нет, расходимся. Внутренняя война постав-лена на паузу, потому что нашёлся общий чужой.

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

Напоследок — про Костю, а точнее про всех Кость. Обидно

здесь не то, что война была: войны неизбежны там, где бюд-жет один, а команд две. Обидно, что человек, который един-ственный за вечер сделал работу, не получил за неё ничего, а двое, не сделавшие ничего, потратили вечер и репутацию на спор о формулировке, и оба, заметьте, считали, что заняты важным. Они и были заняты важным. Для себя. Инцидент для инженера — авария. Инцидент для VP: эпизод войны. Оба


смотрят в один канал и видят разные события; в этом вся драма и никакой мистики.

Есть, впрочем, у этой пятницы и утешительная сторона. Ин-цидент. Единственный момент, когда компания говорит прав-ду о себе, не собираясь этого делать. Годовой отчёт врёт. Цен-ности на стене врут. Общее собрание врёт вежливо и с презен-тацией. А инцидент-канал в 19:30 не врёт вообще — там всё написано открытым текстом, надо только читать не про сер-висы, а про людей. Ни одно интервью с сотрудниками не даст вам того, что даст один такой канал, прочитанный вниматель-но. За это, среди прочего, я и люблю аварии — с безопасного, разумеется, расстояния.

Есть, кстати, простой признак здорового разбора. На нём хоть кто-то произносит слово «я». «Я выкатил», «я не прове-рил», «я не заметил, что алерт молчит». Там, где за час никто ни разу не сказал «я», разбирали не аварию. Разбирали, кого назначить. → Первый серьёзный инцидент в новой роли решает не про uptime. Он решает, кем вас здесь запишут: ещё одним участником войны или тем, кто спросил не «кто вино-ват», а «что в системе позволило этому случиться». Как вести себя в этой сцене, когда ставка — ваш мандат, а не чужой, — от-дельный и довольно длинный разговор; я веду его в «The 90-Day CTO Playbook».


Г Л А В А 2

Оргструктура — это художественная

литература


На схеме всё было красиво. Директор по платформе, под ним три тимлида, у каждого команда, стрелочки ровные, ни одно-го пересечения. Схему показывали кандидатам на собеседова-ниях и новым инвесторам, и те, и другие кивали: понятная структура, зрелая компания.

А по факту всё решала Лена.

В титуле у Лены было написано «старший инженер». Не лид, не архитектор, не директор: старший инженер, одна из сорока. Но без её кивка в этой компании не выкатывался ни один серьёзный релиз. Формально согласование выглядело как «ревью от платформенной команды». Неформально все знали: бумага может быть подписана кем угодно, но если Лена сказала «я бы не стала» — релиз не поедет. Не потому что она запретит. Запрещать у неё полномочий не было. Просто после её «я бы не стала» ни один тимлид не брал на себя смелость ехать дальше. Прецеденты были. Оба раза Лена оказалась права, и оба раза разгребали неделю.

Самое интересное происходило перед заседаниями совета.

Директор по платформе: начальник Лениного начальника, между ними два уровня иерархии. Собирался пообещать сове-ту миграцию на новый стек за два квартала. За день до заседа-ния он зашёл к Лене. Не вызвал к себе: сам пришёл, с ноутбуком, сел рядом.

— Лен, посмотри. Реально за два квартала?


Лена посмотрела слайды. Помолчала.

— За два, если остановим регуляторную отчётность. Она си-дит на старой базе, её первой мигрировать, а там год не трога-ли ничего, тесты врут. Обещай четыре. Лучше пять.

Директор пообещал совету четыре. Совет поморщился, но проглотил. Через год выяснилось, что и четыре были опти-мизмом, но об этом в другой главе. Откуда у Лены это положе-ние — отдельная история, и она поучительна, потому что та-кое положение не выдаётся, а нарастает. Два эпизода сделали Лену Леной. Первый: миграция платёжного шлюза, за три года до описываемых событий. Тогда решение уже приняли, подрядчика выбрали, сроки объявили, а Лена на общем ревью сказала своё «я бы не стала» и на трёх страницах объяснила почему: старый шлюз молча ретраил ошибки определённого типа, новый — нет, и на реальном профиле трафика это озна-чало бы потерянные платежи. Её не послушали. Через месяц после запуска потеряли платежи — ровно так, как было напи-сано на второй странице. Второй эпизод был зеркальным: Лена, наоборот, поддержала рискованный переход, который все боялись, и он прошёл гладко. После этого её «я бы не ста-ла» и её «нормально, поедет» стали весить больше любой под-писи. Заметьте механику: власть Лены сделана из предсказа-ний, которые сбылись. Это самая твёрдая валюта в инженер-ной организации, и самая медленная в накоплении. Титул можно получить за квартал. Такое: только годами.

А теперь вопрос, который я задаю себе в каждой компании

в первую неделю: почему директор, у которого в подчинении сорок человек и три уровня иерархии, перед советом идёт со-ветоваться к «старшему инженеру»? И почему Ленин фор-мальный руководитель. Милейший, кстати, человек: разгова-

Другие книги автора

ВходРегистрация
Забыли пароль