Мифический человеко-месяц
Мифический человеко-месяц — это книга американского учёного в области вычислительной техники Фредерика Брукса, впервые опубликованная в 1975 году. В ней автор формулирует и обосновывает ряд закономерностей управления разработкой сложных программных проектов. Книга считается классическим трудом в области программной инженерии и менеджмента, а её центральный тезис — «добавление рабочей силы к опаздывающему проекту делает его ещё более опаздывающим» — вошёл в число базовых принципов управления проектами.
История создания и контекст
Фредерик Брукс в 1960-х годах руководил разработкой операционной системы OS/360 в корпорации IBM. Этот проект был одним из первых крупномасштабных проектов по созданию сложного программного обеспечения, и в ходе его реализации Брукс столкнулся с системными проблемами, характерными для управления разработкой ПО: срывами сроков, перерасходом бюджета, трудностями координации больших коллективов. После завершения работы над OS/360 Брукс обобщил свой опыт и в 1975 году выпустил книгу «The Mythical Man-Month: Essays on Software Engineering».
Второе издание книги вышло в 1995 году и содержало дополнительную главу «No Silver Bullet — Essence and Accident» (ранее опубликованную в 1986 году), а также комментарии автора к первоначальным тезисам с учётом двадцатилетнего опыта их применения в индустрии.
Основные тезисы и концепции
Закон Брукса
Центральное утверждение книги — закон Брукса: «Добавление рабочей силы к опаздывающему проекту делает его ещё более опаздывающим». Этот парадокс объясняется двумя факторами:
- Накладные расходы на коммуникацию — с ростом числа участников команды растёт количество каналов связи (пропорционально n(n-1)/2, где n — число разработчиков). Каждый новый участник требует времени на обучение, введение в курс дела и координацию с остальными.
- Неделимость задач — многие задачи в разработке ПО (например, проектирование архитектуры, отладка сложной ошибки) не могут быть эффективно разделены между несколькими исполнителями. Работа, которую один программист может сделать за один месяц, не всегда может быть выполнена двумя программистами за две недели.
Мифический человеко-месяц
Брукс критикует распространённую практику измерения объёма работы в «человеко-месяцах» (человек × время). Он утверждает, что такая метрика вводит в заблуждение, поскольку предполагает, что труд можно произвольно делить и распределять, что неверно для многих видов интеллектуальной работы. Человеко-месяц — это «мифическая» единица, не отражающая реальной сложности координации и коммуникации.
Концепция «серебряной пули»
В эссе «No Silver Bullet — Essence and Accident» (1986), включённом во второе издание, Брукс утверждает, что не существует единого технологического или методологического решения («серебряной пули»), которое могло бы кардинально повысить производительность разработки ПО. Он разделяет сложность разработки на:
- Сущностную сложность (essential complexity) — присущую самой задаче, которую невозможно устранить;
- Случайную сложность (accidental complexity) — связанную с инструментами, языками, процессами, которую можно уменьшить.
Брукс полагал, что за 10 лет (с 1986 по 1996) не произойдёт прорывов, способных на порядок повысить продуктивность. Последующее развитие, включая появление объектно-ориентированного программирования, языков высокого уровня, CASE-средств и Agile-методологий, подтвердило его правоту: хотя инструменты улучшились, фундаментальные проблемы управления крупными проектами остались.
Правило Брукса для планирования
Брукс формулирует практическое правило: «Планируйте, что одна треть времени уйдёт на проектирование, одна шестая — на кодирование, одна четверть — на модульное тестирование и одна четверть — на системное тестирование». Он подчёркивает, что тестирование и отладка занимают значительно больше времени, чем обычно предполагается.
Структура книги
Книга состоит из нескольких эссе, каждое из которых посвящён отдельной проблеме управления проектами:
- The Tar Pit — метафора «смоляной ямы», описывающая, как проекты затягивают команды в бесконечные доработки.
- The Mythical Man-Month — изложение закона Брукса.
- The Surgical Team — предложение структуры команды по аналогии с хирургической бригадой: один главный «хирург» (архитектор), несколько «ассистентов» (программистов), «анестезиолог» (тестировщик), «медсёстры» (администраторы).
- Aristocracy, Democracy, and System Design — обсуждение важности единой архитектурной концепции.
- The Second-System Effect — описание тенденции разработчиков перегружать вторую версию системы излишними функциями («синдром второй системы»).
- Passing the Word — о необходимости формальной документации и спецификаций.
- Why Did the Tower of Babel Fail? — анализ коммуникационных проблем в больших проектах.
- Calling the Shot — о точности оценки сроков.
- Ten Pounds in a Five-Pound Sack — о перегрузке проектов функциями.
- The Documentary Hypothesis — о роли документов.
- Plan to Throw One Away — рекомендация планировать первую версию как прототип, который будет выброшен.
- Sharp Tools — о важности инструментария.
- The Whole and the Parts — о системном тестировании и интеграции.
- Hatching a Catastrophe — о том, как распознать проект, терпящий крах.
- The Other Face — о различиях между программированием как искусством и как инженерией.
Критика и влияние
Критика
Основные возражения против тезисов Брукса:
- Современные методологии — критики утверждают, что Agile, Scrum, DevOps и непрерывная интеграция частично снижают остроту проблемы коммуникации, разбивая проекты на короткие итерации и малые автономные команды.
- Инструментарий — развитие средств автоматизации, систем контроля версий (Git), автоматического тестирования и CI/CD уменьшило накладные расходы на интеграцию.
- Масштабирование — некоторые исследователи (например, в области больших открытых проектов вроде ядра Linux) показывают, что при определённой организации труда (модульная архитектура, чёткое разделение ответственности) команды могут расти без катастрофического падения производительности.
Сам Брукс во втором издании признал, что некоторые его прогнозы не сбылись (например, появление мощных IDE и языков с автоматическим управлением памятью), но настаивал на неизменности сущностных проблем.
Влияние
Книга оказала глубокое влияние на индустрию программного обеспечения:
- Управление проектами — закон Брукса стал общепринятым предостережением для менеджеров, пытающихся «забросать» опаздывающий проект людьми.
- Архитектура — концепция «выбросить первую версию» (Plan to Throw One Away) повлияла на практику прототипирования и итеративной разработки.
- Командообразование — идея «хирургической бригады» предвосхитила современные модели кросс-функциональных команд.
- Образование — книга входит в обязательные списки литературы для студентов и менеджеров в области информационных технологий.
Интересные факты
- Название книги — игра слов: «man-month» (человеко-месяц) и «mythical» (мифический) обыгрывают нереалистичность этой единицы измерения.
- Фредерик Брукс получил премию Тьюринга в 1999 году за вклад в архитектуру компьютеров и операционных систем.
- Книга переведена на многие языки, включая русский (издавалась под названиями «Мифический человеко-месяц» и «Человеко-месяц — миф»).
- Второе издание (1995) содержит главу «No Silver Bullet» и комментарии автора, в которых он оценивает, какие из его предсказаний сбылись, а какие нет.
Источники
- Brooks, F. P. The Mythical Man-Month: Essays on Software Engineering. — Addison-Wesley, 1975 (1st ed.), 1995 (2nd ed.).
- Brooks, F. P. No Silver Bullet: Essence and Accidents of Software Engineering // IEEE Computer, 1987.
- McConnell, S. Software Estimation: Demystifying the Black Art. — Microsoft Press, 2006.
- Glass, R. L. Facts and Fallacies of Software Engineering. — Addison-Wesley, 2002.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →