Закон Брукса¶
Закон Брукса — это эмпирическое наблюдение в области управления проектами по разработке программного обеспечения, сформулированное Фредериком Бруксом в его книге «Мифический человеко-месяц» (1975). Закон гласит: «Добавление рабочей силы к запаздывающему проекту ещё больше его задерживает». Данное утверждение описывает контрпродуктивность попыток ускорить завершение проекта за счёт привлечения дополнительных сотрудников на поздних стадиях.
¶История возникновения
Закон был впервые опубликован в 1975 году в книге Фредерика Брукса-младшего «Мифический человеко-месяц, или Как создаются программные системы». Брукс в то время руководил разработкой операционной системы OS/360 в компании IBM. На основе этого опыта он пришёл к выводу, что традиционные методы управления проектами, основанные на линейной зависимости между количеством работников и временем выполнения, не работают в сфере программирования.
Книга стала классикой менеджмента в IT-индустрии, а закон Брукса — одним из наиболее цитируемых принципов, объясняющих неудачи крупных проектов. В последующих изданиях (1995) Брукс уточнил, что закон применим не только к программированию, но и к любым сложным системам, где требуется высокая степень координации.
¶Содержание закона
¶Основные причины
Закон Брукса объясняется несколькими фундаментальными факторами:
- Накладные расходы на коммуникацию. При добавлении нового сотрудника в проект возрастает количество каналов связи. Если в команде из N человек число каналов равно N(N-1)/2, то каждый новый участник требует времени на обучение, введение в курс дела и согласование действий с остальными. Это время отвлекает существующих членов команды от непосредственной работы.
- Время на введение в курс дела. Новый сотрудник не может сразу начать продуктивно работать. Ему требуется время на изучение архитектуры, кода, документации и процессов. В этот период он не только не приносит пользы, но и отвлекает других разработчиков, которые вынуждены отвечать на его вопросы.
- Неделимость задач. Многие задачи в разработке программного обеспечения не могут быть разделены на независимые части. Например, написание модуля, который требует глубокого понимания всей системы, не может быть поручено нескольким разработчикам одновременно без потери качества и целостности.
- Увеличение сложности интеграции. Чем больше людей работают над одним продуктом, тем сложнее объединять их результаты. Возрастает количество ошибок на стыках модулей, требуется больше времени на тестирование и отладку.
¶Математическая иллюстрация
Брукс привёл простой пример: если проект требует 10 человеко-месяцев работы, это не означает, что его можно выполнить за 1 месяц, наняв 10 человек. Из-за коммуникационных издержек добавление людей на поздних стадиях может привести к тому, что проект будет завершён позже, чем при исходной команде.
¶Критика и ограничения
¶Когда закон не работает
Закон Брукса не является абсолютным и имеет ряд ограничений:
- На ранних стадиях проекта. Если проект находится на начальном этапе, добавление людей может быть эффективным, так как ещё не накоплено большое количество сложных взаимосвязей.
- При хорошо структурированных задачах. Если задачи легко разделяются на независимые подзадачи (например, написание документации, тестирование, локализация), добавление людей может ускорить работу.
- При наличии опытных наставников. Если в команде есть специалисты, способные быстро ввести новичков в курс дела, издержки снижаются.
- В проектах с низкой связанностью. Некоторые архитектуры (например, микросервисная) позволяют разным командам работать параллельно с минимальной координацией.
¶Альтернативные взгляды
Некоторые исследователи и практики утверждают, что закон Брукса устарел в контексте современных методологий разработки (Agile, DevOps). Например, использование непрерывной интеграции, автоматизированного тестирования и парного программирования может снизить негативные эффекты добавления людей. Однако сам Брукс в поздних интервью отмечал, что закон остаётся актуальным для сложных систем, где коммуникационные издержки неизбежны.
¶Применение на практике
¶В управлении проектами
Закон Брукса используется как предостережение для менеджеров, пытающихся решить проблему задержки проекта наймом дополнительных сотрудников. Вместо этого рекомендуется:
- Пересмотреть объём работ (scope creep) и сократить функциональность.
- Оптимизировать процессы и инструменты.
- Привлечь временных консультантов для решения конкретных узких мест, а не для участия в общей разработке.
- Использовать аутсорсинг для хорошо изолированных задач.
¶В образовании и литературе
Закон Брукса изучается в курсах по управлению проектами, программной инженерии и системному анализу. Он является одним из ключевых примеров, иллюстрирующих разницу между физическими и интеллектуальными работами.
¶Интересные факты
- Фредерик Брукс не был первым, кто заметил этот эффект. В 1950-х годах аналогичные наблюдения делали в отношении строительства и других сложных проектов. Однако именно Брукс ввёл это понятие в широкий обиход в контексте программирования.
- В книге «Мифический человеко-месяц» также сформулирован «закон Брукса о железном треугольнике»: качество, время и стоимость — три взаимосвязанных параметра, изменение одного из которых неизбежно влияет на другие.
- Сам Брукс в 1995 году признал, что некоторые его выводы были чрезмерно пессимистичными, и отметил, что современные технологии (например, языки высокого уровня, автоматизированное тестирование) могут смягчить эффект закона.
¶Источники
- Фредерик Брукс. «Мифический человеко-месяц, или Как создаются программные системы» (1975, 1995).
- Frederick P. Brooks Jr. «The Mythical Man-Month: Essays on Software Engineering» (Addison-Wesley, 1975).
- Steve McConnell. «Rapid Development: Taming Wild Software Schedules» (Microsoft Press, 1996).
- Статья «Brooks's law» в английской Википедии (версия от 2023 года).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


