Книга: Ускоряйся! Наука DevOps: Как создавать и масштабировать высокопроизводительные цифровые организации
Назад: 8. Разработка продукта
Дальше: 10. Удовлетворенность сотрудников, их идентификация с организацией и вовлеченность

Глава 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).

  1. Перегрузка работой: требования работы превышают человеческие пределы.
  2. Отсутствие контроля: неспособность влиять на решения, которые затрагивают вашу работу.
  3. Недостаточное вознаграждение: недостаточное финансовое, институциональное или социальное вознаграждение.
  4. Распад сообщества: неблагоприятная рабочая среда.
  5. Отсутствие справедливости: отсутствие справедливости в процессе принятия решений.
  6. Конфликты ценностей: несоответствие организационных и личных ценностей.

Маслах обнаружила, что большинство организаций пытаются исправить человека и игнорируют рабочую среду, хотя ее исследование показывает, что исправление среды имеет более высокую вероятность успеха. Все вышеперечисленные факторы риска — это то, что менеджмент и организации могут изменить. Мы также отсылаем читателя к Главе 11 для получения дополнительной информации о важности и влиянии лидерства и управления в DevOps.

Чтобы измерить выгорание, мы спросили респондентов:

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

Как уменьшить выгорание или бороться с ним

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

  1. Организационная культура. Сильное чувство выгорания обнаруживаеся в организациях с патологической, ориентированной на власть культурой. Менеджеры в конечном счете несут ответственность за создание благоприятной и уважительной рабочей среды, и они могут сделать это, создав среду без обвинений, стремясь учиться на неудачах и сообщая общее чувство цели. Менеджеры должны также следить за другими сопутствующими факторами и помнить, что человеческая ошибка никогда не является основной причиной сбоев в системах.
  2. «Боль развертывания». Сложные, болезненные развертывания, которые должны выполняться в нерабочее время, способствуют высокому стрессу и ощущению отсутствия контроля. При правильной практике развертывания не должны быть болезненными событиями. Руководители и лидеры должны спросить свои команды, насколько болезненно происходит их развертывание, и исправить то, что причиняет наибольшую боль.
  3. Эффективность лидеров. Обязанности руководителя группы включают ограничение работы в процессе и устранение препятствий, чтобы команда могла выполнять свою работу. Неудивительно, что респонденты с эффективными руководителями команд сообщили о более низком уровне выгорания.
  4. Организационные инвестиции в DevOps. Организации, которые инвестируют в развитие навыков и возможностей своих команд, получают лучшие результаты. Инвестиции в обучение и предоставление людям необходимой поддержки и ресурсов (включая время) для приобретения новых навыков имеют решающее значение для успешного внедрения DevOps.
  5. Организационная эффективность. Наши данные показывают, что бережливое управление и методы непрерывной доставки помогают повысить эффективность доставки программного обеспечения, что, в свою очередь, повышает организационную эффективность. В основе бережливого менеджмента лежит предоставление сотрудникам необходимого времени и ресурсов для улучшения собственной работы. Это означает создание рабочей среды, которая поддерживает эксперименты, трансформирует ошибки в обучение и позволяет сотрудникам принимать решения, влияющие на их работу. Это также означает создание пространства для сотрудников, позволяющего делать новую, творческую, добавляющую ценность работу в течение рабочей недели, а не просто ожидание того, что они посвятят этому дополнительное время после окончания рабочего дня. Хорошим примером может служить политика Google «20% времени», в рамках которой компания позволяет сотрудникам 20% своей рабочей недели работать над новыми проектами. Или, например, программа IBM «THINK Friday», когда по пятницам во второй половине дня нет никаких встреч, а сотрудники поощряются к работе над новыми интересными им проектами, на которые у них обычно нет времени.

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

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

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

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

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

Назад: 8. Разработка продукта
Дальше: 10. Удовлетворенность сотрудников, их идентификация с организацией и вовлеченность