Закон Брукса
Закон Брукса — это наблюдение об управлении программными проектами : «Добавление рабочей силы в запоздалый программный проект делает его позже». [ 1 ] [ 2 ] Его придумал Фред Брукс в своей книге «Мифический человеко-месяц» 1975 года . По словам Брукса, при определенных условиях добавление в проект дополнительного человека заставляет его занимать больше, а не меньше времени.
Пояснения
[ редактировать ]По словам самого Брукса, закон представляет собой «возмутительное упрощение». [ 1 ] но это отражает общее правило. Брукс указывает на основные факторы, объясняющие, почему это работает таким образом:
- требуется некоторое время Чтобы люди, добавленные в проект, стали продуктивными, . Брукс называет это временем « нарастания ». Программные проекты представляют собой сложную инженерную деятельность, и новые работники проекта должны сначала получить знания о работе, которая им предшествовала; такое обучение требует отвлечения ресурсов, уже работающих над проектом, временного снижения их производительности, в то время как новые работники еще не вносят значимого вклада. Каждому новому работнику также необходимо интегрироваться с командой, состоящей из нескольких инженеров, которые должны изо дня в день обучать нового работника своей области знаний в области кода. Помимо снижения вклада опытных работников (из-за необходимости обучения), новые работники могут даже внести отрицательный вклад, например, если они внесут ошибки, которые отодвинут проект от завершения.
- Затраты на коммуникацию возрастают по мере увеличения числа людей. Благодаря комбинаторному взрыву количество различных каналов связи быстро увеличивается с ростом числа людей. [ 3 ] Всем, кто работает над одной и той же задачей, необходимо синхронизироваться, поэтому по мере того, как добавляется больше людей, они тратят больше времени, пытаясь узнать, что делают все остальные.
- Привлечение большего количества людей к легко разделяемой задаче, например, уборке номеров в отеле, уменьшает общую продолжительность задачи (вплоть до того, что дополнительные работники начинают мешать друг другу). Однако другие задачи, в том числе многие специальности в проектах программного обеспечения, менее разделены; Брукс указывает на эту ограниченную делимость на другом примере: хотя одной женщине требуется девять месяцев, чтобы выносить одного ребенка, «девять женщин не могут родить ребенка за один месяц».
Исключения и возможные решения
[ редактировать ]В законе Брукса есть несколько ключевых моментов, которые допускают исключения и открывают двери для возможных решений. [ 4 ] [ 5 ]
Во-первых, следует отметить, что закон Брукса применим только к проектам, которые уже просрочены. [ 6 ] Проекты можно вернуть под контроль (или сохранить под ним), если к ним будут привлечены люди на более раннем этапе процесса. [ 7 ] Также важно определить, действительно ли проект запаздывает или график изначально был слишком оптимистичным. Ошибки планирования являются причиной большого количества просроченных проектов. Корректировка графика – лучший способ установить значимые и надежные сроки завершения проекта. [ 8 ]
Также необходимо учитывать количество, качество и роль людей, привлеченных к проекту. Один из простых способов обойти закон о перерасходе проекта — привлечь больше людей, чем необходимо, таким образом, чтобы дополнительные мощности компенсировали затраты на обучение и коммуникацию. [ 9 ] Хороших программистов или специалистов можно привлечь с меньшими затратами на обучение. [ 10 ] Людей можно добавить для выполнения других задач, связанных с проектом, например, обеспечения качества или документации; учитывая, что задача ясна, время разгона сводится к минимуму. [ 11 ]
Хорошая сегментация помогает минимизировать накладные расходы на общение между членами команды. Меньшие подзадачи решаются небольшой командой, а за системную интеграцию отвечает команда верхнего уровня. Чтобы этот метод работал, в первую очередь необходимо правильно провести сегментацию проблемы; если все сделано неправильно, это может усугубить проблему, а не улучшить ее, затруднив общение между программистами, работающими над частями проблемы, которые на самом деле тесно связаны между собой, даже если в плане проекта указано, что это не так.
Примером сегментации являются шаблоны проектирования , которые упрощают распределение работы, поскольку вся команда может выполнять свою часть работы в рамках, предусмотренных этим шаблоном. Шаблон проектирования определяет правила, которым следуют программисты, упрощает общение за счет использования стандартного языка и обеспечивает согласованность и масштабируемость.
План Бермудских островов , согласно которому большинство разработчиков проекта удаляется («отправляется на Бермудские острова »), а оставшимся оставляются дорабатывать программное обеспечение, был предложен как способ обойти закон Брукса. [ 12 ] [ 13 ]
См. также
[ редактировать ]- Марш смерти (менеджмент проекта)
- Антипаттерн
- Закон Линуса
- Список одноименных законов
- Список философий разработки программного обеспечения
Примечания
[ редактировать ]- ^ Jump up to: а б Фредерик П. Брукс-младший. Мифический человеко-месяц . 1995 [1975]. Аддисон-Уэсли.
- ↑ Мэгги Фокс NBC News, 21 октября 2013 г., Лучше воспользуйтесь телефоном: почему веб-сайт Obamacare такой провальный . По состоянию на 21 октября 2013 г. «И отправка слишком большого количества «лучших и умнейших» тоже может быть неправильным решением, - отмечают эксперты по программному обеспечению. Они часто ссылаются на закон Брукса, который гласит, что привлечение людей к проекту замедляет его».
- ^ Джеймс Тейлор, «Руководство по выживанию для менеджеров проектов», 2-е издание, AMACOM [ нужны разъяснения ] , 2006, ISBN 978-0814408773 , с. 21.
- ^ «Несмотря на закон Брукса, добавление людей в запоздалый проект остается обычным явлением» ... «Я сам много раз проповедовал этот избитый каштан разработки программного обеспечения, но больше не думаю, что это правда». (МакКоннелл, 1999 г.)
- ^ «Проблема в том, что существуют важные исключения, на рассмотрение которых многие люди не тратят время, используя закон Брукса для оправдания чего-либо». (Беркун, 2006)
- ^ «В этих проектах подразумевается, что это применимо только к заключительным этапам проекта. Вопрос в том, как узнать, находитесь ли вы на заключительной стадии проекта?» (МакКоннелл, 1999 г.)
- ^ «Мы обнаружили, что добавление людей в просроченный проект всегда увеличивает его стоимость, но проект не всегда может задерживаться, поскольку может быть достаточный график для их приема, и в проекте может не быть максимального количества персонала. Только при определенной степени последовательные ограничения среди задач проекта приведут к задержке проекта». (Ся, Сюй, Кунг, 1999)
- ^ Поздние хаотичные проекты, скорее всего, будут реализованы намного позже, чем думает руководитель проекта: до завершения проекта осталось не три недели, а шесть месяцев. Идите вперед и добавьте персонал. У вас будет время, чтобы они стали продуктивными. Ваш проект все равно будет позже запланированного, но это не является результатом закона Брукса. В первую очередь это результат недооценки проекта» (МакКоннелл, 1999).
- ^ «Гордон и Лэмб изучили закон Брукса и предположили, что лучший способ оправиться от сдвигающегося графика — это добавить больше людей, чем можно было бы ожидать, и добавить их раньше». (Ся, Сюй, Кунг, 1999)
- ^ «Закон предполагает, что весь добавленный труд равен, что неверно. Учитывая возможность добавления хорошего программиста, который знает кодовую базу и дружит с половиной команды, я бы рассмотрел это». (Беркун, 2006)
- ^ «Печальный, но популярный подход — бросать людей без особых объяснений и позволять каждому самому разобраться. Но если менеджер разъясняет, почему Салли и Руперт присоединяются, и определяет для них хорошие роли при участии команды, они буду настроен на плавный переход». (Беркун, 2006)
- ^ Ши, Том (7 мая 1984 г.). «Разработчики представляют «Vaporware» » . Инфомир . 6 (19). InfoWorld Media Group: 48. ISSN 0199-6649 . Проверено 13 апреля 2010 г.
- ^ Бруно, Эрик Дж. (06 февраля 2023 г.). «Кудрявые скобки №9: Был ли Фред Брукс неправ насчет поздних программных проектов?» . Журнал Ява . Корпорация Оракл.
Ссылки
[ редактировать ]- Стив МакКоннелл. «Закон Брукса отменен», IEEE Software, vol. 16, нет. 6, стр. 6–8, ноябрь/декабрь 1999 г. Также доступно на веб-сайте авторов ( закон Брукса отменен? ).
- Пей Ся, Чи-Дун Сюй, Дэвид К. Кунг. «Возвращение к закону Брукса: подход системной динамики», compsac, стр. 370, Двадцать третья ежегодная Международная конференция по компьютерному программному обеспечению и приложениям, 1999 г.
- Р. Л. Гордон и Дж. К. Лэмб. «Пристальный взгляд на закон Брукса», Datamation, июнь 977 г., стр. 81–86.
- Беркун, Скотт (11 января 2006 г.). «Исключения из закона Брукса» . Проверено 28 июля 2008 г.
- Закон Брукса применим ко многим видам совместной деятельности людей