Глава 9
Чтобы гарантировать, что эффективность доставки программного обеспечения не достигается с помощью грубой силы или за счет психического здоровья вашей команды, наш проект исследовал как выгорание в командах, так и то, насколько болезненным является процесс развертывания. Мы измерили их, потому что мы знаем, что они являются важными проблемами в технологической отрасли, которые приводят к болезням, истощению и потере производительности на миллионы долларов.
Страх и тревога, которые испытывают инженеры и технический персонал, когда они запускают код в производство, могут многое рассказать нам об эффективности доставки программного обеспечения команды. Мы называем это «болью развертывания», и ее важно измерить, потому что она подчеркивает трения и разногласия, которые существуют между разработкой и тестированием программного обеспечения и работой, выполняемой для поддержания и сохранения его работоспособности. Именно здесь разработка встречается с техподдержкой, и именно здесь существует наибольший потенциал для различий: в среде, в процессе и методологии, в мышлении и даже в словах, которые команды используют для описания своей работы.
Наш опыт в этой области и наше взаимодействие на протяжении многих лет с профессионалами, создающими и развертывающими программное обеспечение, постоянно отмечали важность и значимость «боли развертывания». Из-за этого мы хотели исследовать проблемы развертывания, чтобы увидеть, можно ли их измерить и, что более важно, влияют ли на них практики DevOps. Мы обнаружили, что там, где развертывание кода наиболее болезненно, вы найдете самую низкую эффективность доставки программного обеспечения, эффективность организации и культуру.
Преимущества непрерывной доставки в Microsoft
Microsoft engineering — это один из примеров того, как инженерные команды чувствуют преимущества непрерывной доставки. Тьяго Алмейда является старшим инженером по разработке программного обеспечения в Microsoft. Он управляет облачными вычислениями, открытым исходным кодом и DevOps-практиками в команде Azure. Он рассказал о дополнительных преимуществах практики непрерывной доставки для своей команды, сказав следующее: «Вы можете подумать, что все выгоды от этого [получают] ваши клиенты, но на самом деле они [выгоды] есть даже внутри вашей компании…» Перед внедрением технических практик и дисциплины непрерывной доставки в команде Bing инженеры сообщили, что показатель удовлетворенности балансом работа/жизнь составляет всего 38%. После внедрения этих технических методов он подскочил до 75%. Разница поразительна. Это означает, что технические специалисты лучше справлялись со своими профессиональными обязанностями в рабочее время, им не приходилось выполнять процессы развертывания вручную и они были в состоянии выдерживать рабочее напряжение.
Хотя «боль развертывания» может свидетельствовать о том, что разработка и доставка программного обеспечения не являются устойчивыми в вашей организации, также вызывает беспокойство, когда группы разработки и тестирования не имеют представления о том, что такое развертывание. Если у ваших команд нет прозрачности в развертываниях кода, то есть если вы спросите свои команды, что такое развертывание программного обеспечения, и ответ будет: «Я не знаю… Я никогда об этом не думал!» — это еще одно предупреждение о том, что эффективность доставки программного обеспечения может быть низкой, потому что если разработчики или тестировщики не знают о процессе развертывания, вероятно, существуют барьеры, скрывающие от них работу. И барьеры, которые скрывают работу по развертыванию от разработчиков, редко бывают полезными, потому что они изолируют разработчиков от последствий их работы.
Часто разработчики и особенно специалисты техподдержки спрашивают нас: «Что можно сделать, чтобы облегчить "боль развертывания" и улучшить работу технического персонала?» Чтобы ответить на этот вопрос, мы включили параметр «боль развертывания» в наши исследования в 2015, 2016 и 2017 годах. Основываясь на нашем собственном опыте разработки и доставки программного обеспечения, а также разговорах с людьми, работающими с системами, мы создали новый параметр измерения, чтобы уловить, как люди чувствуют себя при развертывании кода. Измерение «боли развертывания» оказалось относительно простым: мы спросили респондентов, были ли развертывания опасны, разрушительны в их работе, или, напротив, были легкими и безболезненными.
Наше исследование показывает, что улучшение ключевых технических возможностей снижает «боль развертывания»: команды, которые реализуют комплексную автоматизацию тестирования и развертывания; используют непрерывную интеграцию, включая магистральную разработку; «сдвигаются влево» по безопасности; эффективно управляют тестовыми данными; используют слабосвязанные архитектуры; могут работать независимо; используют контроль версий всего, что требуется для воспроизведения производственных сред, — уменьшают «боль развертывания».
Другими словами, технические практики, которые улучшают нашу способность доставлять программное обеспечение как быстро, так и стабильно, также уменьшают стресс и беспокойство, связанные с запуском кода в производство. Эти технические практики изложены в Главах 4 и 5. Статистический анализ также выявил высокую корреляцию между «болью развертывания» и ключевыми результатами: чем более болезненными являются развертывания кода, тем хуже эффективность ИТ, организационная эффективность и организационная культура.
Насколько болезненны ваши развертывания кода?
Если вы хотите знать, как работает ваша команда, просто спросите ее, насколько болезненны развертывания и что конкретно вызывает эту боль.
В частности, имейте в виду, что если развертывание должно выполняться в нерабочее время, это признак архитектурных проблем, которые должны быть решены. Вполне возможно — при наличии достаточных инвестиций — построить сложные, крупномасштабные распределенные системы, которые позволяют полностью автоматизировать развертывание с нулевым временем простоя.
В основном большинство проблем развертывания вызвано сложным, хрупким процессом развертывания. Как правило, это является результатом трех факторов. Во-первых, программное обеспечение часто пишется без учета возможности дальнейшего развертывания. Общим симптомом здесь является то, что требуются сложные, организованные развертывания, поскольку программное обеспечение предполагает, что его среда и зависимости будут настроены под него совершенно особым образом, и не допускает никаких отклонений от этих ожиданий. Это дает мало полезной информации администраторам о том, что идет не так и почему ПО работает неправильно. (Эти характеристики также говорят о плохом проектировании для распределенных систем.)
Во-вторых, вероятность неудачного развертывания существенно возрастает, когда в процессе развертывания необходимо вручную внести изменения в производственную среду. Ручные изменения могут легко привести к ошибкам, вызванным вводом текста, ошибками копирования/вставки или плохой или устаревшей документацией. Кроме того, среды, конфигурация которых управляется вручную, часто существенно отличаются друг от друга (проблема, известная как «дрейф конфигурации»), что приводит к значительным объемам работы во время развертывания, когда операторы отлаживают систему, чтобы понять различия в конфигурации, внося вручную дополнительные изменения, которые потенциально могут добавить еще проблем.
Наконец, в рамках сложных развертываний часто требуется несколько итераций передачи полномочий между командами, особенно в разрозненных организациях, где администраторы баз данных, сетевые администраторы, системные администраторы, infosec, тестирование/QA и разработчики работают в отдельных командах.
Чтобы уменьшить проблемы при развертывании, мы должны:
Приложения, разработанные для формата «платформа как сервис», такие как Heroku, Pivotal Cloud Foundry, Red Hat OpenShift, Google Cloud Platform, Amazon Web Services или Microsoft Azure, обычно можно развернуть с помощью одной команды.
Теперь, когда мы обсудили «боль развертывания» и рассмотрели некоторые стратегии противодействия ей, давайте перейдем к выгоранию. «Боль развертывания», если ее оставить без внимания, может привести к выгоранию.
Выгорание — это физическое, умственное или эмоциональное истощение, вызванное переутомлением или стрессом, но это больше, чем просто переутомление или стресс. Выгорание приводит к тому, что вещи, которые мы когда-то любили в нашей работе и жизни, начинают казаться незначительными и скучными. Оно часто проявляется как чувство беспомощности и связано с патологическими культурами и непродуктивной, бесполезной работой.
Последствия выгорания огромны как для отдельных людей, так и для их команд и организаций. Исследования показывают, что стрессовая работа может быть так же вредна для физического здоровья, как пассивное курение (Гох и соавторы, 2015) и ожирение (Чандола и соавторы, 2006). Симптомы выгорания включают в себя чувство усталости, цинизма или неэффективности; мало или совсем нет чувства выполненного долга, а чувства по поводу работы негативно влияют на другие аспекты вашей жизни. В крайних случаях выгорание может привести к семейным проблемам, тяжелой клинической депрессии и даже самоубийству.
Стресс на работе также влияет на работодателей, обходясь экономике США в $300 млрд в год за счет больничных, долгосрочной нетрудоспособности и чрезмерной текучести кадров (Маслах, 2014). Таким образом, работодатели равно обязаны заботиться о своих сотрудниках и обеспечивать условия, в которых персонал не сгорал бы на работе.
Выгорание можно предотвратить или обратить вспять, и DevOps может в этом помочь. Организации могут устранить условия, которые приводят к выгоранию, создавая благоприятную рабочую среду, убеждая людей, что их работа имеет значение, и обеспечивая понимание сотрудниками того, как их собственная работа связана со стратегическими целями компании.
Как и любая другая быстро развивающаяся сфера работы с серьезными последствиями, программное обеспечение и технологии страдают от выгорания сотрудников. Технологические руководители, как и многие другие менеджеры с благими намерениями, часто пытаются исправить человека, игнорируя рабочую среду, хотя изменение окружающей среды гораздо более важно для долгосрочного успеха. Руководители, которые хотят предотвратить выгорание сотрудников, должны сосредоточить свое внимание и усилия на следующих действиях:
И последнее, но не менее важное: сотрудникам должны быть предоставлены полномочия принимать решения, которые влияют на их работу и их рабочие места, особенно в тех областях, где они несут ответственность за результаты.
Кристина Маслах, профессор психологии Калифорнийского университета в Беркли и пионер в области исследований профессионального выгорания, обнаружила шесть организационных факторов риска, которые влекут за собой выгорание (Лейтер и Маслах, 2008).
Маслах обнаружила, что большинство организаций пытаются исправить человека и игнорируют рабочую среду, хотя ее исследование показывает, что исправление среды имеет более высокую вероятность успеха. Все вышеперечисленные факторы риска — это то, что менеджмент и организации могут изменить. Мы также отсылаем читателя к Главе 11 для получения дополнительной информации о важности и влиянии лидерства и управления в DevOps.
Чтобы измерить выгорание, мы спросили респондентов:
Наше исследование обнаружило, что улучшение технических практик (например, тех, которые способствуют непрерывной доставке) и бережливых практик (например, в области бережливого менеджмента и бережливого управления продуктами) уменьшает чувство выгорания среди наших респондентов.
Наши собственные исследования показывают, какие организационные факторы сильнее всего коррелируют с высоким уровнем выгорания, и подсказывают, где искать решения. Вот пять главных факторов.
Следует отметить важность выравнивания ценностей и роль этого фактора в борьбе с выгоранием. Когда организационные и индивидуальные ценности не совпадают, вы с большей вероятностью увидите выгорание у сотрудников, особенно в такой требовательной и рискованной работе, как ИТ. Мы видели это слишком часто, и последствия этого явления широко распространены и печальны.
Мы считаем, что противоположное состояние является более перспективным и действенным, то есть когда организационные и индивидуальные ценности совпадают, последствия выгорания могут быть сокращены и даже устранены. Например, если человек ценит защиту окружающей среды, а организация сбрасывает отходы в близлежащие реки и тратит деньги на лоббирование своих представителей в правительстве, чтобы позволить этому продолжаться, налицо противоречие ценностей. Этот человек, вероятно, будет гораздо счастливее, работая в организации с сильной приверженностью корпоративной социальной ответственности в рамках «зеленых» инициатив. Это область потенциального влияния на сотрудников, которой организации пренебрегают на свой страх и риск. Выравнивая организационные ценности с индивидуальными, можно уменьшить выгорание сотрудников. Представьте себе, как это влияет на удовлетворенность, производительность и лояльность сотрудников. Потенциальная ценность для организаций и экономики ошеломляет.
Важно отметить, что организационные ценности, которые мы здесь рассматриваем, являются реальными, актуальными, живыми организационными ценностями, ощущаемыми сотрудниками. Если организационные ценности, которые ощущают сотрудники, отличаются от официальных ценностей организации — заявлений о миссии, напечатанных на листках бумаги или даже на плакатах, — это будут именно те повседневные жизненные ценности, которые имеют значение. Если есть несоответствие ценностей либо между сотрудником и организацией, либо между заявленными ценностями организации и ее фактическими ценностями, выгорание будет проблемой. Когда есть выравнивание, сотрудники будут процветать.
Таким образом, наше исследование показало, что технические и бережливые методы управления способствовали снижению как выгорания, так и «боли развертывания». Обобщенно это можно увидеть на рис. 9.1. Эти выводы имеют серьезные последствия для технологических организаций: инвестиции в технологии не только улучшают разработку и доставку программного обеспечения, но и улучшают рабочую жизнь наших специалистов.
Мы обсудили важные компоненты организационной культуры и пути ее улучшения и оценки. Теперь мы обратимся к деталям удовлетворенности и идентификации сотрудников с компанией и к тому, что это означает для технологических преобразований.