Глава 31 От невероятного к возможному

3 ноября, понедельник

Уже 12:13, когда я захожу в комнату, где заседает наша команда. Мои волосы и рубашка промокли до нитки, пока мы ехали обратно в кабриолете Эрика.

Крис говорит: «…и поэтому Стив организовал эту небольшую команду, чтобы мы могли повысить показатели всей компании и сделали все, что возможно, чтобы оказать позитивное влияние в подарочный сезон продаж».

Крис оборачивается ко мне и показывает на другой конец комнаты: «Я заказал ланч для всех. Не стесняйся; и, подожди, что с тобой случилось?»

Я отмахиваюсь от его вопроса. Глядя, куда он показывает, я приятно удивлен, увидев сэндвичи с индейкой.

Хватая бутерброд, занимаю свое место и пытаюсь угадать, какие настроения у всех присутствующих, особенно у Брента.

Брент тем временем спрашивает: «Можете еще раз объяснить, почему я здесь?»

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

Патти присоединяется к разговору: «Ну что же, он дал нам пару подсказок. Сказал, что проблемы, над которыми нам нужно поразмыслить, касаются процесса внедрения приложений и того, как мы формируем среды для него. Из-за хаоса, к которому приводит каждое развертывание «Феникса», он, похоже, считает, что мы что-то делаем фундаментально неправильно». Разворачивая сэндвич, я присоединяюсь к беседе: «Я только что встречался с ним. Он указал мне на несколько вещей и объяснил, как в «Toyota» осуществляют процесс быстрой переналадки производства. Он считает, что нам нужно построить процесс, позволяющий нам осуществлять до десяти выкаток в день. Он не только настаивает на том, что такое возможно, но говорит, что это полностью отвечает нуждам бизнеса и что только это поможет компании не просто выжить, но и выиграть на рынке».

К моему удивлению, Крис начинает свирепеть: «Что?! Зачем, ради всего святого, нам понадобится реализовывать по десять выкаток в день?! Наши самые короткие интервалы на сегодня – три недели. Нам просто нечего внедрять по десять раз в день!»

Патти качает головой: «Ты уверен? А как насчет фиксации багов? Как насчет повышения качества работы сайта, когда он стопорится, вроде как при последних двух выкатках? Не хотелось бы тебе осуществлять эти изменения в продукции на постоянной основе, а не ломая все правила, пытаясь что-то исправить в срочном порядке?»

Крис раздумывает пару минут, прежде чем ответить. «Интересно. Я бы назвал такого рода меры патчами или релизами низшего порядка. Но ты права – это тоже настоящие внедрения. И было бы очень здо?рово, если бы мы могли фиксировать сбои быстрее, но десять выкаток в день?»

Размышляя о том, что сказал Эрик, я добавляю: «Как насчет того, чтобы маркетинг мог запускать свои изменения в наш контент быстрее или проводить разного рода эксперименты, а также осуществлять А/B-тестирования, чтобы увидеть, какое предложение работает лучше?»

Вэс кладет обе руки на стол: «Послушайте, что я вам скажу, народ. То, о чем вы говорите, просто невозможно сделать. Мы здесь имеем дело с законами физики. Подумайте, сколько времени это занимает сейчас: требуется, по крайней мере, неделя подготовки и больше восьми часов на саму выкатку!»

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

Вэс чешет голову несколько мгновений и говорит: «Что ты думаешь, Брент? Я бы сказал, что порядка сотни шагов…»

«Серьезно? – отвечает Брент. – Я считаю, что скорее двадцать шагов».

Уильям встревает: «Я не уверен, где вы начинаете считать, но если мы начнем с того момента, когда разработчики создают код и мы помечаем его как «кандидат на релиз», я бы говорил о сотне шагов – то есть еще до того, как мы передаем все в IT-сопровождение».

Ох.

Вэс прерывает его: «Нет-нет-нет. Билл говорил «шаги внедрения». Давайте не будем копать глубже…»

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

«Вы, ребята, оба неправы, – обращаюсь я к Вэсу и Уильяму. – Уильям, не мог бы ты, пожалуйста, записать все шаги на доске? Я бы начал с момента, когда код принят, и до того момента, когда вы передаете его нашей группе».

