Открыть сервис

Закон Брукса

Закон Брукса — это эмпирическое наблюдение в области управления проектами по разработке программного обеспечения, сформулированное Фредериком Бруксом в его книге «Мифический человеко-месяц» (1975). Закон гласит: «Добавление рабочей силы к запаздывающему проекту ещё больше его задерживает». Данное утверждение описывает контрпродуктивность попыток ускорить завершение проекта за счёт привлечения дополнительных сотрудников на поздних стадиях.

История возникновения

Закон был впервые опубликован в 1975 году в книге Фредерика Брукса-младшего «Мифический человеко-месяц, или Как создаются программные системы». Брукс в то время руководил разработкой операционной системы OS/360 в компании IBM. На основе этого опыта он пришёл к выводу, что традиционные методы управления проектами, основанные на линейной зависимости между количеством работников и временем выполнения, не работают в сфере программирования.

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

Содержание закона

Основные причины

Закон Брукса объясняется несколькими фундаментальными факторами:

  1. Накладные расходы на коммуникацию. При добавлении нового сотрудника в проект возрастает количество каналов связи. Если в команде из N человек число каналов равно N(N-1)/2, то каждый новый участник требует времени на обучение, введение в курс дела и согласование действий с остальными. Это время отвлекает существующих членов команды от непосредственной работы.
  1. Время на введение в курс дела. Новый сотрудник не может сразу начать продуктивно работать. Ему требуется время на изучение архитектуры, кода, документации и процессов. В этот период он не только не приносит пользы, но и отвлекает других разработчиков, которые вынуждены отвечать на его вопросы.
  1. Неделимость задач. Многие задачи в разработке программного обеспечения не могут быть разделены на независимые части. Например, написание модуля, который требует глубокого понимания всей системы, не может быть поручено нескольким разработчикам одновременно без потери качества и целостности.
  1. Увеличение сложности интеграции. Чем больше людей работают над одним продуктом, тем сложнее объединять их результаты. Возрастает количество ошибок на стыках модулей, требуется больше времени на тестирование и отладку.

Математическая иллюстрация

Брукс привёл простой пример: если проект требует 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 →