Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения
Страница 5. Люди непостоянны


 

Люди непостоянны

Когда речь идет о людях, говорить о режимах сбоя нужно осторожно. У англичан есть старинная пословица: "Если ты дашь собаке плохое имя, то лучше ее сразу пристрелить". В самом деле, как вы увидите из приведенных ниже примеров, простые изменения в стиле управления и местной культуре могут привести к огромным изменениям видимого поведения людей. И все же, весь мой опыт говорит о том, что ожидать от людей последовательности и постоянства действий практически невозможно. Как пишет Джим Хайсмит (Jim Highsmith) [Hi]:

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

Людям нравится отсутствие точных предписаний относительно их собственного поведения. Одна из двух самых трудных для человека задач, которые я могу себе представить - это заставить человека делать что-то очень аккуратно и единообразно день за днем (другой самой трудной задачей будет попросить его изменить свои привычки). Ниже я привожу выдержку из недавно услышанного диалога, которая как нельзя лучше иллюстрирует эту мысль.

"Как же мне справиться со всеми этими бумагами, которые приходят в мой офис?" - спрашивает один. Другой отвечает: "Ну, это совсем не сложно! Просто следи, чтобы твой стол всегда был пустым - четыре корзины по углам, несколько папок в верхнем ящике...". Он не смог закончить. "Чтобы стол был пустым?!" - закричали все. "Но ведь это невозможно!"

Обратите внимание, что советчик предложил им одновременно изменить свои привычки, а также совершать определенное действие постоянно и единообразно.

Если бы люди обладали последовательностью и постоянством, они могли бы убирать бумаги с рабочего стола, предотвращать кариес, избавляться от лишнего веса, бросать курить, и может быть, даже разрабатывать программное обеспечение, укладываясь в рабочий график.

Как саркастически заметил Карл Вигерт (Karl Wiegert): "We are not short on practices, we are short on practice" ("нам не хватает практики, а не правил"). И таких правил, действительно, немало. Дэвид Гриз (David Gries) в своей книге "The Science of Programming" ("Наука программирования") дает подробные инструкции по тому, как нужно создавать правильные программы [Gr]. Хорошее средство проектирования представляют собой CRC-карточки [B87]. В методологии под названием "Extreme Programming" [EP], известной своим парным программированием и автоматическим тестированием [Je], тоже используются хорошо известные эффективные методики. Подробно описаны все составляющие методологии "Cleanroom" [Mi]. Уотс Хамфри (Watts Humphrey) дает подробные инструкции программистам, которые хотят работать более эффективно с помощью "Personal Software Process" (PSP) [Hu]. Последовательное и постоянное применение любой из этих методологий замечательно улучшило бы любой проект из тех, которые я видел.

Проблема в одном - в словах "постоянный" и "последовательный". Если PSP и Extreme Programming применять лишь время от времени, то они теряют свой смысл. Написанный наполовину код не может быть безошибочным. Точно так же, как и в случае с лишними бумагами на столе, методологию нужно применять полностью, последовательно, изо дня в день.

Непоследовательность - обычная причина режима сбоя у человека. Существуют методологии, которые требуют от своих адептов строгой последовательности действий. Такие методологии я называю "высоко дисциплинированными". Как показывают опросы, проводимые в различных проектах, именно такие методологии наиболее уязвимы, однако в некоторых проектах они используются довольно успешно. Вот пример применения методологии PSP в организации с пятым уровнем CMM. Мне он кажется весьма поучительным: [Web]:

Летом 1996 года небольшую группу программистов ознакомили с методологией PSP. Несмотря на то, что все были настроены относительно обучения весьма положительно, сразу после его окончания новая методология стала использоваться все меньше и меньше. Вскоре никто из тех, кто специально обучился этой методологии, не использовал ее в работе. Когда этих людей спросили, почему они не используют PSP, ответ был практически один и тот же: "PSP - очень строгая методология, поэтому если никто не требует от меня отчета, мне проще работать по-старому".

Чтобы такого не случилось, в методологиях, требующих высокой дисциплины, должны существовать некие регулирующие элементы, которые заставляли бы людей быть более последовательными. В методологии "Cleanroom" есть правило, запрещающее компиляцию, которое подкреплено определенным способом управления. Для Extreme Programming необходим "наставник" ("coach"), который следит за соблюдением всех предписаний этой методологии. В PSP такие функции не были предусмотрены, поэтому неудивительно, что группа разработчиков из нашего примера перестала ей пользоваться - у этой методологии просто не было никакой структуры поддержки. Предполагается, что эти факторы будут предусмотрены в TSP [Web].

Однако, несмотря на все это, существуют люди, которые могут на протяжении длительного времени делать свою работу последовательно и дисциплинированно (это лишний раз показывает, насколько все мы отличаемся друг от друга). Иногда для того, чтобы повлиять на дисциплинированность группы достаточно поменять ее руководителя. Спасибо Трюгве Реенскаугу (Trygve Reenskaug) за историю, которая прекрасно показывает, как стиль управления влияет на личные качества:

Недалеко отсюда был маленький галантерейный магазинчик, жуткое место. Товар в беспорядке, продавщицы полируют ногти или болтают по телефону, на покупателей никто не обращает внимания. Вскоре он закрылся, и на том же месте открылся другой магазин. О, тут дела пошли по-другому! Этот магазин был чистый, аккуратный, продавщицы всегда предупредительны... Только вот странное дело - продавщицы ведь были те же самые!

На самом деле хорошо известно, что личный стиль руководителя имеет огромное значение. Году в 1997 те, кто работал над проектом Chrysler Comprehensive Compensation [C3] узнали это на собственном опыте. Сначала основными принципами разработки были "думать наперед", "нечеткое, но растяжимое планирование" и "программный код - личное дело разработчика". Затем вся команда перестроилась (главной движущей силой этих перемен был Кент Бек (Kent Beck)), и основными принципами стали "делайте все простым и понятным, потом можно внести необходимые дополнения", "весь код должен быть общедоступным, и любая пара программистов может вносить в него любые изменения". Таким образом, одни и те же люди смогли принять совершенно новые для себя принципы работы и пройти путь от полного беспорядка, отсутствия коммуникации и невыполнения обязательств по поставкам к последовательному применению новой высокодисциплинированной методики и регулярному выполнению обязательств в течение трех лет работы.

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