скачать книгу бесплатно
Искусство управления IT-проектами
Скотт Беркун
Бестселлеры O`Reilly (Питер)
В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.
Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.
Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.
Скотт Беркун
Искусство управления IT-проектами
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги.
© ООО Издательство «Питер», 2014
Все права защищены. Никакая часть электронной версии этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для частного и публичного использования без письменного разрешения владельца авторских прав.
Об авторе
Скотт Беркун изучал информатику, философию и дизайн в университете Карнеги Меллон. Он работал в компании Microsoft с 1994 по 2003 год, занимаясь проектированием и разработкой Windows, MSN, Internet Explorer с 1,0 по 5,0 версию. Скотт ушел из Microsoft в 2003 году, намереваясь заполнить одну из своих книжных полок собственноручно написанными книгами. На данный момент он написал две книги – ту, которую вы сейчас читаете, и «The Myths of Innovation».
В качестве независимого консультанта он продолжает учить управлению проектами, разработке программного обеспечения, методологии творческого мышления и проектированию программных продуктов. Скотт выступает с лекциями, ведет семинары и вносит разнообразие в рутину многочисленных производственных конференций. Его труды получили признание на страницах New York Times и Washington Post.
Если вы хотите пообщаться на форуме, относящемся к тематике данной книги и десятка других эссе, почитать весьма популярный блог автора и получить множество полезной и интересной информации, посетите веб-сайт www.scottberkun.com (http://www.scottberkun.com/).
Благодарности
К новому изданию
Я благодарен команде издательства O’Reilly: Мери Треселер (Mary Treseler), Марло Шифферу (Marlowe Shaeffer), Саре Пейтон (Sara Peyton) и Робу Романо (Rob Romano). Хочу также высказать свое уважение Файсалу Джоудату (Faisal Jawdat), Нейлу Еннсу (Neil Enns), Дэвиду Гоберту (David Gobert), Линде Ли (Linda Lee), Кену Нортону (Ken Norton), Линде Уайтселл (Linda Whitesell) и Стивену Леви (Steven Levy) за долгие часы рецензирования первого издания и предложения по внесению изменений. И большое спасибо всем, кто приобрел первое издание, помог распространить мой труд и дать возможность появиться второму, исправленному изданию.
К предыдущему изданию
Большое спасибо Майку Хэндриксону (Mike Hendrickson), моему редактору в издательстве O’Reilly, за то, что он протянул мне руку помощи. Огромное спасибо Файсалу Джоудату (Faisal Jawdat), Бену Либерману (Ben Lieberman) и Эндрю Стеллману (Andrew Stellman) за их превосходную и развернутую техническую рецензию ранних вариантов книги.
В создании этой книги участвовало множество людей: спасибо ведущему редактору Марло Шиффер (Marlowe Shaeffer) за руководство проектом, Марше Фридман (Marcia Friedman) – за дизайн страниц, Робу Романо (Rob Romano) – за иллюстрации, Джереми Менде (Jeremy Mende) – за дизайн обложки, Эндрю Доулу (Audrey Doyle) – за корректуру, Эллен Троутман-Зэйг (Ellen Troutman-Zaig) – за составление индексного указателя, Гленну Бизигнани (Glenn Bisignani) – за работу в качестве агента по сбыту.
В следующий список включены люди, не пожалевшие своего времени на то, чтобы дать свои отзывы о ранних проектах глав. Большое спасибо Мишель Бреман (Michelle Breman), Пьерро Сьерра (Pierro Sierra), Эрику Бречнеру (Eric Brechner), Ричарду Стокли (Richard Stoakley), Марку Стацмену (Mark Stutzman), Нэйлу Эннзу (Neil Enns), Джейсону Пасу (Jason Pace), Али Валлаю (Aly Valli), Джо Бельфиору (Joe Belfiore), Биллу Стаплесу (Bill Staples), Лауре Джон (Laura John), Хиллел Куперман (Hillel Cooperman), Стасии Скотт (Stacia Scott), Гвэйн Стоддарт (Gwynne Stoddart), Терри Бронсону (Terri Bronson), Барбаре Уилсон (Barbara Wilson), Террел Леффертс (Terrel Lefferts), Майку Глассу (Mike Glass), Хроматик (Chromatic) и Ричарду Грудману (Richard Grudman). Я особенно благодарен Кену Дай (Ken Dye), моему первому менеджеру в компании Microsoft, и Джо Бельфиору (Joe Belfiore); они предоставили мне перерыв в руководстве программами и сформировали мои представления о том, чем должны заниматься хорошие менеджеры и руководители.
Дополнительная персональная благодарность моей жене, Джилл Штуцман (Jill Stutzman), известной также как «медвежонок»; Ричарду Грудману (Richard Grudman); команде Reservoir Dogs, включая Криса МакГи (Chris McGee), Майка Виола (Mike Viola), Дэвида Сандберга (David Sandberg), Джо Мирза (Joe Mirza) и Фила Саймона (Phil Simon), а также Ванессе Лонгакре (Vanessa Longacre); Бобу Баксли (Bob Baxley) и замечательным ребятам из команд Gnostron, Unhinged, и PM-clinic. И вообще я благодарен самой идее существования вселенной; слову папайя; большим лесам с высокими деревьями; людям, которые так и не поумнели, их любопытству и умению радоваться, не утраченным, несмотря на прожитые годы; букве Q и цифре 42. Спасибо за тот багаж сведений, который содержится в системе библиотек King County library и всех библиотек по всему миру. Межбиблиотечный обмен The Interlibrary loan program – это настоящий подарок судьбы. Спасибо всем.
Долгие часы, проведенные за клавиатурой, сопровождались музыкой, не давшей помутиться моему рассудку: White Stripes, Palomar, Aimee Mann, The Clash, Johnny Cash, Social Distortion, Rollins Band, Sonny Rollins, Charles Mingus, Theloneous Monk, Breeders: Last Splash, AudioSlave, MC5, Chris McGee’s greatest mixes, Jack Johnson, Patty Griffin, Akiva, Flogging Molly, Sinatra, Beatles, Bruce Springsteen, PJ Harvey, Radiohead, Ramones, Weezer, Tom Waits, All Girl Summer Fun Band, Best of Belly, Magnetic Fields, Beth Orton, Elliot Smith, and Nick Cave и the Bad Seeds.
При написании книги не пострадал ни один из руководителей проектов. Но, к сожалению, в самом конце работы ушел из жизни наш пес по кличке Буч, пусть он упокоится с миром, 1991–2004. Он согревал своим теплом мои ноги в ту пору, когда рождались многие идеи и страницы этой книги. Хороший пес, Буч, нам тебя будет не хватать.
Введение
С первым изданием этой книги произошло нечто невероятное. Книга разошлась в огромном количестве экземпляров. Она попала в несколько списков бестселлеров, была номинирована на различные премии и привлекла достаточно внимания для того, чтобы ее автор пустился по всему свету распространять изложенные в ней идеи. Потом случилось нечто еще более безумное: потребовалось изменить ее название.
Мы со специалистами издательства O’Reilly пришли к единому мнению, что раз представилась такая возможность, книге нужно придать большую ценность, дав ей вторую жизнь под новым именем. Книга, которая называлась в первом издании «The Art of Project Management», была исправлена, улучшена, обновлена и дополнена, чтобы вы могли читать ее с еще большим удовольствием. Теперь она называется «Making Things Happen». Если вы удивлены сменой названия, то вот некоторые из причин:
1. Министерство внутренней безопасности (The Department of Homeland Security) усмотрело в старом названии террористическую угрозу.
2. Тим О’Рейлли (Tim O’Reilly) понял, что его медиаимперия может мгновенно захватить мировое господство, стоит только ему прибегнуть к уловке со сменой названия и заставить обладателей первой книги купить ее во второй раз.
3. (А сюда вставьте тот повод, который подсказывает ваше собственное воображение.)
Как бы то ни было, книга вышла. Я приложил все усилия, чтобы представить ее улучшенный вариант и не потерпеть такого же фиаско, как Джордж Лукас со своими «Звездными войнами». В общем изменилось следующее:
• Текст переработан с целью добиться большей ясности и краткости. Книга приобрела более четкое изложение, избавившись от оговорок.
• Книга дополнена более чем 120 наводящими на размышления упражнениями, которые помещены в конце каждой главы.
• По многочисленным просьбам, ссылки, помещенные в конце книги, были перенесены в сноски в самом тексте.
• Появилось новое руководство по ведению дискуссий, призванное помочь вам в наборе групп для продолжения обучения.
Если вы еще не знакомы с каким-нибудь из вариантов этой книги, то предисловие поможет вам составить о ней полноценное представление.
После того как два года назад вышло первое издание, я был занят другой работой. Я написал еще одну книгу под названием «The Myths of Innovation», выпустил ряд статей, радиопередач и видеофильмов, продолжая при этом вести популярный блог по творческой деятельности и управлению. Обо всем этом можно прочитать по адресу www.scottberkun.com (http://www.scottberkun.com/).
С приветствиями и наилучшими пожеланиями,
Скотт Беркун
Предисловие
Мне нравится спрашивать «как». Как это работает? Как это сделано? Как это у них получилось? Когда я сталкиваюсь с чем-нибудь интересным, меня переполняют вопросы, в которых присутствует это короткое, но емкое слово. И большинство найденных мною ответов концентрируются на том, как люди проявили свой интеллект и здравый смысл, а не на их знаниях определенных технологий и теорий.
С годами созидательного труда и сопоставления своего личного опыта с опытом других менеджеров, программистов и проектировщиков, я неплохо освоил искусство управления проектами, которое включает в себя подходы к руководству командами, работу над идеями, организацию работы над проектами, выдерживание рабочего графика, улаживание конфликтных ситуаций и достижение конкретных результатов даже перед лицом серьезных испытаний и неблагоприятно складывающейся обстановки.
Несмотря на широкое толкование названия этой книги, большую часть своего рабочего опыта я приобрел в технической области, работая, в частности, в корпорации Microsoft. Я проработал в этой корпорации с 1994 по 2003 год, возглавляя команды специалистов, работающих над такими проектами, как Internet Explorer, Microsoft Windows и MSN. Несколько лет я проработал в группе совершенствования разработок корпорации Microsoft, отвечая за обучение и консультации команд в рамках всей компании, и довольно часто получал приглашения выступить с докладами на публичных конференциях, в корпорациях и университетах. Большинство советов, уроков и историй, приводимых в этой книге, являются плодами этого опыта работы.
Хотя у меня за плечами богатое прошлое разработчика программного обеспечения и веб-приложений, при работе над книгой я расширил область исследований, обратившись к источникам и технологиям, выходящим за рамки разработки и управления. В книге содержится много полезных сведений для людей, принадлежащих миру бизнеса. Я убежден, что трудности в организации, руководстве, разработке и производстве имеют много общего, независимо от области деятельности. В процессе изготовления тостеров, строительства небоскребов, производства автомобилей, создания веб-сайтов и программных продуктов во многом приходится сталкиваться с одними и теми же трудностями, и эта книга написана в первую очередь о том, как эти трудности преодолеть.
В отличие от некоторых других книг о руководстве проектами, эту книгу нельзя отнести к описанию какого-нибудь великого учения или заведомо инновационной философии. Вместо этого я сделал ставку на практичность и разнообразие. Проекты превращаются в стоящие вещи при правильной расстановке людей, удачном сочетании их мастерства, точек зрения и примененной тактики руководства, независимо от того, имеются у этих людей какие-нибудь прежние заслуги или нет. На мой взгляд, я выбрал для этой книги наиболее разумную структуру, позволяющую сконцентрировать внимание на ключевых ситуациях, и предоставить советы, как наилучшим образом с ними справиться. Основная ставка была сделана на подбор нужных тем и выдачу дельных советов, именно этому отдано предпочтение над всеми остальными соображениями. Надеюсь, что вы согласитесь с тем, что я сделал правильный выбор.
Для кого предназначена эта книга
Чтобы понять, нужна ли вам эта книга, я предлагаю открыть оглавление, выбрать интересующую вас тему и бегло просмотреть все, что я по этому поводу написал. Сам я не особо доверяю предисловиям и вам не советую, в них редко передается колорит всей остальной книги. Но без них все равно не обойтись.
Наибольшую ценность книга может представлять для тех людей, кто относит себя к одной или нескольким из следующих категорий:
Опытные менеджеры и руководители команд. Эта книга подойдет всем, кто играет руководящую роль в разработке проектов любой направленности. Хотя в книге приводятся примеры, связанные с разработкой программного обеспечения, многие понятия легко найдут применение и в других областях деятельности. Если вы официально возглавляете команду или просто являетесь одним из ее самых опытных специалистов и некоторые затрагиваемые темы могут быть вам до боли знакомы, то непосредственный подход, выбранный в книге, поможет прояснить и уточнить ваши взгляды. Даже если вы не сможете согласиться с расставленными мною акцентами, то получите четкие позиции для выработки своей собственной точки зрения.
Свежеиспеченные менеджеры и руководители команд. Взглянув на темы, перечисленные в оглавлении, вы обнаружите основательный обзор всего, чем обычно занимаются менеджеры и руководители проектов. В каждой главе освещаются типовые ошибки, которые допускаются даже опытными специалистами, а также объясняются причины их возникновения и тактические приемы, помогающие их избежать. Книга дает широкое представление о возложенных на вас новых обязанностях и наиболее разумных действиях, позволяющих с ними справиться. Поскольку большинство глав охватывают довольно обширные темы, в них зачастую приводятся аннотированные ссылки на более подробные источники.
Простые программисты и тестировщики, а также другие участники разработки проектов. Эта книга позволит вам лучше разобраться в том, во что вы вкладываете свои усилия и какими методами вы можете воспользоваться, чтобы эффективно выполнять свою работу. Если вы когда-либо задавались вопросом, почему проекты так часто меняют направления или почему создается впечатление, что ими плохо управляют, эта книга поможет понять причины происходящего и способы оздоровления ситуации. По крайней мере, чтение этой книги поможет повысить шансы на то, что характер вашей работы изменится (и вы по мере ее выполнения станете лучше разбираться в ситуации). Ну, а если вы со временем рассчитываете возглавить команду, то эта книга поможет вам выяснить, на что это будет похоже в действительности и насколько вы подходите для такого рода деятельности.
Студенты, изучающие вопросы управления предприятиями, конструирования или разработки программного обеспечения. Я употребил термин студенты в широком смысле этого слова: если вы испытываете личный интерес к этой тематике или всерьез изучаете эти вопросы, эта книга должна привлечь ваше внимание. В отличие от учебников, освещающих подобные темы, данная книга сконцентрирована в основном на изложении различных фактов и ситуаций. В ней приводятся реальные события и раскрывается жизненный опыт, что, собственно, и закладывается в основу уроков и тактических приемов, а никак не наоборот. Я намеренно избегаю проведения параллелей между различными учебными предметами, поскольку по своему опыту знаю, что подобные сопоставления не только не помогают в разработке проектов, но и ничего не дают для осмысления реально создающейся обстановки (нашей вселенной не свойственно делиться на направления, подобно университетским наукам). Вместо этого в книге сочетаются теория бизнеса, философия, тактика управления, процессы проектирования и разработка программного обеспечения в той мере, которая необходима для выработки советов по освещаемой тематике.
Предположения о вас, читатель, придерживаясь которых я работал над этой книгой
Вы достаточно разумный человек. Полагаю, что при правильно подобранном и достаточно неплохо изложенном материале глав у вас не возникнет потребности в моем участии, чтобы провести время за постепенным выстраиванием сложных информационных конструкций. А я лучше буду почивать на лаврах. Полагаю, что вы для меня – равноценный партнер, возможно, с меньшим или с большим или с несколько отличным от моего опытом работы, который просто зашел ко мне за советом.
Вы достаточно любопытны и прагматичны. Я использую примеры из многих дисциплин, предполагая, что для вас будут полезны уроки, далекие от разработки программных продуктов и веб-приложений. Они не будут мешать общему повествованию, но для пытливых умов указатели на их источники будут иногда появляться в виде простых сносок. Я предполагаю, что вы стремитесь к обучению, открыты для восприятия различных идей и сможете оценить вполне обоснованные мнения, даже если вы их не разделяете.
Вы не любите непонятных выражений или пространных теорий. Я не думаю, что заумные выражения и пространные теории способствуют обучению и восприятию новой информации. Я стараюсь избегать их применения, за исключением тех случаев, когда они прокладывают дорогу к ценной информации, которая пригодится чуть позже.
Вы умеете с иронией относиться к себе самому, к программному обеспечению или к менеджменту. Разработка программного обеспечения и управление проектами могут навеять тоску. Несмотря на то что этой книге не уготована роль веселых комиксов (хотя книга, посвященная разработке программного обеспечения, будь ее автором Марк Твен или Дэвид Седарис, наверняка имела бы успех), я не прочь отпустить шутку-другую по поводу того, что случалось со мной (или с кем-нибудь другим), или привести примеры, расставляющие акценты в шутливой форме.
Как нужно читать эту книгу
Если что-то вам покажется скучным или найдутся отвлеченные, на ваш взгляд, примеры, можете пропустить это место и читать дальше. Я написал эту книгу с расчетом на тех, кто бегло просматривает содержимое или, столкнувшись с определенной проблемой, нуждается в немедленном совете. Ее главы вполне самодостаточны, особенно те, в которых раскрывается человеческая натура (главы с 8 по 13 и глава 16). Тем не менее последовательное чтение тоже имеет свои преимущества, поскольку некоторые понятия зиждутся на ранее упомянутых, а сама книга примерно придерживается хронологии разработки большинства проектов. В первой главе рассматриваются самые широкие понятия, и она имеет более фундаментальный оттенок, чем все остальные. Если вы задаетесь вопросом, зачем проявлять интерес к руководству проектами или что об этом говорили знаменитости, то эта глава заслуживает внимания. Если же она с самого начала вам не приглянется, я настоятельно рекомендую попытаться перейти к чтению второй главы, прежде чем окончательно отложить книгу в сторону.
Все ссылки и URL-адреса, приведенные в этой книге, а также дополнительные замечания и комментарии находятся в сети по адресу www.makingthingshappen.org (http://www.makingthingshappen.org/). Если вас заинтересует обсуждение этой книги, обратитесь к приложению, расположенному в самом конце. Там перечислены имеющиеся дискуссионные группы и дан совет, как открыть свою собственную группу.
А теперь, поскольку у вас хватило мудрости и терпения прочитать это предисловие до конца, я смею предположить, что вы по инерции прочитаете все, что есть в этой книге (номера страниц, сноски и т. п.), и, не снижая скорости, пойдете дальше.
Глава 1. Краткая история управления проектами (и почему ей стоит уделить внимание)
Во многих организациях должность человека, возглавляющего проект, не называется «Руководитель проекта». И это правильно. Каждый в своей повседневной работе управляет проектом, независимо от того, работает ли он в одиночку или возглавляет команду. На данный момент эти различия не существенны. Я стремлюсь уловить то, что приводит проекты к успеху, и как люди, возглавляющие успешные проекты, этого добиваются. Для успешных стратегий не требуются определенные иерархии, наименования должностей или методы. Стало быть, если вы работаете над проектом и несете за исход дела хоть какую-то ответственность, то все, что будет изложено далее, имеет к вам непосредственное отношение. А если на вашей визитке написано, что вы руководитель проекта – тем лучше.
Эта книга полезна в трех ипостасях: как сборник отдельных тематических очерков, как единое пространное изложение и как справочник по типовым ситуациям. В каждой главе рассматривается отдельная высокоуровневая задача, предоставляется ее основная структура и предлагается тактика ее успешного выполнения. Но в этой, вводной главе потребовался несколько иной подход: в ней раскрываются три довольно обширные темы, облегчающие понимание всего остального материала, к представлению которых я и хочу перейти.
Первая из них является краткой предысторией проектов и объясняет, почему мы должны изучать славные дела наших предшественников. Вторая представляет собой некоторый подготовительный материал к различным разновидностям управления проектами, включая некоторые заметки на основе моего опыта работы в Microsoft. И третья – это взгляд на те сложные проблемы, которые лежат в основе управления проектами, и на то, как их можно преодолеть. Хотя эти положения пригодятся несколько позже, но для того чтобы разобраться в материалах следующих глав, они, в принципе, не нужны. И если вам покажется, что в этой первой главе слишком обширный подход к изложению информации, можете запросто перейти к чтению второй главы и к основному содержанию этой книги.
Использование исторического опыта
Как идея руководство проектами имеет долгую предысторию. Если задуматься обо всем, что было создано за всю историю цивилизованного мира, наберется несколько тысячелетий опыта реализации проектов, из которого можно извлечь уроки. Можно провести пунктирную линию от современных разработчиков программного обеспечения через века к строителям египетских пирамид или к архитекторам римских акведуков. Соответственно своим эпохам руководители проектов выполняли сходные роли по применению технологий для решения характерных для своего времени проблем. Даже сегодня, когда большинство специалистов пытаются совершенствовать методы управления разработкой программ и веб-приложений, они редко обращают внимание на уроки, извлеченные из прошлого. Тот отрезок времени, который используется нами в качестве области обзора полезных знаний, слишком приближен к текущему дню.
Вся история инженерных проектов свидетельствует о том, что многие из них обладают четко обозначенными общими чертами. У них есть технические требования, проектные решения и ограничения. Они зависят от средств общения, принятия решений и сочетания творческого и логического мышления. Зачастую в проектах фигурирует рабочий график, бюджет и заказчик. Наиболее важной и основной задачей проектов является объединение усилий разных людей в единое, согласованное целое, приносящее пользу другим людям или заказчикам. Из чего бы ни был построен проект, из кода HTML, C++ или стали и бетона, существует незыблемый, основной набор понятий, разделяемый большинством проектов.
Проявляя любопытство к самым эффективным способам ведения разработки программных продуктов и веб-приложений, я всерьез заинтересовался этими основами. Я изучил другие области, чтобы посмотреть, как в них решаются основные проблемы, присущие их проектам, и удивился тому, как были разработаны и реализованы такие проекты, как космический телескоп «Хаббл» и самолет «Боинг-777». Можно ли воспользоваться чем-нибудь из принадлежащей им совокупности процессов составления технических заданий и планирования? Или же, если взять сооружение небоскреба компании «Крайслер» в Нью-Йорке и храма Парфенон в Афинах, неужели ведущие этих проектов планировали и рассчитывали свои конструкции точно так же, как это делают мои программисты? В чем состояли интересные различия и что можно получить в результате их изучения?
А как насчет редакторов газет, осуществляющих организацию и планирование ежедневных информационных выпусков? Они занялись производством мультимедийной продукции (изображений и текста) задолго до первых задумок, касающихся веб-публикаций. А как насчет художественных фильмов? Запуска Апполона-13? Изучая эти вопросы, я получил возможность взглянуть на то, как мне приступить к руководству проектами, используя новый стиль работы.
Но проводимые мной исследования не всегда давали вполне очевидные ответы. Я не мог обещать ускорения поставок или проведения более качественного планирования благодаря следованию советам этой книги, на выработку которых повлияли данные информационные источники. Но я точно знаю, что, посмотрев на все, что делается в других областях и вернувшись в мир программного обеспечения, я взглянул на все, что я делаю и чем пользуюсь, совершенно другими глазами. Передо мной открылись такие возможности внесения изменений, о которых я раньше и не задумывался. В целом я понял, что многие полезные подходы и сравнения я нашел в тех местах, которые никогда не упоминались за весь мой курс изучения информатики в университете. Они никогда не обсуждались на конференциях технического отделения и о них не упоминалось в тематических журналах.
Ключевые уроки из моего экскурса в прошлое можно свести к трем моментам.
1. Управление проектами и разработка программного обеспечения не являются неким искусством для посвященных. Любая современная инженерно-техническая работа является еще одной страничкой в длинной истории создания материальных ценностей. Технологии и навыки могут меняться, но многие основные проблемы, затрудняющие разработку и управление, остаются прежними. Практически все, будь то языки программирования или методологии разработки, обладает в известной степени уникальностью, но в то же время является производным от чего-либо другого. Если хочется извлечь как можно больше ценных знаний из прошлого, нужно настроиться на открытое исследование обеих сторон – как уникальной, так и эволюционной – в сравнении со всем, что этому предшествовало.
2. Чем проще ваше представление о том, чем вы занимаетесь, тем с большей энергией и целеустремленностью вы будете работать. Если сохранять простое представление о том, что мы делаем, то можно найти полезные сопоставления с другими способами создания вещей, которые существуют в окружающем нас мире. Перед вами откроется больше примеров и уроков из истории и современного производства, из которых можно будет что-нибудь позаимствовать, с чем-то провести сравнения или сопоставления. Это созвучно понятию, определяемому японским словом шошин (shoshin) – сознание начинающего[1 - Сознание начинающего является начальным понятием дзен-буддизма. В канонической притче фигурирует пустая чаша: если сконцентрироваться на том, чем заполнена ваша чаша, в ней никогда не будет места для новых знаний. См. книгу Сюнрю Судзуки (Shunryu Suzuki) «Zen Mind, Beginner’s Mind» (Weatherhill, 1972).] или открытое восприятие – основной части многих дисциплин боевых искусств. Любопытство и открытость – вот что предопределяет возможности развития, и для поддержания этого состояния требуется определенная практика. Чтобы сохранить способность обучаться чему-то новому, мы должны избегать искушения обрести узкий и непоколебимый взгляд на то, чем занимаемся.
3. Просто – отнюдь не означает легко. Лучшие атлеты, писатели, программисты и менеджеры стремились быть среди тех, кто всегда рассматривает свою деятельность как простую по сути, но в то же время и сложную. Следует помнить, что понятие простоты не является эквивалентом легкости. К примеру, что сложного в том, чтобы пробежать марафонскую дистанцию. Побежал – и не останавливайся, пока не пробежишь 42 км 195 м. Казалось бы, чего уж проще-то? Тот факт, что это нелегко, не опровергает простоты процесса. Возглавлять и управлять тоже нелегко, но природа этих процессов – направлять все в нужное русло на достижение намеченной цели – по своей сути проста.
Ссылки на эти понятия будут встречаться во многих главах. Поэтому, если я буду использовать ссылки, выходящие за стереотипные границы вопросов разработки программного обеспечения, то надеюсь, вы поймете почему. И когда я буду подводить вас к мысли, что принятие решений и составление календарных планов – это простые функции управления, мой расчет будет строиться на том, что вы никоим образом не посчитаете эти функции легкими в осуществлении.
Нужно учиться на ошибках
«Люди, уникальность которых [среди животных] заключается в способности учиться на чужом опыте, также отличаются отсутствием склонности к подобному обучению».
Дуглас Адамс (Douglas Adams)
При изучении истории разработки проектов возникает один простой вопрос: почему кто бы то ни было охотно страдает от ошибок и разочарований, которых можно было бы избежать? Если перед нами открыта как древняя, так и современная история работы над проектами и нам платят за то, чтобы мы совершали разумные поступки, независимо от того, откуда мы черпаем вдохновение, почему поощрения за извлечение уроков истории столь редко проявляются со стороны организаций? Хотя проекты завершаются или закрываются (а ведь многие проекты по разработке именно так и заканчиваются[2 - Об этом свидетельствует отчет «CHAOS Report» (The Standish Group) – документ о бюджете, календарном плане и общих провалах проектов разработки программного обеспечения. Публикуется по адресу http://standishgroup.com/sample_research/ (http://standishgroup.com/sample_research/).]) ежедневно, практически ничего не делается для изучения причин произошедшего. Создается впечатление, что менеджеры большинства организаций крайне редко поощряют людей за поиски сведений в этом направлении. Возможно, в этом проявляется страх перед тем, что будет найдено (и страх перед ответственностью за это). А может быть это просто отсутствие интереса с чьей-либо стороны к анализу неприятных или печальных событий, в то время как время вместо этого может быть потрачено на продвижение к следующему, новому изделию.
В книге Генри Петроски (Henry Petroski) «To Engineer Is Human: The Role of Failure in Successful Design» (Vintage Books, 1992) автор описывает множество прорывов в разработках, происходивших благодаря провалам. В частности, такое случается из-за того, что провалы заставляют нас пристальнее к чему-нибудь приглядываться. Они требуют от нас пересмотра подзабытых предположений (трудно притворяться, что все в порядке, когда прототип горит ярким пламенем). Как говорил Карл Поппер (Karl Popper[3 - Карл Поппер был одним из видных философов ХХ века. (См. http://en.wikipedia.org/wiki/Karl_Popper (http://en.wikipedia.org/wiki/Karl_Popper)).]), есть только два вида теорий: неправильные и несовершенные. Без провалов мы самонадеянно забываем, что наше понимание вещей не настолько совершенно, насколько мы думаем.
Вся хитрость в том, что следует как можно больше учиться на ошибках других. Мы должны использовать их горький опыт, чтобы воспользоваться им в будущем. Хотя внешние детали неудач могут иметь от проекта к проекту существенные отличия, основные причины или действия команды, приведшие к ним, могут быть полностью перенесены (и обойдены). Даже в наших собственных проектах мы должны избегать привычки устраняться и прятаться от неудач. Вместо этого их нужно рассматривать как возможность чему-нибудь научиться. Какие факторы содействовали их возникновению? Какие из этих факторов могут быть легко минимизированы или устранены? Согласно высказываниям Петроски, самым мощным источником прогресса, которым мы располагаем, являются истинные знания, полученные из настоящих провалов, если, конечно у нас есть мужество тщательно исследовать случившееся.
Возможно, именно поэтому компания «Боинг», одна из крупнейших фирм по разработке и производству авиационной техники, ведет черную книгу уроков, извлеченных из конструкторских и инженерных просчетов.[4 - Из книги Джеймса Чайлза (James R. Chiles) «Inviting Disaster: Lessons from the Edge of Technology» (HarperBusiness, 2002).] Боинг ведет эту документацию со дня основания компании и использует ее для помощи современным конструкторам в извлечении уроков из прошлого. Любая организация, организовавшая подобную практику, не только повысит свои шансы на осуществление успешных проектов, но также поможет создать среду, в которой можно будет открыто обсуждать промахи и противостоять им, вместо того чтобы не признавать их существования и прятаться от них. Пожалуй, разработчикам программного обеспечения неплохо было бы завести свою собственную черную книгу.
Веб-разработка, кухни и пункты первой помощи
Проблема исторических примеров в том, что они не всегда соотносятся с современностью. Порой нелегко воспользоваться уроками спустя десятилетия и доказать сопоставимость каких-то вещей, которые кажутся столь непохожими на то, как это делается сегодня. В качестве альтернативы можно проводить сравнения с интересными разновидностями современных проектов. Хотя такие проекты не обладают солидностью, подкрепленной предысторией подобных разработок, зато они дают доступ к опыту и наблюдению из первых рук. Зачастую именно такое, непосредственное наблюдение является единственным способом получения достаточной информации для наведения мостов между разнообразными идеями.
К примеру, я знаю одного веб-разработчика, который искренне верит в то, что его работа не похожа ни на какую другую за всю мировую историю. Он считает, что его проект и управление задачами непохожи ни на что из ранее существовавшего, поскольку в процессе веб-разработки он должен принимать сложные инженерные решения, связанные с проектированием и согласованием, а также проверкой изменений буквально в течение нескольких часов или даже минут, а потом публиковать результаты своей работы во Всемирной сети. Он с гордостью перечисляет технологии, которыми овладел, – CSS, XHTML, Flash, Java, – утверждая, что каких-нибудь 50 лет назад они могли бы озадачить самые светлые умы человечества. Я уверен, что вам тоже попадались подобные люди. А может быть и у вас складывались ситуации, когда казалось, что еще никто и никогда не решал такие сложные проблемы.
Я предложил бы этому разработчику пройти как-нибудь в разгар рабочего дня на кухню его любимого кафе. Побывать на кухне интересно по многим причинам (почитайте замечательную книгу Энтони Бурдэйна (Anthony Bourdain) «Kitchen Confidential» (Ecco, 2001), но мое внимание привлекла производительность работы. Когда впервые сталкиваешься с такой оперативностью управления и скоординированностью действий команды, какие бывают в час пик на профессиональной кухне, начинаешь по-другому относиться к сложности собственной работы. Повара зачастую просто жонглируют сковородками, на которых жарятся блюда из разных заказов, находящиеся в разной степени готовности, и протискиваются между плитами, расположенными в противоположных концах кухни, а официанты тем временем носятся туда-сюда, сообщая о все новых и новых запросах и капризах посетителей.
И все это происходит в небольших, тесных помещениях, в тридцатиградусную жару при слепящем дневном освещении. И неважно, сколько заказов уносят каждую секунду, новые поступают с неменьшей скоростью. Иногда заказы возвращают назад или, как это бывает и с проектами по разработке программ, клиенты в последнюю минуту просят что-нибудь изменить (за первым столиком не переносят лактозу, а за вторым требуют в придачу соуса и т. п.). Наблюдать за интенсивной работой большой кухни – фантастическое зрелище. На первый взгляд работа носит абсолютно хаотичный характер, но в действительности она настолько интенсивна и точна, что многие команды разработчиков на такое и близко не способны.
Шеф-повара и их рядовые коллеги – это руководители кулинарных проектов или, как их называет Бурдэйн, авиадиспетчеры (кстати, это еще одна профессия, к которой стоит присмотреться). Несмотря на то что работа кухонной команды менее масштабна и заметна, чем работа руководителей команд разработчиков программ, но по ежедневной интенсивности они не поддаются никакому сравнению. Если не верите, то когда пойдете на обед, попросите официанта провести вас на кухню. Он, конечно, может отказаться, но если получится, то вы не пожалеете. (В некоторых модных ресторанах и барах есть открытые кухни. Попав в такой ресторан, сядьте поближе к кухне и понаблюдайте за кем-нибудь несколько минут. Посмотрите, как размещаются, отслеживаются, выполняются и доставляются заказы. Если попасть туда в часы пик, то вы взглянете на выявление, отслеживание и устранение ошибок совсем другими глазами.)
Другой не менее интересный наглядный урок управления проектами можно получить в приемных покоях скорой помощи. Мне приходилось смотреть по каналу Discovery и слышать по радио истории о том, как небольшие команды опытных врачей, медсестер и других специалистов работают вместе как проектная команда, которая справляется с разнообразными и не всегда обычными медицинскими случаями, встречающимися у доставляемых пациентов. Неудивительно, что представители именно этой профессии изобрели процесс классификации, вошедший в практику разработчиков программных проектов для распределения по приоритетам проблем и недостатков (этот вопрос обсуждается в главе 15).
Рис. 1.1. Теоретически во многих отраслях протекают схожие рабочие процессы. Всегда отводится время на планирование, выполнение и доработку (тем не менее не следует обращаться за медицинской помощью на кухню и требовать обед в пункте первой медицинской помощи)
Мир медицины, особенно травматология, являет собой превосходный образец командной работы, принятия решений в критических ситуациях и результатов реализации проектов, которые ежедневно влияют на судьбы многих людей (на рис. 1.1 дается примерное сравнение этой и других областей работы). Атул Гаванде (Atul Gawande) в своей превосходной книге «Complications: A Surgeon’s Notes on an Imperfect Science» (Picador USA, 2003) написал следующее:
Мы рассматриваем медицину как хорошо организованную область применения знаний и навыков. Но это не так. Эта область науки далека от совершенства, в ней постоянно меняются представления, используется неточная информация, допускаются ошибки персонала, и все это на грани жизни и смерти. Можно ли назвать наукой все, что мы делаем? Да, конечно, но это еще и навыки, интуиция, а иногда и просто догадки на основе имеющегося опыта. Промежуток между тем, что мы знаем и к чему стремимся, сохраняется. И этот промежуток значительно усложняет нашу работу.
Это высказывание, как и многие другие в весьма поучительной книге Гаванде, справедливо и в отношении разработки программного обеспечения. Фред Брукс (Fred Brooks) в классической книге «The Mythical Man-Month» (Мифический человеко-месяц), касающейся разработки программ, проводит схожие параллели между командами хирургов и программистов. Несмотря на то что при разработке веб-сайтов или баз данных жизни мало что угрожает, люди из разных команд могут столкнуться с многими схожими ситуациями и сложностями.
Роль управления проектами
Руководство проектами может быть профессией, работой, ролью или обыкновенным действием. В некоторых компаниях есть руководители проектов, чья работа заключается в наблюдении за всеми проектами, в разработке которых участвует двести человек. В других компаниях эта должность относится к категории рядовых младших менеджеров, чья зона ответственности – небольшой участок крупного проекта. В зависимости от структуры организации, сложившейся корпоративной культуры и целей проекта, управление проектами может быть как неформальной ролью («когда понадобится, то этим кто-нибудь займется»), так и четко выраженной («Винсент, Клод и Рафаэль – полноценные руководители проектов»).
В этой книге я буду называть руководителями проектов в первую очередь тех, кто возглавляет проекты и занимается управленческой деятельности. Под деятельностью по управлению проектами я буду подразумевать работу по управлению командой при уточнении деталей проекта (общее планирование, составление календарного плана, выработка требований), проведении проекта через этапы проектирования и разработки (ведение переговоров, принятие решений, выработка стратегии миттельшпиля), доведении проекта до завершения (лидерство, разрешение критических ситуаций и проведение стратегии эндшпиля).
Если в вашей организации структуризация этой разновидности работы носит менее формальный характер, то считайте, что руководитель проекта – это «человек, выполняющий задачи руководства проектом, хотя это для него не является основной работой», или «человек, думающий о проекте в целом». Мне встречалось множество различных способов распределения этой работы в командах, и мои советы в этой книге в большинстве своем подойдут при любом варианте такого распределения. В книге не придается особого значения наименованиям должностей и прочим формальностям, в ней больше говорится о том, как воплощать задуманное. Но чтобы не усложнять повествование, я буду использовать словосочетание руководитель проектов.
Иногда все прекрасно обходятся и без специально назначенного руководителя проекта. Программисты и их начальники составляют графики и технические планы (если таковые предусмотрены), а бизнес-аналитик или специалист по рынку проводит работы по планированию или составлению технических требований. Все остальные обязанности, которые можно определить как руководство проектом, просто распределяются по специалистам команды. Возможно, люди в команду нанимались с прицелом не только на создание программного кода. И они не стали бы сторониться начального планирования, разработки пользовательского интерфейса или выработки бизнес-стратегии. За счет этого можно добиться существенной оптимизации работы. При условии, что все готовы разделить ответственность за общее дело и разделить обязанности, которые выполнял бы в команде руководитель проекта, то команде понадобится на одного человека меньше. Что может быть лучше простоты и эффективности.
Но бывает и так, что в отсутствие руководителя проекта работа разваливается. Без человека, чья основная работа заключается в сплочении усилий всей команды, индивидуальные предвзятости и интересы могут сбить команду с нужного направления. Вокруг инженерных и деловых ролей могут сложиться соперничающие группировки, тормозящие прогресс и расстраивающие работу всех участников. Следует учесть, что в пункте экстренной медицинской помощи решение о курсе лечения пациента берет на себя один врач. Это определяет многие последующие решения и действия каждого специалиста команды травматологов. Без такого рода четких полномочий по решению проблем управления проектами команды разработчиков могут столкнуться с неприятностями. Если нет ответственного за установку очередности оказания помощи или нет человека, назначенного для отслеживания выполнения календарного плана и выявления проблем, то эти задачи могут занять опасную позицию за индивидуальными действиями по созданию программного кода.
Хотя я считаю, что многие профессиональные программисты неплохо разбираются в управлении проектами, чтобы самостоятельно справиться с задачами руководителя, тем не менее они понимают особую ценность человека, специально выделенного для выполнения этой роли.