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