Как-то мы в конце тяжелого годового проекта очередной раз выходили работать в воскресенье. Кластер то ложился полностью, то частично, то выдавал мистически необъяснимые ошибки в расчетах.
Мы методом тыка правили то конфиги оркестратора, то код трансформаций, то настройки базовых сервисов, со слезящимися глазами читали километры угрюмых логов из-под разных приложений, запускали конвейер и ждали результат. Потом писали чудовищные запросы для выверки данных, ждали когда они выполнятся и всё повторялось.
До запуска в бой оставалась пара недель, а запустить и выверить данные нужно было еще по трети конвейера производства данных.
Мы обсуждали у кофе-машины, что было бы хорошо наработать без сбоев хотя бы пару-тройку дней. И тогда один коллега рассказал мне эту историю.
В одной ИТ-компании был проект на очень большие деньги.
Делала она его делала…
Решительный совладелец компании договорился с богатым заказчиком - денег заложили кучу на год работы и команду из пятидесяти человек.
Умный директор департамента согласовал бюджет, эффективный менеджер проекта нарисовал график проекта и организовал подписание договора, въедливые аналитики собрали и согласовали с заказчиком требования, менеджер проекта отчитался по прохождению вехи, мудрые архитекторы придумали гибкую микросервисную архитектуру, менеджер проекта отметил прогресс в плане проекта, прагматичные разработчики написали чистый код, менеджер проекта отчитался об успешном прохождении по вехам, красноглазые тестировщики написали автотесты и протестировали все по отдельности и в сборе, менеджер проекта презентовал метрики достигнутого качества ПО, въедливые аналитики провели внутреннюю приемку, менеджер проекта отметил прогресс, талантливые документописатели написали документацию, и снова менеджер проекта отметил прогресс, безотказные девопсы развернули инстанс на стороне богатого заказчика, менеджер проекта провел презентацию, ехидные представители заказчика начали приемочные испытания, креативный отдел маркетинга описал кейс о внедрении и уже договорился с популярным журналом об ИТ о выходе статьи в следующем месяце...
И вот, когда до окончания срока контракта остался один день, некий особо ехидный представитель заказчика нашел багу.
Ну бага и бага, но она рушила базовый сценарий бизнеса заказчика и понизить ее приоритет до приемлемого уровня не получилось.
А надо сказать, что жестокие юристы заказчика прописали неустойку в контракт по 3% за каждый календарный день срыва сроков - чувствительная сумма.
Продуктивный менеджер проекта со стороны заказчика позвонил эффективному менеджеру проекта со стороны исполнителя и сказал, что баг надо исправить.
И вот красноглазые тестировщики воспроизвели этот баг и сделали багрепорт, прагматичные разработчики полезли в код и поняли, что не понимают, как это исправить, мудрые архитекторы выпили 5 литров кофе, скурили блок сигарет, но так и не смогли понять, где ошибка в коде и архитектуре.
Позвали въедливых аналитиков и спросили, можно ли придумать обходной путь на уровне методики применения софта.
Въедливые аналитики выпили ящик детокс смузи, но ничего путного так и не придумали.
Стало ясно, что за день они баг не исправят и, кажется, за неделю тоже (а это уже 21% от стоимости контракта).
Тогда эффективный менеджер проекта позвонил умному начальнику департамента, умный начальник департамента позвонил решительному совладельцу исполнителя, тот - своему доброму знакомому из правления клиента, но знакомый сказал, что уже не состоит в правлении и помочь ничем не может.
Тогда эффективный менеджер проекта сказал команде искать пути исправления бага, а сам записался на прием к своему трансформационному коучу.
Прием длился 3 часа, менеджер проекта вышел оттуда другим человеком, вынес множество инсайтов и один конкретный шаг: поискать помощи у ушлых консультантов.
И вот, эффективный менеджер проекта позвонил в одну очень большую и известную консалтинговую компанию и там ему сказали, что смогут рассмотреть этот кейс через пару недель.
Он позвонил в компанию чуть поменьше и ему сказали, что смогут переключиться через месяц.
Он позвонил в третью компанию поменьше и ему сказали, что смогут переключиться через 3 недели.
Эффективный менеджер проекта нанес точки на график и не увидел сходимости.
Он звонил и звонил, наносил и наносил, сходимость то появлялась, то исчезала, но самый маленький срок ожидания был - неделя.
И вот, когда он позвонил в какую-то маленькую никому неизвестную компанию - предпоследнюю в списке, ему сказали, что смогут прислать консультанта прямо сегодня, но это будет стоить 20 тысяч долларов за каждые 4 часа работы.
Тогда эффективный менеджер проекта позвонил умному начальнику департамента и расписал ситуацию: что есть какая-то никому неизвестная консалтинговая фирма, которая просит 20 тысяч долларов за каждые 4 часа работы.
Тот попросил его подождать и позвонил решительному совладельцу ИТ-компании.
Решительный совладелец компании тут же позвонил своему бизнес-коучу. Бизнес-коуч был очень крутой. Сессия продлилась 15 минут.
Он спросил - какие у вас цели?
Решительный совладелец описал ему свои цели.
Коуч спросил - что происходит в реальности?
Решительный совладелец описал ему, что происходит.
Коуч спросил - какие у вас препятствия?
Решительный совладелец рассказал ему про багу.
Коуч спросил - какие у вас варианты действий?
Решительный совладелец рассказал ему про странную консалтинговую компанию.
Коуч спросил - какие еще у вас есть варианты?
Решительный совладелец сказал, что других вариантов нет.
Коуч спросил - и что вы будете делать?
И тут решительный совладелец испытал инсайт.
Он бросил трубку, набрал начальника департамента и спросил - у вас есть другие варианты?
Умный начальник департамента попросил его подождать и позвонил эффективному менеджеру проекта.
Тот сказал, что пока он искал решение, а потом обзванивал консалтинговые компании, мудрые архитекторы успели пересобрать сбойный сервис 8 раз и у них нет никаких идей. Они завели саппорт кейс на одну из базовых программных платформ у ее производителя, но его рассмотрят в течение трех месяцев. Прагматичные разработчики сделали форк от второго базового софта и внесли 16 исправлений, высоко оцененных open source community, но это тоже не помогло с данным багом.
Красноглазые тестеры успели обеспечить 100% покрытие кода сбойного приложения по всем возможным ситуациям.
Так что, на данный момент других вариантов нет.
Тогда умный начальник департамента позвонил решительному совладельцу ИТ-компании, сказал, что вариантов нет и тот ему разрешил потратить до 40 тысяч долларов на день работы консультанта, а там посмотрим...
Стали согласовывать договор и аккаунт-менеджер от консалтинговой компании сказал:
- никаких проблем, консультант будет прямо сегодня, но нам нужна предоплата и хочу предупредить: наш специалист немного странный, вы не удивляйтесь. Когда он попросит вас что-то сделать, не отказывайте ему - так будет быстрее.
Эффективный менеджер проекта пропустил это мимо ушей, так как он не любил обсуждать что-то не относящееся к задачам проекта.
И вот приехал мужичок какого-то неопределенного возраста, весь помятый, с красными глазами и недельной щетиной.
На лице перекошенный оскал, правое веко дергается, руки в карманах штанов, глаза еле открываются.
И говорит: покажите мне код сбойного приложения.
Его подвели к компьютеру.
Он просит:
- молодой человек, да-да, вы, можете скроллить текст, когда я буду просить? Девушка, вот вы, поднимите мне веки, пожалуйста.
Все в шоке, но эффективный менеджер проекта говорит сделать, как просят.
И вот красноволосая руководительница группы тестирования держит веки, безусый стажер-аналитик крутит код колесиком.
- Так-так, еще ниже, стоп... Ага, крутите еще, крутите - стоп! Так, ниже, ниже… Ага! У вас в 4056 строке в позиции 22 пропущена запятая.
Тут на дыбы встает харизматичный лид разработки:
- не может быть, мы там все осмотрели 100 раз, это место переписывали дважды!
- Ну нет же, я говорю: в 4056 строке в позиции 22 пропущена запятая, поставьте ее и все заработает.
Подошли мудрые архитекторы, посмотрели и говорят:
- не может быть, мы тут все двадцать раз смотрели, коллегам показывали, у сообщества спрашивали. Тут все нормально.
А он им:
- Ребята, просто поверьте, в 4056 строке в позиции 22 пропущена запятая, поставьте ее и все заработает.
Подошли красноглазые тестировщики:
- мы этот компонент обложили стопроцентным тестовым покрытием, все учли. Этот конкретно код работает правильно!
А он им - поставьте запятую в 4056 строке в позиции 22 и все увидите сами.
И только въедливые аналитики жмут плечами - они на том проекте в код и компонентную архитектуру не совались - не положено, да и так было, чем заняться.
Эффективный менеджер проекта смотрит, дело к драке и звонит аккаунт-менеджеру консультанта.
Тот выслушал и говорит:
- делайте, как он сказал. Он работает у нас 10 лет и еще ни разу не ошибся в такой ситуации.
Эффективный менеджер проекта предложил команде попробовать этот вариант, но та встала насмерть.
Тогда он позвонил умному начальнику департамента и объяснил ситуацию. Тот позвонил решительному совладельцу ИТ-компании и спросил, что делать.
Решительный совладелец компании снова позвонил своему бизнес-коучу...
Сессия снова продлилась 15 минут.
Решительный владелец поймал инсайт, прервал соединение с коучем, позвонил умному начальнику департамента и спросил:
- у вас есть другие варианты?
Начальник департамента попросил его подождать и позвонил эффективному менеджеру проекта.
Менеджер проекта спросил команду, есть ли еще варианты. Но команда сказала, что вариантов больше нет.
Тогда умный начальник департамента позвонил решительному совладельцу ИТ-компании и сказал, что вариантов больше нет.
И совладелец сказал:
- сделайте, как вам посоветовали.
Умный начальник департамента позвонил эффективному менеджеру, а тот сказал команде:
- раз вариантов нет, делаем как сказал консультант.
И вот долго ли коротко ли, прагматичные разработчики отбранчевали ветку, поставили запятую в позицию 22 строки 4056 и запушили мердж реквест. Лид разработки одобрил реквест и запустил сборку проекта. Строгий деливери менеджер подтвердил сборку и учел ее в базе конфигураций. Безотказные девопсы только смотрели в графану, так как у них все было автоматизировано. Красноглазые тестеры запустили свои автотесты.
Все это время мужичок стоял в сторонке и, кажется, даже спал.
И тут врывается красноволосая руководительница группы тестирования - которая веки держала - и кричит: все работает, бага нет!
Все всполошились, забегали.
Стали собирать фикс, пересылать его богатому заказчику, разворачивать и договариваться о прогоне приемочных сценариев на той стороне.
Ну а консультант, бочком-бочком, и был таков.
Долго ли коротко ли, богатый заказчик подтвердил что бага нет, а там и акты подписали и счет выставили и даже оплатили.
И вот, закрывая контракт с консалтинговой компанией, эффективный менеджер проекта говорит аккаунт-менеджеру:
- нам все очень понравилось, но я не понимаю, как вы выживаете с такими расценками?
На что ему отвечал аккаунт-менеджер - у нас много более дешевых консультантов, этот такой единственный. Иногда случаются ситуации, подобные вашей и на протяжении последних десяти лет с ними справляется только он.
Эффективный менеджер проекта и говорит:
- нам очень понравилось, проблему нашли и решили за 40 минут, но мне непонятно только одно: почему у вас специалист такой помятый, небритый, с красными опухшими глазами, которые почти не открываются?
На что ему ответ:
- ну это очень дорогой специалист, у него низкая утилизация и большая зарплата. По этому он много времени проводит в запое, нюхает кокаин, шляется по женщинам, а иногда его клинит и он неделями круглосуточно зависает в компьютерных играх. В этом году в Стелларисе, в основном.
Эффективный менеджер проекта говорит - это нам понятно, у нас весь топ-менеджмент нюхает кокаин, бухает и шляется по женщинам, играет, правда, в казино, но тут о вкусах не спорят. И на совещания приходят в таком же виде. Но что у него с руками, почему он сам не может держать свои веки?
Аккаунт отвечает - дело в том, что на правой руке он держит фигу в кармане, а левой незаметно др%чит...
Эффективный менеджер проекта в шоке, но он собирается с духом и говорит - слушайте, у нас весь средний менеджмент такой: они на каждом статус-митинге с руководством или при обсуждении премий и зарплат с подчиненными держат по две фиги в обоих карманах. Каждую неделю вызывают распутных женщин прямо в офис и дерут прямо в своих кабинетах, а у кого нету кабинета - в переговорках, даже не закрывая жалюзи. А одного недавно застукали прямо в опенспейсе в обеденный перерыв.
Остальные смотрят на это и тоже иногда незаметно др%чат. Но не в такой же момент! Он же, вроде, умный человек, вы не пробовали ему сказать, что настолько откровенное поведение как-то не очень приемлемо в корпоративной среде?
Аккаунт говорит - он все понимает, мы с ним уже говорили. После такой жизни пару лет назад у него начало сдавать здоровье. Когда он расслабляет правую руку, а левой перестает др%чить, у него падает давление и он засыпает.
Эффективный менеджер проекта снова в шоке - ну хорошо - это ясно, у нас президенту компании 80 лет, его привозят в кресле-каталке иногда прямо вместе с капельницей - он тоже часто засыпает на совещаниях. Но почему тогда ваш сотрудник др%чит левой рукой?
- Тут все просто - это по тому, что он амбидекстр.
Мораль…Не уверен, что она есть.
Но, глядя на наши проекты, мне иногда кажется, что спокойнее быть наркоманом, алкоголиком, бабником и игроманом, чем амбидекстром, даже если ты незаменимый специалист.
А конвейер мы тогда запустили вовремя и без сбоев в продакшене.