Это первая статья в моей серии статей о разрушении мифов, где заключение не мое. На самом деле, приведенное выше предложение взято из книги под названием «Мифический месяц человека», опубликованной в начале 1970 годов. Ниже вы можете найти скриншот обложки книги, если вам интересно ее посмотреть.
Книга полна противоречивых утверждений, в которые почти невозможно поверить, например, следующее…
Один разработчик может сделать за один месяц то, что два разработчика могут сделать за два месяца.
Подразумевается, что время выполнения проекта увеличивается экспоненциально каждый раз, когда вы удваиваете свои ресурсы. Одним из моих любимых вопросов в книге является следующий.
Если одна женщина может родить ребенка за 9 месяцев, то как быстро могут родить ребенка ДВЕ женщины?
После такой формулировки истина становится до боли очевидной, я полагаю.
Как мы делаем вещи
В Aista мы стараемся изо всех сил следовать урокам, которые преподносит книга. В настоящее время в Aista работают 4 человека: Мохсен управляет и развивает наши кластеры Kubernetes, Ширин — наш основной разработчик фронтенда, я — наш основной разработчик промежуточного программного обеспечения и Hyperlambda, а Мо — немного повсюду, в дополнение к созданию удивительных дизайнов, QA-тестированию и т.д.
1 декабря 2021 года мы начали по-настоящему. 15 августа проект полностью завершен. 9 месяцев от начала до конца, и у нас в команде одна девушка. Ирония не покидает меня.
Когда быстрое становится медленным
Вчера я рассказал своему партнеру о «Мифическом месяце человека». Обычно я объясняю это так: представьте, что у вас есть одна тонна «вещей», которые вы хотите перевезти из пункта А в пункт Б. Если одному человеку требуется 7 дней, чтобы перевезти ваши вещи, очевидно, что это можно сделать за 1 день, если нанять 7 человек. Это то, что наша интуиция говорит нам об управлении ресурсами, и поэтому большинство из нас стремится бросить больше людей на решение поставленной задачи, чтобы решить ее быстрее. Однако при разработке программного обеспечения такие идеи в корне ломаются и больше не применимы.
Причина в том, что разработка программного обеспечения — это когнитивная работа, требующая общения, сотрудничества, планирования и оркестровки. Следовательно, чем больше людей вы добавляете в один и тот же проект, тем больше «накладных расходов по проекту» вы приобретаете, пока вы не достигнете точки, где ничего нельзя сделать, потому что ваши сотрудники тратят все свое время, просто планируя, как все сделать, чтобы не испортить чужую работу в результате выполнения своей собственной работы. Это то, на что я намекал во вчерашней статье на DEV, где я заявил, что Agile — это в основном чушь. У Джеффа Безоса есть «правило двух пицц», которое гласит следующее.
Команда разработчиков программного обеспечения всегда должна иметь возможность комфортно питаться двумя пиццами.
Если он не может накормить всю команду всего двумя пиццами, значит, его команда слишком большая. Это приводит к тому, что команды состоят максимум из 3-5 человек. 5 человек — это, как по мне, слишком много, но ладно, я думаю, что идея двух пицц легко понятна и передаваема, и я могу с ней согласиться.
Не поддавайтесь искушению нанять больше людей
Если у вас есть проект по разработке программного обеспечения, и он запаздывает, пожалуйста, не поддавайтесь искушению нанять больше людей. Это не ускорит ход проекта, скорее наоборот, единственное, чего вы добьетесь, — это замедлите его. В это в принципе трудно поверить, но это было доказано сотни раз, начиная с 1970-х годов, когда Брук написал об этой идее. Ниже приводится точная формулировка слов Брука.
Добавление большего числа разработчиков в и без того поздний проект только делает его более поздним