Найти тему
Аджайлишная

Закон Брукса — что это и как работает?

Agile-коуч Лена Гылыжова подкинула мне классную полезняшку — «Закон Брукса». Делюсь! 🤗

Представьте: группа программистов работает над проектом. И что-то как-то.. Ни шатко, ни валко, медленно продвигается, даже задерживается. Значит, надо сделать что?

Тут со стороны часто слышится:

Нанять! Еще! Больше!

Логично, казалось бы. Проекту рук, очевидно, не хватает, так давайте «зальем» его новыми людьми, и вместе — победим! 🥳

И — на самом деле нет. Таким умозаключением вы расстроили Фреда Брукса, который специально на этот случай изобрел закон:

«Добавление дополнительного человеческого ресурса к запаздывающему проекту задержит его выход еще больше».

Ок, закон есть, но почему он так работает?

В эру «до Брукса» работу коллектива действительно частенько рассчитывали, исходя из количества людей — и где-то этот метод работал, например, при копании картошки. Но в программировании такой подход оказывается несостоятельным — он не учитывает внутренние связи в коллективе и время, затраченное на коммуникацию между коллегами. Поэтому в краткосрочной перспективе скорость развития проекта сильно падает: нужно ввести новых людей в строй, распределить задачи — а иные задачи разделению поддаются плохо или не подлежат ему вовсе.

В команде людей, результат работы которых зависит от действий каждого, значительное количество ресурсов уходит на коммуникацию и обеспечение этой самой коммуникации. Количество связей в таком коллективе можно посчитать по формуле (где n — количество людей в команде):

n(n-1)/ 2

Исходя из формулы, получается, что на коллектив из 3х человек приходится 3 связи. Из 4х — уже 6. Из 5х — 10.

И так далее. И чем больше — тем, очевидно, труднее и запутанней.

Этот закон уместен не только в коллективах программистов — а в любой команде, где люди сильно взаимосвязаны.

Что думаете о прочитанном? Согласны?