Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения
Страница 4. Человек - существо общительное



Человек - существо общительное

Основным фактором в разработке программного обеспечения является возможность коммуникации. На рисунке 1 изображена некая кривая, с помощью которой я иллюстрирую свои методологические рассуждения. На этом рисунке видно, как падает эффективность коммуникации, если исчезает ее модальность и синхронизация. Этой теме посвящено несколько исследований (см. [Pl] и [Si]), кроме того, эту же зависимость подтверждает и Вайнберг, который описывал проекты около 30 лет назад [Wei].

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

  • Физическая досягаемость. Я не знаю, как это объяснить, но физическая досягаемость собеседников влияет на их общение. Что бы ни лежало в основе этого влияния - трехмерность, синхронизация, запах или малозаметные визуальные сигналы - при коммуникации это имеет большое значение.
  • Разнообразные модальности. Человек общается не только словами, но и при помощи жестов. Часто человек может высказать свое суждение жестикуляцией, например, поднимая бровь или указывая на что-то пальцем.
  • Интонация и синхронизация речи. Чтобы подчеркнуть важность какого-либо высказывания или, к примеру, свое удивление, говорящий может ускорять или замедлять темп речи, делать паузы или изменять интонацию.
  • Ведение диалога в реальном времени (вопрос-ответ). С помощью вопросов слушающий выясняет для себя то, что ему было неясно в речи собеседника или же получает дополнительные сведения, которых ему не хватает для полного понимания предмета. Синхронизация вопросов и ответов является основополагающим определением типа коммуникации.

Рисунок 1. Виды коммуникации

Итак, что же произойдет, если мы начнем убирать одно за другим все эти свойства?

  • Убираем только физическую досягаемость. Поместим собеседников на противоположные концы видеосвязи. В принципе, при этом сохраняются все основные свойства физического присутствия, и тем не менее, эффект уже не тот. Когда мы испробовали этот способ в Норвегии, где одна часть команды разработчиков находилась в Осло, а другая - в Лиллехаммере, то оказалось, что команда находила верные проектные решения, только когда всем удавалось собраться вместе. Даже то время, которое люди тратили, чтобы вместе дойти до электрички, было более продуктивно для работы, нежели видеоконференция.
  • Убираем жестикуляцию и визуальную синхронизацию, оставляем интонацию и вокальную синхронизацию (другими словами, используем для общения телефон). Большинство людей во время беседы по телефону рисуют. Если человек рисует линию, которая соединяет два прямоугольника, это значит, что он собирается сказать нечто важное, то, что нужно отметить особо. Визуально-слуховая синхронизация информации закрепляет в сознании человека ее суть. Когда люди говорят по телефону, эта синхронизация исчезает, а вместе с ней из коммуникации исчезают жестикуляция, выражение лица собеседника, и т.д.
  • Теперь уберем голосовую синхронизацию и интонацию, оставим лишь возможность задавать вопросы (электронная почта). Без голосовой синхронизации мы не можем ни сделать эффектную паузу, ни подождать, не будет ли у собеседника возражений или вопросов, ни ускорить или замедлить темп речи, чтобы сделать высказывание. Лишив себя возможности использовать интонацию, человек не может выразить с ее помощью насколько удивительна, скучна или очевидна выраженная в письме идея.
  • Теперь уберем возможность задавать вопросы (но восстановим один из перечисленных выше факторов). Не имея возможности услышать вопросы собеседника, говорящий должен сам догадываться, что тот знает или не знает, какие вопросы мог бы задать и включить в свою речь ответы на эти несуществующие вопросы. И все это он должен сделать, не имея обратной связи со своим слушателем. Этот вид коммуникации допускает наличие визуальной (видеокассета) или слуховой (аудиокассета) информации.
  • И, наконец, убираем все свойства коммуникации - визуальные, слуховые, голосовые, синхронизацию общения, возможность задавать вопросы - что же мы получаем? Правильно, бумажную документацию. На приведенной выше модели вы видите, что документация является наименее эффективным способом коммуникации из всех возможных. Тот, кто пишет документацию, должен строить догадки относительно своей аудитории безо всякой обратной связи, у него нет возможности использовать ни синхронизацию и другие эмфатические сигналы, ни жестикуляцию и интонацию.

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

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

"Убедитесь, что во всем здании хватает досок для рисования и уголков, где можно попить кофе". Такие компании, как Hewlett-Packard и IBM давно поняли всю эффективность неформального общения, и сейчас в нашей индустрии стало обычным положение, что наиболее эффективное окружение для проектирования разработки ПО можно создать специально поощряя и разрешая собрания небольших групп разработчиков. Вайнберг зафиксировал особые случаи, когда неформальные беседы разработчиков оказывали значительный эффект на общую результативность работы всей группы [Wei]. Нередко удачные решения приходят, когда люди "просто беседуют".

Сейчас существует три сравнительно новых методологии, где одно из основных положений - размещение всех разработчиков в одной комнате или просто в непосредственной близости друг от друга. Это Adaptive Software Engineering [Hi], Extreme Programming [B99], [EP], и Crystal(Clear) [Co00]).

Модель коммуникации, которую мы рассмотрели выше, позволяет, кроме всего прочего, давать рекомендации по архивированию документации:

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

Я очень обрадовался, когда Лизетт Веласкес (Lizette Velasquez) из "Lucent Technologies" рассказала мне, что она не только с успехом использует эту технику в работе, но что я забыл упомянуть еще один немаловажный момент: очень важно особо отмечать те места обсуждения, когда "происходило нечто интересное". Обычно обсуждение протекает довольно спокойно, но случаются моменты, когда какой-то вопрос вызывает целый поток дополнительных вопросов и комментариев. В таком случае, зрители наверняка захотят вернуться и просмотреть это место еще раз.

Теперь еще можно размещать подобные обсуждения в сети и снабжать их гиперссылками.

А тем, кто до сих пор предпочитает книги всем прочим средствам передачи информации, предложу сделать следующее: возьмите, к примеру, замечательную, но очень трудную книгу Design Patterns. Теперь представьте, что вместо того, чтобы разбирать значение паттерна "Decorator" с книжной страницы, у вас есть возможность щелкнуть мышкой и увидеть видеоклип, в котором авторы сами объясняют этот паттерн. Конечно же, в этом случае для передачи своих идей они будут использовать интонацию, жестикуляцию и синхронизацию общения.

Какой же вывод нужно сделать относительно этого свойства человеческой природы? Мы должны стараться поднять коммуникацию в команде разработчиков на максимально высокую точку нашей кривой - настолько, насколько это позволяют обстоятельства.

 
« Предыдущая статья   Следующая статья »