Мифический человеко-месяц, или Как создаются программные системы - [8]

Шрифт
Интервал


Рис. 2.8

В предшествующих рассуждениях предполагалось, что только первая контрольная точка была неверно рассчитана. Если 1 марта сделать консервативное предположение, что весь график был излишне оптимистичен, как отражено на рисунке 2.7, требуется добавить 6 человек к исходной задаче. Расчет воздействия обучения, перераспределения задач и системного тестирования предоставляется сделать читателю в качестве упражнения. Нет сомнений, что при попытке уложиться в срок в итоге получится худший продукт, чем при изменении графика и сохранении первоначальных троих человек без усиления.

Крайне упрощая, сформулируем Закон Брукса:

Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.

Это развенчивает миф о человеко-месяце. Продолжительность осуществления проекта зависит от ограничений, накладываемых последовательностью работ. Максимальное количество разработчиков зависит от числа независимых подзадач. Эти две величины позволяют получить график работ, в котором будет меньше занятых разработчиков и больше месяцев. (Единственная опасность заключается в возможном устаревании продукта.) Нельзя, однако, составить работающие графики, в которых занято больше людей и требуется меньше времени. Программные проекты чаще проваливаются из-за нехватки календарного времени, чем по всем остальным причинам вместе взятым.

Глава 3 Операционная бригада

Эти исследования выявили большие индивидуальные различия в производительности между лучшими и худшими работниками, часто на порядок величин.

САКМАН, ЭРИКСОН И ГРАНТ[1]

На встречах компьютерных специалистов можно постоянно слышать утверждения молодых менеджеров программных проектов, что им предпочтительней небольшие деятельные команды первоклассных специалистов, чем проекты, в которых участвуют сотни программистов, что подразумевает их средний уровень. И всем нам тоже.

Такое наивное представление альтернатив уходит от решения сложной задачи — как создавать большие системы в разумные сроки? Рассмотрим этот вопрос более подробно со всех сторон.

Проблема

Менеджеры программных проектов давно поняли, что хорошие и плохие программисты очень сильно различаются между собой по производительности. Однако реально измеренные величины поразительны. В одном из исследований Сакман (Sackman), Эриксон (Erikson) и Грант (Grant) измеряли производительность труда в группе опытных программистов. Внутри одной лишь этой группы соотношение между лучшими и худшими результатами составило примерно 10:1 по производительности труда и 5:1 по скорости работы программ и требуемой для них памяти! Короче, программист, зарабатывающий 20 тысяч долларов в год, может быть в десять раз продуктивнее программиста, зарабатывающего 10 тысяч долларов. Правда, возможно и обратное. Полученные данные не выявили какой-либо корреляции между стажем работы и производительностью. (Я не уверен, что это всегда справедливо.)

Выше я доказал, что само число разработчиков, действия которых нужно согласовывать, оказывает влияние на стоимость проекта, поскольку значительная часть издержек вызвана необходимостью общения и устранения отрицательных последствий разобщенности (системная отладка). Это также наводит на мысль, что желательно разрабатывать системы возможно меньшим числом людей. Действительно, опыт разработки больших программных систем, как правило, показывает, что подход с позиций грубой силы влечет удорожание, замедленность, неэффективность, а создаваемые в результате системы не являются концептуально целостными. Список, иллюстрирующий это, бесконечен: OS/360, Exec 8, Scop 6600, Multics, TSS, SAGE и другие.

Вывод прост: если над проектом работают 200 человек, включая менеджеров, являющихся наиболее знающими и опытными программистами, увольте 175 бойцов, и пусть менеджеры снова займутся программированием.

Давайте рассмотрим это решение. С одной стороны, ему не удается приблизиться к идеалу небольшой активной команды, в которой, по общему признанию, должно быть не более 10 человек. Поэтому размер бригады предполагает наличие как минимум двух уровней управления, или около пяти менеджеров. Потребуются дополнительны финансовые расходы, сотрудники, место для работы, секретари и операторы машин.

С другой стороны, исходная команда из 200 человек имела численность, недостаточную для создания действительно крупных систем методом грубой силы. Рассмотрим, к примеру, OS/360. Одно время в ее создании было занято больше 1000 человек — программистов, составителей документации, операторов, клерков, секретарей, менеджеров, вспомогательных групп и т.д. С 1963 по 1966 год на ее проектирование, реализацию и написание документации было затрачено, вероятно, около 5000 человеко-лет. Если бы строго соблюдалась пропорция между количеством занятых и продолжительностью работ, нашей предполагаемой команде из двухсот человек потребовалось бы 25 лет, чтобы довести продукт до сегодняшнего уровня!

