Децентрализованная, или, как часто говорят, распределенная, разработка программного обеспечения в настоящее время стала нормой: современные средства связи позволяют объединять людей, находящихся в разных местах дислокации, разных городах и даже в разных странах. Кроме того, специалистов нужной квалификации может просто не оказаться «на месте», и тогда взаимодействие с удаленными работающими группами или внешними подрядчиками окажется просто необходимым. Однако децентрализованная разработка имеет и определенные недостатки.
Привлекая более квалифицированную или более дефицитную рабочую силу, снижая издержки, компании-разработчики неизбежно за это «расплачиваются». Усложняется их контроль над качеством продуктов, увеличиваются сроки создания программных продуктов, растет количество проблем, связанных с координацией действий разрозненных рабочих групп.
Имеется ли возможность хотя бы минимизировать негативные последствия децентрализации разработки? Оказывается, имеется, но она обеспечивается не только определенными инструментами поддержки групповой работы. В этом направлении деятельности не существует «золотого правила», которое решило бы разом все проблемы. Поэтому необходимо комплексное использование инструментов, новых методологий разработки и особых методов контроля над качеством.
При сопоставлении с распределенной разработкой традиционного процесса, при котором разработчики находятся если не в одной комнате, то по крайней мере в одном здании, выявляется несколько различий. Одно из них можно считать ключевым: это значительное усложнение взаимодействия, особенно неформального, между участниками проекта.
Хотя в обществе сложилось представление о программисте как о классическом интроверте — человеке, который полностью погружен в работу и мало общается с коллегами в течение рабочего дня, исследования дают совершенно другую картину. Одно из них свидетельствует, что каждый разработчик уделяет в среднем 75 минут в день неформальному обсуждению с коллегами вопросов, связанных с проектом. Согласно исследованиям [1] разработчики телекоммуникационного программного обеспечения тратят на формальное и неформальное взаимодействие с коллегами 50 % своего времени — вплоть до последнего месяца разработки, когда этот показатель снижается до 10 %. Конечно, показатели варьируются от проекта к проекту, но можно однозначно утверждать, что общение имеет для разработчика огромное значение.