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

Масштабирование команд

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

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

– Питер Ф. Друкер

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

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

А теперь рассмотрим распространение информации в крупных организациях в целях отслеживания принятых решений.


Рост команд: масштабирование с помощью найма

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

Важно отметить, что в то время как в этом разделе будут рассмотрены аспекты найма и удержания команд, которые являются специфическими для devops-сред, не рассматривайте его в качестве руководства по найму какого-то мифического «10-кратного devops-инженера». Как отмечалось в главе 13, devops не всегда является названием определенной работы.

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

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

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

Во многих организациях избегают приема на работу большого числа новичков, поскольку беспокоятся, что пройдет слишком много времени, прежде чем они начнут выполнять «реальную» работу. Также опасения связаны с тем, что более опытным членам команды придется тратить слишком много времени на обучение и наставничество новичков. Но нежелание инвестировать средства в обучение и рост новичков, вероятно, приведет к формированию более однородной команды, а также к созданию условий, менее способствующих росту и развитию в целом. Также не забывайте о законе Брукса: «Если проект не укладывается в сроки, то привлечение дополнительной рабочей силы задержит его еще больше» (Adding manpower to a late software project makes it later). Этот закон сформулировал инженер-программист Фред Брукс в своей книге «Мифический человеко-месяц» (Mythical Man-Month). Эта идея, которую сам Брукс признает упрощением[55], аккуратно подводит нас к мысли о том, что затраты и накладные расходы, связанные с наймом дополнительного персонала, следует рассматривать на ранних стадиях проекта.

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


Работа с подрядчиками

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

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

Аутсорсинг приводит к формированию функциональных бункеров

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

Команды, работающие на внешнем подряде, имеют более «низкий» статус

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

Конфликты ответственности, возникающие между штатными и аутсорсинговыми командами

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

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

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