Эд САЛЛИВАН
ВРЕМЯ — ДЕНЬГИ
Создание команды разработчиков, программного обеспечения
Посвящается Джейн, Мэту и Ханне — тем, кого я люблю и буду любить всегда;
и всем сотрудникам, работавшим и работающим в NuMega: без вас эта книга никогда не появилась бы на свет.
Предисловие
Предупреждаю: эта книга особенная. Управлению проектами посвящено множество книг. Здесь же речь пойдёт о реальных приёмах создания и выпуска программ, причём особое внимание уделяется ситуации начинающей организации. Своевременный выпуск продукта — единственное, что имеет значение в этом бизнесе, поэтому книга сосредоточена на решении этой задачи. Её автор — не просто счастливчик, которому повезло выпустить удачную программу. Под его руководством был выпущен целый ряд замечательных программ, но важнее всего, что он воспитал плеяду менеджеров, повторивших его успех. Ими создано столько программ, сколько большинству организаций даже не снилось. В этой отрасли практически невозможно воспитать менеджера проекта, умеющего успешно работать. Однако Эд многократно справлялся с этой трудной задачей, и в этой книге вы найдёте те методики, которые он передавал своим ученикам.
В разработке ПО управление проектами значит больше, чем в какой-либо другой отрасли, поскольку в наше «время Интернета» всем приходится работать в очень напряжённом темпе. С другой стороны, группы стремятся сэкономить время за счёт управления проектом. В итоге — постоянные срывы графика и куча ошибок в выпускаемых программах. Эта проблема особенно характерна для небольших фирм, спешащих поскорее использовать даже минимальную возможность, чтобы протиснуться на рынок. Такая ситуация не редкость и в компаниях-«мастодонтах», которые в погоне за постоянно ускользающими сроками разработки продукта ведут проекты без нормального управления.
Можно думать, что руководители проекта просто не выдержали сроки выпуска, однако корни проблемы намного глубже. Во всех образовательных учреждениях мира курс информатики даёт очень мало или вовсе не даёт навыков управления проектами.
Поэтому большинству разработчиков приходится заниматься самообразованием или перенимать опыт менеджеров, которые сами с трудом представляют себе этот предмет. Написать код программы — это лишь малая часть любого проекта, но в большинстве компаний этого до сих пор не поймут. К счастью, книга, которую вы держите в руках, даёт представление об остальной, большей части работы; такого материала вы больше нигде не найдёте. Здесь нет теории управления проектами — лишь описание приёмов, сработавших или не сработавших в весьма успешной молодой компании.Нетрудно заметить, что по ходу изложения многократно подчёркивается важность командной работы. Структура большинства компаний представляет собой отдел программирования, отдел тестирования и, возможно, отдел разработки документации, которые со временем превращаются в удельные княжества. Формируется совокупность индивидуумов, собранных для работы над продуктом (я даже не могу назвать её командой в строгом смысле этого слова), подотчётных разным группам с разной структурой и уровнем полномочий. В силу этого большинство компаний с самого начала обречены на неудачу из-за врождённых недостатков организации. Эд создал в NuMega команду в истинном смысле этого слова, где программисты, тестировщики, инженерные психологи и разработчики пользовательской документации были собраны под началом единственного менеджера проекта. Даже когда NuMega разрослась настолько, что пришлось менять организацию в соответствии с традиционной структурой, Эд не отступал от концепции единой команды и отстаивал её в боях с оппонентами. В рамках принятой в NuMega структуры организации, все специалисты, необходимые для создания продукта, приписаны только к этому продукту. Такая структура позволила NuMega справиться с массой искусственных проблем, обычно встающих на пути у других компаний. Её дополнительное преимущество в том, что она позволяет каждому своими глазами видеть, насколько работа других участников проекта важна для выпуска успешного продукта. Это разительно отличалось от стиля отношений, принятого в большинстве компаний, который можно назвать скорее конфронтацией (что особенно характерно для отношений между разработчиками и тестировщиками).