Философия DevOps — страница 37 из 95

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

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

Учтите, что чрезмерная конкуренция может принести больше вреда, чем пользы. В данном случае наблюдается так называемая трагедия общин (tragedy of the commons), когда интересы отдельных людей вступают в противоречие с интересами группы, владеющей небольшим ресурсом общего пользования. Эта фраза использовалась в качестве названия эссе, написанного в 1968 году экологом Гарретом Хардином[34]. В этом эссе описывались последствия неупорядоченного выпаса овец на общинных или общественных землях. Отсюда и был позаимствован термин «общины».

Этот пример часто используется в теории игр, представляющей собой изложение принципов рационального выбора в условиях проблем, связанных с участием нескольких сторон, выполнения коллективных действий и принятия интерактивных решений. В 2012 году Флориан Дикерт, занимающийся исследованиями в области человеческих взаимоотношений и экономики, опубликовал статью «The Tragedy of the Commons from a Game-Theoretic Perspective» (Трагедия общин с точки зрения теории игр). В этой статье он утверждает, что этот сценарий с «трагедией общин» не соответствует реальному положению дел[35]. Флориан отмечает, что хотя в подобной ситуации сотрудничество затрудняется (особенно при увеличении доли акций, находящихся в собственности акционеров), трагедия, вызванная неограниченной индивидуальной свободой, не является неизбежной.

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

• наличие средств управления членством во всей группе;

• доступ к социальным сетям;

• заметные действия со стороны всех вовлеченных в процесс;

• возможность применения постепенно нарастающих санкций;

• наличие ресурса, который не является чересчур изменчивым.

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

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

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

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


Формирование эмпатии в команде

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

– Джефф Сассна

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


Выделенные инженеры эксплуатации

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

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

Чтобы улучшить положение дел, можно назначить инженеров эксплуатации, уполномоченных для работы с командами. Если команда постоянно нуждается в оперативной поддержке, потребуется выбрать контактное лицо в эксплуатационной команде. Например, такой человек понадобится команде, разрабатывающей библиотеки API или интернет-приложения. В связи со спецификой работы эта команда нуждается в выполнении мониторинга, настройки производительности и планировании мощностей. Если же обязанности контактных лиц исполняют случайные люди, им придется объяснять суть возникших проблем, знакомить с контентом, выполнять ранее проделанные действия и т. п. Инженер из эксплуатационного отдела, ответственный за поддержание связей с командой, обычно приходит на собрания либо отслеживает ситуации, требующие оказания дополнительной поддержки. Пример подобной ситуации – разработка новых конечных точек API, которые создают дополнительную нагрузку на кластер API. Если в этом случае понадобится новое оборудование, лучше, чтобы эксплуатационный отдел был поставлен в известность как можно раньше.

Чтобы заставить этот подход реально работать, нужно принять во внимание несколько ключевых моментов.

Назначение не эквивалентно всецелому посвящению

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