Введение
Принцип управления программными проектами. Закон Брукса — это наблюдение в области управления программными проектами, утверждающее, что «добавление людей к запаздывающему программному проекту только увеличивает задержку». Этот закон был сформулирован Фредом Бруксом в его книге 1975 года «Человек-месяц». По мнению Брукса, при определенных условиях добавление нового сотрудника к проекту приводит к увеличению, а не к сокращению сроков его выполнения.
Brooks's law is an observation about software project management that "Adding manpower to a late software project makes it later." It was coined by Fred Brooks in his 1975 book The Mythical Man Month. According to Brooks, under certain conditions, an incremental person when added to a project makes it take more, not less time.
Пояснения
По словам самого Брукса, закон – это "вопиющее упрощение". Всем, кто работает над одной и той же задачей, необходимо быть в курсе происходящего, поэтому с добавлением новых людей они тратят все больше времени на то, чтобы понять, чем занимаются остальные. Увеличение числа людей, работающих над легко разделяемой задачей, такой как уборка номеров в отеле, сокращает общее время выполнения (до тех пор, пока дополнительные работники не начнут мешать друг другу). Однако другие задачи, в том числе многие проекты в области разработки программного обеспечения, менее поддаются разделению; Брукс иллюстрирует эту ограниченную делимость другим примером: если одной женщине требуется девять месяцев, чтобы родить ребенка, то "девять женщин не смогут родить ребенка за один месяц".
Исключения и возможные решения
В законе Брукса есть некоторые ключевые моменты, допускающие исключения и открывающие путь к возможным решениям. Прежде всего, следует отметить, что закон Брукса применим только к проектам, которые уже отстают от графика. Проекты можно вернуть в нужное русло (или удержать в нем), если усиление произойдет на ранних этапах. Также важно определить, действительно ли проект отстает, или изначально график был излишне оптимистичным. Значительное число задержек проектов связано с ошибками планирования. Корректировка графика – лучший способ получить реалистичные и надежные сроки завершения проекта. Необходимо также учитывать количество, квалификацию и роль новых сотрудников. Один из простых способов обойти закон в случае перегруженного проекта – добавить больше людей, чем требуется, чтобы избыточная мощность компенсировала затраты на обучение и коммуникацию. Опытных программистов или специалистов можно привлечь с меньшими затратами на обучение. Можно добавить людей для выполнения сопутствующих задач, таких как контроль качества или документация; при четко поставленной задаче время на адаптацию будет минимальным. Хорошая сегментация помогает минимизировать коммуникационные издержки между членами команды. Небольшие подзадачи решаются небольшими командами, а команда более высокого уровня отвечает за системную интеграцию. Чтобы этот метод работал, сегментация проблемы должна быть выполнена правильно изначально; в противном случае, это может усугубить проблему, а не решить ее, затрудняя коммуникацию между программистами, работающими над тесно связанными частями проекта, даже если план проекта предусматривает их независимость. Примером сегментации являются шаблоны проектирования, которые упрощают распределение работы, поскольку вся команда может выполнять свою часть в рамках, заданных шаблоном. Шаблон проектирования определяет правила, которым следуют программисты, упрощает общение за счет использования единого языка и обеспечивает согласованность и масштабируемость. План «Бермудские острова», когда большинство разработчиков проекта отстраняют («отправляют на Бермудские острова»), а оставшимся поручают завершить разработку, был предложен как способ обойти закон Брукса.