Человеческий фактор в программировании
Шрифт:
«Команды прорыва», отдающие предпочтение оригинальности свободного мышления, могут также приходить к блестящим решениям, которые, тем не менее, не вполне практичны. Невозмутимые представители тактических команд могут производить надежные рутинные программы, но с трудом находят творческие решения для структур данных, алгоритмов, или пользовательских интерфейсов. Команды, в которых предпочтение отдается совместному решению задач, лучше всех способны объединять разные идеи, предлагаемые всеми членами команды, и принимать такие решения, которые одновременно и практичны, и прогрессивны.
Для настоящего сотрудничества требуются правильные методы руководства, которые поощряли бы свободное обсуждение и помогали достигать технического консенсуса. Самые лучшие менеджеры в проектах открытого типа являются коллегами, компетентными профессионалами, которые играют активную техническую роль в процессе
Естественно, упор на полное согласие при адаптивном сотрудничестве может быть и препятствием. Эти люди способны уговорить даже ураган. Если обсуждение, которое продлилось час, не помогло решить вопрос, они будут готовы потратить на это еще пару часов. Они пререкаются не только по поводу технических проблем, но и по поводу философии, которая за ними стоит; они подвергают сомнению не только методы разработки, но и те предположения, на которых они основаны. Может обсуждаться даже работа самой группы, когда она рассматривает свои методы и структуры и пытается адаптировать их к решению задачи. («Послушайте, может быть, сейчас нам нужно разбиться на небольшие группы и поработать так несколько дней, а потом вновь соединиться и попытаться собрать все это вместе?»)
Есть способы уменьшить пробуксовку в работе такого рода команд. Дискуссии могут быть ограничены по времени. Если технический консенсус не достигнут по истечении какого-то установленного времени, то вопрос может быть отложен или сведен к некоторому стандартному решению, или передан руководителю для арбитражного вердикта. Каждый из этих вариантов в некоторой степени нарушает правила совместного принятия решений. Однако е, сли такие варианты являются нечастыми исключениями из правил, то эффективность может перекрыть некоторую потерю в виде чувства принадлежности к конечному результату.
Однако здесь не может быть простой формулы. Для того чтобы оставаться открытой, каждая группа должна искать свой собственный путь и договариваться о собственных процедурах и исключениях.
Одна из лучших команд, построенных на сотрудничестве, которые я когда-либо знал, была известна как Цех построения теорий (Theory Construction Workshop). Это независимая рабочая группа, слабо связанная с профессиональным сообществом. Ее члены общались друг с другом как коллеги, стараясь продвигать создание теорий в атмосфере свободного обсуждения и взаимопомощи. Эти собрания были открыты для всякого, кто разделял интерес к построению более правильной теории. Содержание и формат собраний обсуждался в соответствии с традицией тесного сотрудничества и взаимодействия. Почти на каждом ежегодном деловом собрании обязательно находился новичок, который в порыве радости от присутствия в такой замечательной и приятной компании предлагал ввести какой-нибудь формальный порядок в виде регистрации, членских билетов, устава, публикации протоколов и т. п. Каждый год мы исправно рассматривали и обсуждали эти предложения и каждый год их отклоняли, по общему согласию оставляя наше собрание открытым, неформальным и гибким.
Однажды на одном из ежегодных собраний я, не подумав, выдвинул радикальное предложение: «Отныне, для того чтобы избежать траты времени на обсуждение этих бесконечных предложений, давайте запретим все попытки установить жесткие и формальные правила или структуры». Еще не успев закончить своей фразы, я рассмеялся над своим внутренне противоречивым предложением. Наше искреннее и серьезное рассмотрение даже самых необдуманных предложений, вносимых рядовыми новичками, было именно тем, что заставляло групповой процесс работать. Все заулыбались, я сел, и мы вернулись к обсуждению очередного пред-ложения по публикации протоколов наших собраний. Для того чтобы оставаться открытым, любой открытый процесс должен быть открыт для альтернативных вариантов.
Свою блестящую пьесу «Sunday in the Park with George» (В парке с Джорджем в воскресенье) Стивен Сондхейм (Steven Sondheim) заканчивает чудесными словами, приписываемыми Джорджу Сера (Georges Seu-rat): «Белая, чистая страница или холст — вот что он любит; в них есть так много возможностей».
Могу сказать то же самое.
Из журнала Software Development, том 1, № 6, июнь 1993 г.
14
Синхронное плавание
Хотите увидеть, как по-настоящему быстро разрабатывать приложение? Возьмите фильм Гаррисона Форда (Harrison Ford) «Свидетель» («Witness») и найдите в нем сцену, когда общество Амиш строит сарай за один день. Самое интересное в этой проектной команде — не ее поразительная эффективность, а отсутствие руководителя и даже необходимости в руководителях или руководстве. Они почти не разговаривают и им уж точно не приводится спорить по поводу конструкции сарая или договариваться о том, кто и что должен делать для того, чтобы его построить. Они просто взялись за работу и стали ее выполнять быстро и эффективно, почти в полной гармонии, пока не закончили.
Конечно, это мечта менеджера, своего рода управленческая утопия. Слово «утопия» буквально означает «место, которого нет», а сцена из фильма «Свидетель» исправно происходит в округе Ланкастер, штат Пенсильвания. Более подходящим, наверное, является слово «эутопия», означающее «хорошее место». Таким образом, эутопия — это то идеальное место, где вы хотите быть. Поэтому мы можем назвать такую модель организации эутопической командной работой.
Быть руководителем эутопической группы, разрабатывающей программное обеспечение, очень просто — настолько просто, что для осуществления руководства вам вряд ли придется что-либо делать. Люди вокруг вас делают все, что должно быть сделано. Не нужно стоять над душой у каждого или разъяснять что-либо на пальцах. Все идет гладко потому, что люди, которые работают для вас и вместе с вами, разделяют ваши представления о работе команды — о том, что нужно делать и каким образом. Это люди, которые вам подходят; они думают так же, как и вы, и во многом смотрят на мир вашими глазами. Едва вы успеваете сказать слово, как они уже принимаются разрабатывать следующий набор модулей или кодировать расширения для графического пользовательского интерфейса, или делать еще что-нибудь нужное. Все — люди, программное обеспечение, программирование — подходит друг другу так точно, как будто вы все придумали сами, не прилагая к этому никаких усилий. В команде не существует конфликтов и не нарушается дисциплина. Подобно команде по синхронному плаванию, это само воплощение идеального совершенства и гармонии.
Такая эутопическая фантазия является последней из наших четырех основных моделей организации проектов — синхронная парадигма, модель эутопической командной работы. Традиционные тактические команды координируются иерархической властью, «команды прорыва» — индивидуальной инициативой, а команды совместного решения задач — взаимодействием сотрудников. Эутопические команды зависят от выбора направления. Члены такой команды следуют направлению, заданному общим пониманием и общими ценностями. Поскольку все члены команды понимают друг друга и разделяют общее представление о том, куда движется команда и каким образом она будет достигать своих целей, они могут работать совместно без какой-либо заметной координации. Подобная направленность обычно не становится доминирующим объединяющим принципом для всей организации в течение длительного периода времени. Однако многие группы, большие и маленькие, зависят от некоторой степени направленности или функционируют синхронно в течение более коротких периодов.
Случай, который произошел с моим коллегой несколько лет назад, поможет проиллюстрировать этот режим работы. Консультант по организационному развитию встречалась с клиентами в конференц-зале госпиталя. Во время этой встречи одна из ножек массивного дубового стола подломилась. Стол придавил ее ногу. Нога оказалась вывернута, а движения скованы. В то же мгновение все вскочили со своих мест, чтобы помочь. Двое стали приподнимать тяжелый стол с ее ноги, а третий взял за руку, чтобы успокоить. Кто-то побежал в рентгенологию. Еще один выскочил в холл, чтобы принести носилки. Между членами этой медицинской команды не проскочило ни единого слова. Они все точно знали, что нужно делать, и каждый просто стал выполнять какую-то часть. Никто не назначался руководителем, не требовались ни обсуждения, ни переговоры, и, тем не менее, все занимались одним делом, не противореча друг другу.