Он кивает, подходит к доске и начинает рисовать прямоугольники, рассказывая о шагах по мере продвижения. В следующие десять минут Уильям доказывает, что в работе около сотни шагов, включая автоматические тесты в среде разработки; создание среды для контроля качества, которая подходит для разработчиков; запуск кода внутри нее; прохождение всех тестов, внедрение и перенос его в среду, которая подходит для группы контроля качества; нагрузочное тестирование и, в конце концов, дело переходит к отделу IT-сопровождения.

Когда Уильям заканчивает, на доске нарисовано тридцать прямоугольников. Глядя на Вэса, я вижу, что он совсем не раздражен, а глубоко погружен в свои мысли, потирает лоб, глядя на схему на доске.

Я подаю знак Бренту и Вэсу, что один из них должен продолжить с того места, где закончил Уильям.

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

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

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

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

Я не могу дождаться, чтобы рассказать о своем открытии Эрику.

Осознавая важность и масштабность стоящей перед нами задачи, я подхожу к доске, беру красный маркер и говорю: «Я поставлю большую красную звезду рядом с каждым шагом, на котором у нас были проблемы в предыдущие запуски».

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

Оставив несколько красных звезд на схеме Уильяма, я перехожу к квадратам Брента: «Так как у нас не было правильных инструкций по развертыванию, нам потребовалось пять раз все переделывать, чтобы запустить скрипты. В результате мы получили большие проблемы, потому что среда была изменена, о чем я уже говорил».

Я не думал, что так будет, но к концу моей речи практически все фигуры и Уильяма, и Брента в красных звездах.

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

Патти говорит: «Ты знаешь, происходящее напоминает мне увиденное у ребят на производстве – они делают так все время. Если бы кто-то из них сейчас зашел внутрь, то я уверена, они бы подумали, что мы строим «карту потока создания ценности». Не против, если я добавлю пару элементов?»

Я отдаю ей маркер и сажусь на свое место.

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

Вот дерьмо. Для Патти сходство между нашими выкатками и заводской очередью – это не академический вопрос. Она действительно относится к нашему процессу развертывания так, будто речь идет о производстве! Патти использует инструменты и методы бережливого производства, которые работники завода применяют, чтобы задокументировать и усовершенствовать свои процессы.

Внезапно я понимаю, что Эрик имел в виду, когда говорил о «конвейере развертывания». Даже если наша работа и не выглядит как заводское производство, это все равно поток создания ценностей.

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

После того как Патти заканчивает отмечать длительность шагов, она перерисовывает схемы, используя сокращенные названия конкретных шагов. На другой доске Патти записывает ключевые моменты: «среды» и «развертывания».

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

Вэс фыркает, говоря: «Не жди, что мы будем тебе рукоплескать за утверждение чего-то настолько очевидного, но ты права».

Она продолжает: «Другой очевидный источник незапланированной работы и долгого времени развертывания – в процессе выкатки кода, когда отдел IT-сопровождения получает то, что нам передает отдел разработки, осуществляет контроль версии кода и затем создает пакеты для развертывания. Хотя Крис и его команда стараются изо всех сил документировать код и конфигурацию, что-то всегда ускользает и обнаруживается, только когда весь код стопорится в рабочей среде уже после запуска. Верно?»

В этот раз Вэс не отвечает сразу. Брент опережает его, говоря: «Ты все верно ухватила. Уильям может подробнее рассказать об этих проблемах: инструкции по релизу никогда не соответствуют последней версии, поэтому мы всегда долго разбираемся, пытаясь докопаться до истины, переписываем скрипты для инсталляции и снова и снова все инсталлируем…»

«Все так», – соглашается Уильям, решительно кивая.

«В таком случае я бы предложила нам сфокусироваться на этих двух зонах, – глядя на доску, делает вывод Патти и возвращаясь на свое место. – Идеи?»

Брент говорит: «Вероятно, мы с Уильямом можем поработать вместе, чтобы составить инструкцию по развертыванию, которая позволит исправить все наши ошибки?»

