Главная страница Visual 2000 · Общий список статей

"Мифический человек-месяц": четверть века спустя
Это должен прочитать каждый

Андрей Колесов

© 2000, Андрей Колесов
Авторский вариант. Статья была опубликована c незначительной литературной правкой в еженедельнике PC Week/RE (№ 7/2000, с. 34) PC Week/RE Online

Одна из проблем развития мировой компьютерной
История появления книги
Воспоминания минувших дней
Эссе на тему программной инженерии
Читать или не читать


Фредерик Брукс. Мифический человеко-месяц или как создаются программные комплексы. — Пер. с англ. — СПб.: Символ-Плюс, 1999, — 304 с.: ил.

Одна из проблем развития мировой компьютерной

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

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

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

ПРИМЕЧАНИЕ. Наряду с книгой Ф. Брукса хотелось бы обязательно упомянуть о других классических изданиях 70-х годов, в которых обсуждалась методология разработки программ. В частности, это "Структурное программирование" (авторы У.Дал, Э.Дейкстра, К. Хоор) и "Структурное проектирование и конструирование программ (Э. Йодан), которые также были опубликованы на русском языке.

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

В этой связи появление второго русского издания знаменитой книги "Мифический человеко-месяц" Фредерика Брукса представляется очень своевременным и безусловно полезным.

В начало статьи

История появления книги

Сейчас уже как-то подзабылось, что одним из крупнейших программных проектов за всю компьютерную историю и до сегодняшних дней является создание операционной системы IBM OS/360, первый рабочий вариант которой разрабатывался в 1963-66 гг. В нем участвовали сотни программистов, а общая трудоемкость работ за весь период работ составила 5000 человеко-лет. Среди из руководителей этого проекта был Фредерик Брукс, который в 1985 году вместе с Бобом Эвансом и Эриком Блохом был награжден Национальной медалью США в области технологии за проектирование OS/360.

В середине шестидесятых Ф.Брукс перешел на преподавательскую работу, работал консультантом и в 1975 году опубликовал книгу под названием "Мифический человеко-месяц", которая сразу же стала и продолжает оставаться своеобразной библией для разработчиков ПО всего мира. Практически одновременно русский перевод книги появился в нашей стране, и он уже давно стал библиографической редкостью. Сегодняшняя книга, выпущенная редакцией "Символ-Плюс", является оригинальным переводом юбилейного, двадцатого (!), издания 1995 года — к тому моменту общий тираж американского варианта превысил 250 тыс. экземпляров.

В начало статьи

Воспоминания минувших дней

Первый русский перевод книги Ф. Брукса (под редакцией и с предисловием самого А.П.Ершова!) был официально опубликован в 1979 году в издательстве "Мир". Однако на самом деле он появился еще в 1976 году в виде ротапринтной копии ДСП (для служебного пользования), которая довольно быстро распространилась среди программистов. По-видимому, в тот момент существовали проблемы с авторскими правами на официальное издание книги, однако те, кто еще помнит "старые" времена, могут подтвердить, что публикация ротапринта тогда была связана с еще большими проблемами.

Сейчас даже трудно передать, какое сильное впечатление произвело лично на меня прочтение книги Брукса. Во-первых, в то время просто не существовало никакой методологии разработки программных систем (по крайней мере, на публичном уровне). Во-вторых, никто из нас даже не мог представить, что профессиональное обсуждение серьезных вопросов может быть таким же захватывающим, как и описание приключений Монте-Кристо.

В вузах нас учили, как решать математические задачи, составлять алгоритмы и писать программы. Но как делать законченные программные продукты, планировать работы, управлять группами разработчиков — поиск ответов на подобные вопросы приходилось тогда искать самостоятельно, в основном методом проб и ошибок.

В последнем издании книги Брукс так описывает реакцию одного из читателей: "Тут нет ничего, чего я не знал бы раньше!". Действительно, к некоторым из его выводов мы уже сами пришли в ходе практической работы. Но одно дело "твое личное мнение" (которое подвергалось многочисленным сомнениям), другое — получить подтверждение этих идей у признанного авторитета в четно сформулированном и аргументированном виде. Не говоря уже о том, что многие положения этих идей были совершенными откровениями для нас.

В начало статьи

Эссе на тему программной инженерии

Книга Ф.Брукса фактически представляет собой сборник очерков, в которых последовательно обсуждаются узловые проблемы разработки крупных программных проектов (актуальность которых в течение последних 30 лет только возрастает): повышение производительности труда программистов, организация коллективной работы, планирование и обеспечение выполнения графика реализации проекта.

При этом рассматриваются самые различные аспекты данной темы: эстетические основы программирования, организация работы на разных уровнях, сущность руководства проектом, распределение функций в группе разработчиков, методы отладки, способы документирования и т.п.

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

ПРИМЕЧАНИЕ. Почему "человеко-месяц" является "мифическим"? Подробный ответ на этот вопрос вы найдете в книге. Вкратце же он формулируется в виде закона Брукса: "Если программистский проект не укладывается в сроки, то добавление рабочей силы только задержит его окончание". Трудоемкость проектов, как известно, оценивается в "человеко-месяцах". "Мифических".

Следует напомнить, что в 70-е годы обсуждение темы разработки ПО шла в основном в русле дискуссии: "Программирование — это наука или искусство?". Брукс одним из первых дал правильный ответ на этот вопрос: это весьма специфическая, высокоинтеллектуальная, но все же — технология.

Казалось бы, сегодня такой тезис является очевидным, но на самом деле до его реализации на практике еще очень далеко. Например, если посмотреть на подготовку современных ИТ-специалистов, то можно легко увидеть, что сейчас (как и 25 лет назад) наша отечественная высшая школа нацелена на выпуск ученых-исследователей, но никак не технологов. Результатом же этого является то, что отличная индивидуальная подготовка (как многие считают) почему-то не хочет выливаться в успешную реализацию проектов на практике.

Особый интерес к нынешнему юбилейному изданию книги объясняется тем, что она дополнена еще несколькими главами. В частности, включен острый полемический очерк "Серебряной пули нет" (1986 г.), который посвящен детальному обоснованию тезиса о том, что "в течение десятилетия ни одна разработка в области техники программного обеспечения не позволит повысить производительность труда в программировании на порядок." Конечно, тут есть, о чем поспорить, но в любом случае полезно задуматься над вопросом "в чем измеряется эта производительность труда программиста". Сегодня в целом уже понятно, что конечный результат довольно слабо коррелирует с числом написанных строк и уже тем более — с объемом необходимой оперативной памяти.

И конечно, будет очень интересно детально изучить заключительные главы 1995 года, в которых читатели смогут познакомиться со взглядами Брукса на все ключевые тезисы оригинального издания спустя целое поколение разработчиков и несколько поколений компьютерных технологий.

В начало статьи

Читать или не читать

В заключение хотелось бы отметить один довольно тревожный момент. Упоминавшиеся выше переводы книг Брукса, Дейкстры, Йодана издавались в 70-е годы тиражами в 20-30 тыс. экземпляров и на прилавках не залеживались. Тираж же нынешнего издания "Мифического человека-месяца" равен всего 2 тыс. И это при совершенном отсутствии изобилия публикаций подобного концептуального уровня (как в печатном, так и электронном виде).

Самое странное, что в качестве объяснения падения спроса на техническую литературу многие современные ИТ-специалисты называют не наличие других альтернативных источников информация, а нехватку времени. Все это напоминает фразу из известного анекдота: "Что там думать, товарищ майор? Трясти надо!".

Так, может быть, перед началом нового программного проекта лучше почитать Фредерика Брукса?

В начало статьи