В этом и состоит изъян идеи маленькой активной команды: для создания по-настоящему крупных систем ей потребуется слишком много времени. Посмотрим, как разработка OS/360 осуществлялась бы маленькой активной командой, допустим, из 10 человек. Положим, что они в семь раз более продуктивны средних программистов (что далеко от истины). Допустим, что уменьшение объема общения благодаря малочисленности команды позволило еще в семь раз повысить производительность. Допустим, что на протяжении всего проекта работает одна и та же команда. Таким образом, 5000/(10*7*7)=10, т.е. работу в 5000 человеко-лет они выполнят за 10 лет. Будет ли продукт представлять интерес через 10 лет после начала разработки или устареет благодаря стремительному развитию программных технологий?


Рекомендуем почитать
Привычка достигать. Как применять дизайн-мышление для достижения целей, которые казались вам невозможными

Как перестать лелеять смутные желания и взяться за дело? Как соединить намерения и действия, разговоры и конкретные дела? Как приучить себя достигать поставленных целей?Бернард Рос, основатель легендарной Stanford d.school, учит, как с помощью инструментов дизайн-мышления сформировать привычку к достижениям, которая позволит легко справляться с жизненными вызовами и реализовывать свои мечты.И неважно, хотите вы прыгнуть с парашютом, изучить несколько иностранных языков, освоить новую профессию, восстановить отношения с близкими людьми, похудеть или запустить крутой стартап, – прочитав его книгу, вы сможете поверить в себя и смело реализовать любые идеи.На русском языке публикуется впервые.


Никаких компромиссов. Беспроигрышные переговоры с экстремально высокими ставками. От топ-переговорщика ФБР

Переговорные техники, описанные Крисом Воссом, родились из сокрушительных поражений ФБР. После трагических событий на ферме Рэнди Уивера в штате Айдахо в 1992 году и в секте «Ветвь Давида» в 1993 году, где в общей сложности погибло почти 100 человек, стало понятно: традиционные методики не работают в экстремальных ситуациях. Поэтому ФБР начало усиленно искать принципиально новые подходы. В результате появились 9 принципов, изложенные автором этой книги, – топ-переговорщиком ФБР с двадцатилетним стажем.Эта книга – потрясающе увлекательное и одновременно простое руководство по любым переговорам.


Alibaba. История мирового восхождения от первого лица

Инсайдерское откровение о том, как один человек построил мировую корпорацию, способную противостоять таким гигантам как Walmart и Amazon.Всего за десять лет Джек Ма, бывший преподаватель английского, основал и построил Alibaba Group, в которую сегодня входят: Alibaba.com, Alibaba Pictures, AliExpress.com, Taobao.com, Tmall.com, Alipay и другие.Джек Ма – Рокфеллер XXI века, акции Alibaba в 2014 году побили рекорды, достигнув 25 млрд долларов.Перед вами история компании и самого Джека, иконы частного предпринимательства и привратника миллионов потребителей от китайского Ханчжоу до тверского Торжка.


Как стать успешным влогером

Хочешь стать видеоблогером, но не знаешь, с чего начать? У тебя уже есть канал, но ты не понимаешь, что нужно сделать, чтобы он стал популярным, как у Zoella? Твой канал известен и ты хочешь быть как PewDiePie, который зарабатывает на своем блоге более 1 млн долларов в месяц? В этой книге блогер и журналист Зои Гриффин раскрывает все секреты ведения успешного видеоблога.


UX-стратегия. Чего хотят пользователи и как им это дать

UX-стратегия, или стратегия опыта взаимодействия (UX, User Experience), лежит на стыке UX-дизайна и бизнес-стратегии. Интернет продолжает предлагать потребителям бесконечный ассортимент цифровых решений. Каждый щелчок, жест или наведение мыши становятся решением, которое принимается пользователем. Пользователь постоянно сталкивается с выбором: покупать или не покупать, одобрить или высмеять, рассказать другим или забыть, завершить или отменить. Вы должны знать, какие возможности следует предлагать и как они используются людьми.


Impact mapping: Как повысить эффективность программных продуктов и проектов по их разработке

Impact Mapping – практическое пособие по картам влияния, простому, но очень эффективному методу разработки программного обеспечения. Он помогает еще на стадии стратегического планирования организовать сотрудничество различных специалистов и в результате создавать эффективные программные продукты.