Масштабирование концентрируется на процессах и движущих силах, которые должны использовать организации на протяжении всего жизненного цикла. Помимо заметной роли масштабирования в процессе внедрения devops в больших корпорациях, оно также позволяет управлять другими столпами эффективных devops-методик на уровне организаций. Это управление осуществляется по мере роста, достижения зрелости и даже сокращения организаций. Имеют место разные соображения, как технические, так и культурные, связанные с организациями разного масштаба. В части V мы рассмотрим, каким образом применяются эти соображения в организациях, которые не попадают в категорию «типичных» devops-культур.
ВыводыБлагодаря использованию четырех столпов эффективных devops-методик вы можете устранить культурные и технические проблемы, влияющие на разработку программного обеспечения. Эти столпы будут подробнее рассмотрены в каждой из следующих четырех частей книги. Примеры использования этих методик, позаимствованные из практики реального бизнеса, относятся к самым разным компаниям – от веб-стартапов до крупных корпораций. Хотя и необязательно читать главы книги по порядку, но мы все же рекомендуем вам прочесть все главы книги. Это позволит вам осознать, каким образом гармоническое сочетание четырех столпов devops позволит devops-методологии стать по-настоящему эффективной.
Часть II. Сотрудничество
Глава 7. Совместная работа
Формирование устойчивых и долговременных взаимоотношений является критически важным для людей, проводящих долгие часы в совместной работе. Сотрудничество – это процесс получения определенных результатов с помощью взаимодействий, вклада и поддержки множества людей. Один из примеров сотрудничества, и далеко не единственный, – парное программирование. Суть этой методики, появившейся в рамках концепции гибкой разработки программного обеспечения, заключается в одновременной работе двух человек над одним фрагментом кода.
Еженедельные совещания в компании Sparkle Corp«Я действительно думаю, что у нас есть отличная возможность создать наш новый сервис по работе с отзывами на базе MongoDB. Я прочел отличное руководство по этой системе, где рассказывается, как можно быстро и легко разработать нужный нам компонент, не неся бремя административных расходов, как в случае с другими решениями», – сказал Джорди, разработчик внешних клиентских интерфейсов в компании Sparkle Corp.
Заразившись энтузиазмом Джорди, Дженераль прикинула потенциальные выгоды от включения MongoDB в стек инструментов Sparkle Corp. «У кого-нибудь есть какие-либо соображения или опасения по поводу MongoDB?» – обратилась она к группе разработчиков.
«В нашем стеке мы уже поддерживаем MySQL и связанные с ним компоненты. Мы уже вложили достаточно много усилий в интеграцию MySQL. Использование MongoDB приведет к дополнительным затратам на поддержку и техническое обслуживание. Может ли MongoDB дать нам что-то полезное, компенсирующее дополнительные затраты?» – спросила Элис, старший разработчик из компании Sparkle Corp.
Разногласия подобного рода часто проявляются в команде. Каким образом сотрудники могут ухудшить или улучшить отношения в команде? Давайте углубимся в devops-пакт и изучим способы налаживания сотрудничества между коллегами.
Определение сотрудничестваЯвляясь одним из базовых столпов devops, сотрудничество относится к интенциональным процессам и к общим целям отдельных сотрудников. Практические примеры сотрудничества приведены в следующем списке:
• асинхронный анализ кода;
• документирование;
• выпуски обновлений и отчеты об ошибках;
• демонстрация еженедельного прогресса;
• регулярное обновление статуса;
• парная работа.
Важно распознавать ценность и назначение разных форм сотрудничества. Один вид коллективной работы выполняется совместно с другими сотрудниками. При этом каждый сотрудник несет ответственность за свою часть работы, которую он выполняет на пути к достижению общей цели. Другой тип коллективной работы выполняется непрерывно, двумя или большим количеством сотрудников, которые работают вместе для достижения общей цели. Выбор формы сотрудничества зависит от характера работы и окружающего контента.
И помните о том, что зацикливание на единственном типе совместной работы подобно утверждению о том, что бег – это единственная форма физических упражнений.
В январе 2015 года Анита Вулли и ее коллеги представили результаты проведенного анализа деятельности команд в статье «Why Some Teams Are Smarter Than Others» (http://www.nytimes.com/2015/01/18/opinion/sunday/why-some-teams-are-smarter-than-others.html?_r=0), опубликованной в New York Times. В терминологии, предлагаемой Вулли, умные команды отличаются от прочих команд следующими характеристиками:
• связь;
• равное участие;
• модель психического состояния человека.
Другими словами, эффективное сотрудничество включает такие компоненты, как связь, равное участие и модель психического состояния человека (Theory of Mind; ToM). Компонент ToM – это способность идентифицировать свою перспективу и признать факт, что другие сотрудники имеют иные перспективы в силу индивидуальных отличий. Осознание различий между людьми и влияние этих различий на потенциальную перспективу поможет расширить свою собственную модель ToM, сформировать взаимное понимание и помочь разрешить конфликты, что критически важно для devops-пакта. Все это поможет усилить коллективный разум команды.
Индивидуальные различия и навыкиКаждому из нас присущи собственные навыки и уникальный опыт, которые обусловливают выбор и порядок выполнения работы. Благодаря уважительному отношению к индивидуальным различиям облегчается формирование взаимопонимания и разрешение конфликтов способом, который критически важен для devops-пакта. Благодаря использованию разных команд вы выиграете в креативности, скорости устранения проблем и производительности, но проиграете из-за повышенной вероятности возникновения краткосрочных межличностных конфликтов, возникающих как на персональном, так и на профессиональном уровне.
Профессиональные навыки
Профессиональные навыки либо опыт, полученный на предыдущей работе и применяемый на новом рабочем месте, могут быть самыми разными. И хотя нам кажется, что мы судим о человеке лишь по результатам текущей работы, на самом деле это не так. На наше мышление, наши взаимоотношения и наши усилия по налаживанию сотрудничества между коллегами большое влияние оказывает предыдущий опыт работы.
Зависимость профессиональных навыков от размера компании
Причина различий между профессиональными навыками может заключаться в размере компаний, в которых работали раньше носители этих навыков. В мире стартапов предпочитают нанимать и работать с людьми, имеющими опыт работы в стартапах. Подобная практика имеет смысл на ранних стадиях стартапов. В этом случае проще достичь успеха, поскольку на ключевых должностях находятся люди, имеющие успешный опыт запуска стартапов. Но не следует относиться предвзято к людям с опытом работы в больших компаниях. Если человек имеет опыт работы в крупной корпорации, это вовсе не означает, что он будет плохо справляться со своими обязанностями в малой компании. Поэтому не относитесь к таким сотрудникам предвзято – далеко не каждый сотрудник крупной компании относится к категории «динозавров», не способных приспособиться к изменившимся условиям. Избегайте предвзятого отношения к людям и эйджизма.
При подборе сотрудника обращайте внимание не на корпоративный опыт работы, а на способность перейти от балансирования между разными задачами, возникающими в крупных компаниях, к контекстному переключению, характерному для небольших фирм, выполняющих большой объем работ.
Влияние технического и гуманитарного образования
У людей, имеющих