Коммуникация в распределённой разработке программного обеспечения
Коммуникация в распределённой разработке программного обеспечения (англ. Communication in Distributed Software Development) — область исследований, рассматривающая процессы коммуникации и их влияние при применении к разработке программного обеспечения в условиях глобально распределённых команд. Важность коммуникации и координации в процессе создания программ широко изучается[1], а также исследуется на уровне организаций в работах по организационной коммуникации. В распределённых командах, работающих в разных физических локациях, дистанция между участниками ставит новые вызовы перед коммуникацией, которая больше не осуществляется лицом к лицу и может быть ограничена, например, несовпадением часовых поясов с минимальным пересечением рабочих часов.
Причинами, ведущими к распределённой работе над одним проектом, могут быть как разные команды внутри одной компании, так и аутсорсинг или офшорная разработка, для которых характерны различные требования и ограничения к коммуникациям. Возникающие дополнительные сложности при взаимодействии вынуждают проектные группы использовать широкий спектр коммуникационных методов — как синхронных (например, видеоконференция), так и асинхронных (например, электронная почта). Видеоконференции могут быть более эффективным каналом, но их сложнее организовать при большой разнице во времени, тогда как электронная почта или мессенджеры удобнее при асинхронной работе.
История
История коммуникации в распределённой разработке программного обеспечения тесно связана с появлением самой концепции распределённой разработки. Средства коммуникации способствовали развитию таких процессов, поскольку именно отсутствие эффективных решений для взаимодействия являлось главным препятствием при первых попытках создания распределённых проектов. Существенный прогресс был достигнут благодаря появлению Интернета как общедоступной платформы для обмена кодом и информацией между разработчиками и исследователями.
Одним из первых проявлений распределённой разработки стало сообщество свободного и открытого ПО, где разработчики объединяются не корпоративными ресурсами, а добровольным участием, что приводит к высокой географической и культурной раздробленности команд. В таких проектах возникла острая необходимость в коммуникационных и кооперационных инструментах. История свободного ПО показывает, что по мере роста сложности проектов и числа участников важная роль отводилась развитию средств коммуникации. Изначально это были в основном асинхронные средства — электронная почта, рассылки или даже периодические печатные издания. Синхронные способы ограничивались телефонными звонками.
Применение распределённой разработки в корпоративном секторе изначально было мало распространено. Однако появление новых средств, таких как аудиоконференцсвязь и мгновенные сообщения, быстро было интегрировано компаниями для достижения конкурентных преимуществ, что дало импульс дальнейшему развитию этой области и повышения эффективности процессов.
Значение
Разработка программного обеспечения в целом подразумевает интенсивный обмен информацией[2], причём значительная часть рабочего времени уходит на совместную работу и коммуникацию[3]. Официальная (формальная) коммуникация используется для обновления информации о проекте и распределения ответственности, но неформальное общение также критически важно для эффективной работы[4]. Так называемые «разговоры в коридоре» позволяют оставаться в курсе ситуации, понимать зону ответственности коллег и оперативно обмениваться вспомогательной информацией, что способствует командному духу[4]. При этом чем более неопределён проект, тем большее значение приобретает неформальная коммуникация[1].
В условиях глобальной разработки (GSE) неформальное общение трудно воспроизвести. Его нехватка может приводить к неожиданным проблемам и несогласованности[4]. Поэтому задача воссоздания неформальных коммуникаций несмотря на разобщённость команд является одной из ключевых в данной области исследований[5].
Задачи и вызовы
Коммуникации в распределённой разработке препятствуют различные барьеры: социокультурные, лингвистические, образовательные, географические и временные[6].
Социокультурные различия могут проявляться как в предпочтительных средствах общения, так и в их частоте. Например, исследование показало, что американские клиенты предпочитают частое неформальное общение по телефону и электронной почте, тогда как японские — более формальное и менее частое вербальное взаимодействие через электронные каналы[7].
Языковой барьер выражается, когда хотя бы один из участников не использует родной язык. Идиоматические выражения и сленг особенно затрудняют неформальное общение.
Согласно кривой Аллена, частота коммуникаций между инженерами экспоненциально падает с увеличением расстояния. Внутри одной компании взаимодействие поддерживается благодаря случайным встречам; при значительных расстояниях оно практически исчезает. Эмпирически установлено, что сотрудники локальных офисов общаются между собой минимум раз в день, а с удалёнными — реже раза в неделю[5].
Временные барьеры возникают, когда члены команды работают в разных часовых поясах. Хотя асинхронные средства коммуникации могут компенсировать несовпадение графиков, такие контакты неизбежно менее оперативны[8]. Для синхронного взаимодействия требуется найти пересечение в рабочих часах. Стратегия Follow-the-sun применяется для частичной компенсации этой проблемы.
Исследования
Исследования в области коммуникации в распределённой разработке ПО направлены на изучение влияния различных способов и технологий общения на успех команды и проекта в целом.
Коммуникация — важнейший процесс координации проекта и обмена знаниями между участниками. Работы[9][10] подчёркивают, что обмен знаниями укрепляет доверие и влияет на эффективность работы команды, что критично для распределённых проектов.
Тем не менее, перечисленные выше барьеры могут приводить к замедлению разработки и лишним затратам. Значительная часть исследований направлена на минимизацию таких рисков[11].
Отдельное внимание уделяется анализу используемых коммуникационных инструментов — их преимуществ, недостатков и предпочтений разработчиков для различных ситуаций[12][13].
Потребность в новых эмпирических исследованиях подчёркивается в работах[11], где указывается взаимосвязь между распределением участников и увеличением времени реакции в коммуникации, а также — между частотой контактов и географической дистанцией (см. кривая Аллена).
Формы коммуникации
Коммуникация в командной работе может быть синхронной или асинхронной. Это влияет на выбор конкретных средств и инструментов, а также на распределение задач между участниками[14].
В синхронных системах обмен сообщениями происходит в режиме реального времени. Такой подход необходим, когда требуется немедленная реакция, быстрая координация или неформальное обсуждение важных изменений, идей и решений.
Асинхронные системы позволяют обмениваться сообщениями независимо от времени присутствия получателя. Этот способ удобен для длительных обсуждений и менее срочных вопросов, что особенно актуально для распределённых команд, работающих с разницей во времени.
Существуют системы, сочетающие оба подхода, предоставляя участникам гибкость. В таких гибридных системах сообщения могут носить как асинхронный, так и синхронный характер, занимая промежуточное положение между двумя моделями.
Инструменты
Инструменты коммуникации для глобальной распределённой разработки программного обеспечения включают различные категории, отличающиеся по характеру взаимодействия, пользовательскому интерфейсу, используемым сенсорным каналам. Среди них: мгновенные сообщения, электронная почта, аудио- и видеоконференции, виртуальный офис, виртуальная реальность[15].
Электронная почта позволяет взаимодействовать незамедлительно, без обязательного одновременного присутствия отправителя и получателя онлайн. Для компаний затраты на её использование различаются — например, можно поднять собственный почтовый сервер. Исследования демонстрируют, что все участники команд используют email эффективно. Сообщения в почте, как правило, более самостоятельны и требуют большего времени на подготовку, чем сообщения в мессенджерах[12].
Популярные почтовые сервисы: Gmail, Outlook.com, ProtonMail.
Аудиоконференция и видеоконференция позволяют передавать аудио- и видеосигналы в реальном времени между удалёнными участниками, в попытке максимально приблизить виртуальное взаимодействие к офлайн-встречам[13]. Современные системы видеосвязи позволяют различать интонацию, язык тела и уровень взаимопонимания[16]. Видеоконференции содействуют формированию доверия в международных командах[17].
В то же время неуверенные в знании английского языка разработчики предпочитают текстовые каналы коммуникации: электронная почта, мгновенные сообщения, поскольку они позволяют дольше формулировать ответы[18] — однако такие каналы не передают невербальные сигналы, что нередко вызывает недопонимание.
Примеры: Zoom, GoToMeeting, Highfive.
Виртуальные офисы обеспечивают виртуальную близость и функциональность традиционного офиса с зонами-контактами (комнатами). В 1970-х Томас Аллен показал крайнюю зависимость частоты общения инженеров от физической удалённости[19]. Виртуальные офисы призваны компенсировать это влияние, повышая спонтанность контактов и скоординированность работы[20].
Примеры — Sococo, 8x8, Skype for Business.
Популяризация виртуальной реальности привела к значительному росту рынка данной технологии. Предполагается, что VR-коммуникация создаёт наиболее полное погружение и повышает контекстуальность восприятия[21]. Несмотря на то, что принцип известен давно, активное развитие виртуальных коммуникаций приходится на 2010-е годы.
Пример платформы — AltspaceVR.
Мгновенные сообщения передают текстовые сообщения между двумя и более участниками (чат-группы). Могут использоваться как в синхронном, так и асинхронном режиме. Наиболее удобны для кратких, оперативных вопросов и уточнений[22]. Исследования показывают предпочтение этого типа средств у разработчиков для быстрой коммуникации[12].
Популярные примеры: WhatsApp, Facebook Messenger, HipChat.
Применение в процессах разработки
Совмещение гибких методологий и распределённой разработки несёт множественные коммуникационные вызовы[23]. Agile предполагает высокую долю неформального взаимодействия и минимальное документирование[24]. Однако распределённая работа осложняет старт и поддержание коммуникации, повышая издержки и снижая её частоту[5][25]. Поэтому тема коммуникаций ключева для распределённой Agile-разработки. Одним из главных принципов выступает постоянное взаимодействие участников[26].
Экстремальное программирование (XP) изначально проектировалось для совместной работы всех участников в одном помещении[27], чего трудно достичь в распределённых командах. XP делает коммуникацию одной из пяти ключевых ценностей[28]. Следовательно, внимание к коммуникациям крайне важно при применении XP в распределённых командах[29] и должна учитываться при адаптации практик к распределённым условиям.