Я киваю, слушая идеи, но ни одна из них не кажется каким-то невероятным озарением, которое нам так нужно. Эрик описывал сокращение времени наладки для процесса штамповки капотов. Он, кажется, пытался показать, что это очень важно. Но почему?

«Заставлять каждую группу совместно создавать среду – это, очевидно, нерабочий прием. Что бы мы ни делали, от нас требуется нечто большее, чем цель в «десять развертываний в день», – рассуждаю я. – Следовательно, нам нужно значительно автоматизировать все наши процессы. Брент, мы сумеем спроектировать общий процесс организации сред, чтобы мы могли одновременно получать среды для разработчиков, контроля качества и рабочие среды, и поддерживать их в синхронном состоянии?»

«Интересная идея, – отвечает Брент, смотря на доску. Он встает и рисует три прямоугольника, названные «Разработка», «Контроль качества» и «Рабочая». А затем снизу от них он рисует еще один, озаглавленный «Процедура построения» со стрелками к каждому из вышерасположенных окошек.

«Твоя идея на самом деле просто превосходна, Билл, – говорит он. – Если у нас будет общая процедура построения и все станут использовать одни и те же инструменты для создания своих сред, разработчики начнут писать код, который по крайней мере будет соответствовать итоговой рабочей среде. Одно это само по себе будет огромным улучшением».

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

Я оборачиваюсь к Крису: «Выглядит многообещающе. Если бы мы могли стандартизировать среды и запустить такой стандартный процесс во всех трех отделах – у разработчиков, у тестировщиков и в IT-сопровождении, – мы были бы в состоянии снизить количество проблем в процессе развертывания».

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

Брент широко улыбается услышанному предложению. Прежде чем Вэс может ответить, я говорю: «Полностью согласен. Но прежде чем мы пойдем дальше, можем мы изучить другие проблемы, которые подметила Патти? Даже если мы примем предложения Криса, все еще будут сложности со скриптами развертывания. Если бы у нас была волшебная палочка и если бы у нас существовала обновленная тестовая среда, как бы мы должны были внедрять код? Каждый раз, когда мы это делаем, мы пересылаем туда-сюда коды, скрипты и кто знает, сколько всего еще, между группами».

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

Я киваю, улыбаясь сходству между словами Патти и рекомендациями Эрика.

Оборачиваясь к Уильяму и Бренту, я говорю: «Ладно, ребята, волшебная палочка у вас в руках. Вы на передней линии. Скажите мне, как бы вы организовали ход работы, чтобы она никогда не двигалась в обратном направлении, а, наоборот, текла вперед быстро и эффективно?»

Когда они оба несколько затравленно смотрят на меня, я выразительно произношу: «У вас есть волшебная палочка. Используйте ее!»

«Насколько могущественная палочка?» – уточняет Уильям.

Я повторяю ранее сказанное Мэгги. «Это очень могущественная волшебная палочка. Может сделать все что угодно».

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

И знаете, – продолжает он. – Я настолько этого хочу, что я добровольно возьму на себя ответственность по созданию этого пакета. У меня на примете есть подходящий человек, она будет ответственна за передачу кода от разработчиков. Когда он получит статус «готов к тестированию», мы будем генерировать пакет с кодом, который будет пусковым сигналом для автоматизированного запуска в тестовую среду. А позже, возможно, и для рабочей среды тоже».

«Ого. Ты действительно можешь это сделать? – спрашивает Вэс. – Было бы просто невероятно! Давай сделаем, я надеюсь, Брент не против?»

«Ты шутишь? – спрашивает Брент, начиная хохотать. – Да я бы угощал любыми напитками целый год того, у кого бы получилось такое! Мне очень нравится идея. И я хочу помочь создать новые инструменты развертывания. Как я уже сказал, есть несколько инструментов, которые я уже написал, и которые можно использовать для начала».

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

Внезапно Патти поднимает голову и говорит: «Подождите-ка секунду. «Феникс» имеет дело с данными наших клиентов, которые нужно защищать. Может быть, нужно чтобы кто-то из команды Джона присоединился к нам?»

Мы смотрим друг на друга, соглашаясь, что его определенно нужно привлечь.

И снова я удивляюсь тому, как много нам удалось изменить в этой компании.

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК