Кризис наступил, когда программные продукты стали слишком большими и трудоемкими, чтобы с ними мог справиться один человек. Операционная система MS-DOS 1.0 была в основном придумана, написана, компилирована и отлажена одним автором — Тимом Патерсоном. По мере того как программные продукты становились более сложными, появилась необходимость разделить pa6oту над ними между двумя и более разработчиками. Это проще сказать, чем сделать. Фрагменты программы, написанные разными программистами, не удастся объединить, если только они изначально не были созданы для этой цели. Необходим постоянный диалог между разработчиками и поиск способов разрешения разногласий, которые неизбежны, когда определяется более «легкий» способ выполнения работы. «Коммуникабельный» и «легкий в общении» — это не те личностные черты, которые вы часто обнаружите у программистов-разработчиков. Такие люди не склонны к общению — обычно они пишут программы в одиночестве и по ночам. Это было большой проблемой.
Одним из людей, которых позвали, чтобы они помогли решить эту проблему, был Чарльз Симоньи. Симоньи — знаменитый ученый-специалист в области компьютеров, который предпочел работать в сфере бизнеса, что иногда выглядит в глазах академических ученых подозрительно. Работая в компании Xerox PARC, Симоньи написал первую полнофункциональную программу — текстовый редактор. Его раздражало отсутствие интереса корпорации Xerox к маркетингу операционной среды Windows и компьютерной мыши, которые были изобретены в его лаборатории. Во время деловой поездки в Сиэтл Симоньи без предварительной договоренности нанес визит в Microsoft. Тогда процедура приема на работу в этой корпорации была проще, чем сейчас. Один из «чиновников» (это был Стив Боллмер), просмотрев резюме Симоньи, решил, что ему стоит встретиться с Биллом. Гейтс в это время был на совещании и к тому времени, когда он освободился, Симоньи уже было пора в аэропорт, поэтому Гейтс поехал туда вместе с ним, чтобы побеседовать по дороге. У них сразу установились взаимопонимание и личная симпатия. Вскоре Симоньи получил приглашение работать в Microsoft и принял его.
Решением, которое Симоньи предложил для проблемы сотрудничества нескольких разработчиков, было учредить новую должность, которую назвали «мастер-программист». Она чем-то напоминала средневековых ремесленников: именно на «мастере» лежала полная ответственность за разработку дизайна программы и ее написание. Под руководством мастера должна была работать команда ассистентов-«подмастерьев». Их задачей была отладка и оптимизация программы.
В этом был смысл, но возникли сложности из-за типичных личностных особенностей разработчиков программ. Каждый из них хотел быть именно мастером-программистом. Никто не хотел стать «крепостным», как прозвали ассистентов. Поскольку для каждого программного продукта назначался только один мастер-программист (именно это было основным смыслом этой должности), большинство программистов должны были выполнять черную работу.
Благодаря известной тенденции Microsoft все доводить до крайности, идея мастера-программиста очень быстро себя исчерпала. Программные продукты скоро стали такими объемными, что с ними уже не мог в одиночку управиться даже мастер-программист. Была еще одна более фундаментальная проблема: мастер-программист не всегда оказывался способным разработать удачный дизайн программного продукта. Поскольку программы становились все более изощренными, становилось все более важным приспособить их к потребностям клиентов, а эта задача существенно отличалась от собственно программирования. Для одного человека одновременно решать обе эти задачи было непосильным трудом. Конечно, случается, что отличный корректор одновременно оказывается и талантливым драматургом, но все же если вы наняли человека на работу для выполнения одного круга обязанностей, а затем поручаете ему что-то совсем другое — вас, вероятно, будет ждать разочарование.
Титул «мастер-программист» никогда широко не использовался — уж слишком патриархально он звучал даже для компании, переполненной «визжащими доминантными мужскими особями», поэтому название изменили на более нейтральное — «менеджер программы». Теперь именно оно стало стандартным для всей отрасли программного обеспечения, но сегодняшним пониманием обязанностей менеджеров программ мы в основном обязаны создателю электронных таблиц Excel Джейбу Блюменталю.