Agile-коуч Лена Гылыжова подкинула мне классную полезняшку — «Закон Брукса». Делюсь! 🤗
Представьте: группа программистов работает над проектом. И что-то как-то.. Ни шатко, ни валко, медленно продвигается, даже задерживается. Значит, надо сделать что?
Тут со стороны часто слышится:
— Нанять! Еще! Больше!
Логично, казалось бы. Проекту рук, очевидно, не хватает, так давайте «зальем» его новыми людьми, и вместе — победим! 🥳
И — на самом деле нет. Таким умозаключением вы расстроили Фреда Брукса, который специально на этот случай изобрел закон:
«Добавление дополнительного человеческого ресурса к запаздывающему проекту задержит его выход еще больше».
Ок, закон есть, но почему он так работает?
В эру «до Брукса» работу коллектива действительно частенько рассчитывали, исходя из количества людей — и где-то этот метод работал, например, при копании картошки. Но в программировании такой подход оказывается несостоятельным — он не учитывает внутренние связи в коллективе и время, затраченное на коммуникацию между коллегами. Поэтому в краткосрочной перспективе скорость развития проекта сильно падает: нужно ввести новых людей в строй, распределить задачи — а иные задачи разделению поддаются плохо или не подлежат ему вовсе.
В команде людей, результат работы которых зависит от действий каждого, значительное количество ресурсов уходит на коммуникацию и обеспечение этой самой коммуникации. Количество связей в таком коллективе можно посчитать по формуле (где n — количество людей в команде):
n(n-1)/ 2
Исходя из формулы, получается, что на коллектив из 3х человек приходится 3 связи. Из 4х — уже 6. Из 5х — 10.
И так далее. И чем больше — тем, очевидно, труднее и запутанней.
Этот закон уместен не только в коллективах программистов — а в любой команде, где люди сильно взаимосвязаны.
Что думаете о прочитанном? Согласны?