Мы, методологи, проектируем сложные системы, но не принимаем во внимание
рабочие характеристики активного компонента этих систем, компонента,
который известен своей нелинейностью и изменчивостью - человека. В этой
статье вкратце перечислены те теории и проекты, которые мне пришлось
изучить, чтобы осознать этот совершенно очевидный факт, а также
определить, какие качества человеческой психики должны учитываться в
создании методологии и более общих рекомендациях касающихся процесса
разработки. Именно по этим качествам можно делать наиболее верные
прогнозы относительно будущего течения проекта и применимости к нему
какой-либо методологии.
Введение Этот отчет базируется на моем личном опыте, который я приобрел, изучив около 40 проектов за последние 20 лет. Основная
идея этой статьи состоит в следующем: методологи разрабатывают сложные
системы, у которых есть весьма изменчивые и нелинейные компоненты -
люди. При этом им как-то удается вообще не замечать эти компоненты и то
воздействие, которое они оказывают на проектируемую систему. После
некоторого размышления такое положение дел кажется абсурдным, однако, в
нашей отрасли совсем не много исследователей, уделяющих время серьезному
изучению влияния человеческого фактора на разработку программного
обеспечения. Наиболее заметными исключениями из
этого правила являются Джеральд Вайнберг (Gerald Weinberg [Wei]) и Том
Демарко (Tom DeMarco [Dm]), чьи книги публикуются сейчас в юбилейных (!)
изданиях. Их работы так популярны в нашей отрасли, что, казалось бы,
они должны были только повысить интерес к этому предмету и вызвать
активизацию исследований в этой области. Сейчас все большее количество
консультантов начинает относиться к людям как к главному фактору в
разработке ПО [B99] [Hi], однако, в целом, сообщество разработчиков
программного обеспечения продолжает игнорировать тот факт, что именно
человек должен быть центральной темой исследований. Это представляется
мне серьезным упущением - все равно, что не принимать во внимание
металлические перекрытия в стенах и жаловаться на плохую работу
радиоприемника. Раньше и я рассматривал людей,
участвующих в проектах, как какой-то второстепенный фактор. Это
продолжалось до тех пор, пока после нескольких лет работы исследователем
и методологом, я не заметил, что мои рекомендации как методолога не
соответствуют моему же собственному опыту в разработке ПО. Проблема была
не в том, что делали мои разработчики (они справлялись с
работой весьма успешно). Проблема была в другом: то, что я писал, не
соответствовало тому, что мы делали. В течение
последних пяти лет я мучительно пытался определить (мне трудно это
сделать даже сейчас) "что же находится у меня перед глазами". Постепенно
мне стало ясно, что в моем (да и любом другом) методологическом
уравнении не хватает одной переменной - влияния на методологию такого
понятия как "человек". Теперь, когда я начал
учитывать этот параметр, мои методологические прогнозы и выводы стали
соответствовать тому, что я вижу в реальной жизни. Теперь я считаю, что
люди - это главный, первоочередной двигатель проекта. Чем
же это отличается от того, что писали в "Peopleware" Демарко и Листер
(Lister)? Они высказали мнение, что люди представляют собой важный
фактор, и указали на некоторую специфику вопроса. Меня же интересует то,
как групповые и индивидуальные особенности человека влияют на
проектирование способов разработки ПО (иными словами, на методологии), в
применении к различным группам, работающим над разными видами задач. Мои
идеи весьма сходны с теми, которые излагал Вайнберг в главе "Teaming"
("Работа в команде") своей книги "The Psychology of Computer
Programming" ("Психология программирования"). Особенно все то, что
касается противопоставления двух стилей руководства - управления
задачами (task management) и управления поддержкой (maintenance
management). Это весьма близко к тому, что пытаюсь получить я - некие
характеристики и рекомендации, которые из них следуют. Вайнберг
основывается на тех проектах, которые он исследовал в 60-е годы. Однако
его выводы остаются справедливыми и полезными и сейчас, 30 лет спустя,
что еще раз подтверждает стабильность и важность человеческого фактора в
разработке ПО. Мне кажется, уже наступило время тщательно изучить
подобные факторы, и начать относиться к следующим из них рекомендациям
как к основам разработки ПО, а не открывать их для себя каждые 30 лет. В
этой статье я расскажу о той работе, которую проделал, чтобы понять,
что именно люди являются главным залогом успеха проекта. В настоящее
время для прогнозирования я использую именно человеческий фактор. Я пишу
эту статью от первого лица, потому что формальный, академический стиль
не очень подходит для описания поисков чего-то совершенно очевидного и
при этом не совсем понятного. Лучше всего подать это в виде рассказа от
первого лица.
|