«Agile-подход к разработке не годится для Yahoo! за исключением, быть может, небольших оперативных проектов, поскольку команды совершенно не занимаются планированием, а члены команд не могут оценить проделанную работу. Им приходится давать указания, что делать».
Это реальное высказывание, которое я неоднократно слышал, когда начинал руководить внедрением agile-подхода в Yahoo!. Люди, которые не понимают концепцию agile-разработки, полагают, что это просто отказ от документации и планирования, лицензия на свободное плавание. На самом деле такое представление предельно далеко от истины.
«Команды совершенно не занимаются планированием». Тот, кто говорит такое, забывает, что agile-команда раз в две недели посвящает полдня составлению перечня задач, которые необходимо выполнить, чтобы представить определенную полезную для пользователя функциональность через две недели. То, что команды распределяют процесс планирования на весь период реализации проекта, воспринимается как отсутствие планирования. Это не так, и agile-команды в Yahoo! создают продукты, которые нравятся нашим менеджерам по продуктам намного больше, чем продукты традиционных команд.
«Члены команд не могут оценить проделанную работу. Им приходится давать указания, что делать». Это классическое заблуждение. Упование на магическую способность менеджера по продукту или руководителя проекта предвидеть, чтó кто-то другой, эксперт в своем деле, может реально создать, самоубийственно для заказчика. Нередко такой подход на деле оборачивается простым соглашательством с нереалистичными целями заказчика. Члены команды при этом вынуждены работать круглые сутки и халтурить. А потом мы удивляемся, почему в нашей отрасли люди так быстро выгорают и почему так низок моральный дух.
Оценка и планирование – темы, по которым мне задают больше всего вопросов, особенно во вновь созданных командах. Простой подход к планированию не только итерации, но и проекта в целом – вещь, прямо скажем, неоценимая. Менеджеров по продукту волнует достижение целевых показателей по выручке и предсказуемое планирование релизов. Команды могут использовать гибкий подход и изменять направление разработки при необходимости, однако очень важно иметь стратегический план, которому они будут следовать. Кому нужно быстрое движение, если вы идете не в том направлении? Освоение искусства оценки сделанного и планирования дальнейших действий – важнейшее условие успеха для тех, кто хочет внедрить agile-подход в своей организации.
Учебный курс Майка по оценке и планированию пользуется наибольшей популярностью при освоении agile-подхода в Yahoo!. Он дает командам профессиональные знания и инструменты, необходимые, чтобы заниматься планированием именно в таком объеме, который требуется для оптимизации результатов. Это и в самом деле работает, если следовать рекомендациям Майка? Да. Эффект от применения agile-подхода в Yahoo! грандиозен. Команды, прошедшие курс Майка, сразу начинают использовать его рекомендации на практике. Мы стали выводить продукты на рынок быстрее, а команды буквально в восторге от agile-подхода.
Почему agile-подход к оценке и планированию более эффективен, чем традиционные методы? Он сконцентрирован на создании стоимости и формировании доверительных отношений между заказчиком и проектными командами. Обеспечение полной прозрачности и информирование об изменениях по мере их появления позволяют заказчику принимать наилучшие решения. На предыдущем месте работы я воочию наблюдал процесс перехода из вечного хаоса в состояние предсказуемости, когда мы действительно стали браться за проекты, которые могли выполнить. Заказчикам не каждый раз нравились наши ответы (им ведь всегда хочется получить продукт уже завтра), однако они как минимум верили, что мы говорим правду, и не чувствовали, что их постоянно водят за нос.
Эта книга предельно честна. В ней не говорится о том, как достичь абсолютной точности оценок. Это была бы напрасная трата сил в стремлении достичь недостижимого. Майк не пытается навязать вам удобные шаблоны, в которых остается только заполнить пробелы. Вместо этого он заставляет вас думать и учиться тому, как подходить к проблемам и успешно решать их. Одинаковых проектов и организаций не бывает, поэтому намного важнее научиться мыслить определенным образом и применять принципы. Майк перенес свой огромный опыт, полученный из реальной практики, и индивидуальный подход на страницы этой книги. Она живая и честная. Она определенно должна стоять в первых строках вашего списка учебной литературы.
Габриэль Бенефилд,директор Agile Product Development Yahoo!
Я выражаю глубокую признательность официальным рецензентам этой книги. Том Поппендик, Стив Токи, Пол Ходжеттс, Майк Сирфос и Престон Смит дали мне полезные отзывы и рекомендации. Благодаря их вкладу книга стала намного лучше. В частности, я хочу поблагодарить Стива и Тома за то, что они не ограничились формальными обязанностями. Стив отметил целый ряд идей и концепций, которые я упустил, и подсказал несколько полезных источников информации. Но главное, он натолкнул меня на то, что стало впоследствии моей мантрой при проведении занятий по оценке и планированию: оценивай размер, определяй срок. Том, пожалуй, потратил на эту книгу больше сил, чем я. Он неустанно подчеркивал важность того, чтобы книга была ориентирована на команду в целом, а не только на руководителя проекта. Именно в разговорах с Томом я понял, что книга по планированию должна быть шире, чем просто ответ на вопрос «Когда мы уже закончим?». В широком контексте создания стоимости для наших организаций дать ответ на этот вопрос нетрудно.
Мой поклон Джону Гудсену из RADSoft. Первоначально мы с Джоном собирались писать эту книгу вместе. Увы, наши календарные графики не позволили сделать этого, однако я благодарен Джону за обсуждения набросков книги.
Одно из величайших благ интернета – возможность показывать книгу другим в процессе работы над ней. Рукопись этой книги висела на моем веб-сайте в течение 20 месяцев, и комментарии и замечания читателей здорово помогли довести ее до ума. Я особенно благодарен Брайану Амброджиано, Кену Ауэру, Саймону Бейкеру, Рэю Боэму, Лесли Боррелл, Кларку Чингу, Лайзе Криспин, Рейчел Дейвис, Майку Дуайеру, Хакану Эрдогмусу, Джону Фаваро, Крису Гарднеру, Джону Джилману, Свену Гортсу, Полу Грю, Сридхару Джайяраману, Анджело Кастроулису, Лайзе Катценмейер, Лассе Коскеле, Митчу Лейси, Патрику Логану, Кенту Макдональду, Эрику Петерсену, Майку Поулену, Дж. Рейзенбергу, Биллу Рамосу, Мэтту Риду, Джорджу Рейлли, Крису Риммеру, Оуэну Роджерсу, Кевину Резерфорду, Дику Шилу, Джеймсу Шилу, Кену Скотту, Карлу Скотланду, Алану Шаллоуэю, Джагадишу Шринивасавадхани, Мишель Слайджер, Карен Смайли, Хьюберту Смитсу, Виктору Сзалвею, Чарли Трейнору, Раджу Вагхрею, Рудигеру Вульфу, Скотту Уорли и Джейсону Йипу.
Я также хотел бы поблагодарить всех, кто принимал участие в проведении моего учебного курса по agile-подходу к оценке и планированию в последние два года, как в компаниях, так и на конференциях. Моя благодарность адресована также всем клиентам, особенно тем, у которых я проводил занятия по оценке и планированию и которые пользуются идеями из этой книги, в том числе таким компаниям, как Farm Credit Systems of America, Fast401k, High Moon Studios, Nielsen Media Research, Sun Microsystems, Ultimate Software, Vision Pace, Yahoo! и Webroot.
Как всегда, с командой издательства Prentice Hall было очень приятно работать. Пол Петралиа и Мишель Хаусли участвовали в проекте от начала до конца. Тиррелл Албо помогла преодолеть некоторые трудности с использованием системы FrameMaker. Я попросил прикрепить ко мне придирчивого редактора, чтобы книга получилась предельно хорошей. Этим редактором оказалась Кэти Симпсон, которая сделала именно то, что мне хотелось. Наконец, Лара Уайсон тщательно контролировала весь процесс превращения рукописи в книгу, которую вы держите в руках. Она без устали отвечала на мои бесконечные вопросы и электронные письма.
Благодарю Боба Мартина за включение этой книги в свою серию. Дядя Боб – один из моих любимых писателей еще с той поры, когда он был редактором журнала C++ Report. Боб сделал для распространения идей agile-подхода в сообществе разработчиков программного обеспечения столько, что попасть в его серию книг – большая честь. Также я хочу поблагодарить Джима Хайсмита из Cutter Consortium и Габриэля Бенефилда из Yahoo! за предисловия. Работа с ними была удовольствием.
Что бы я ни сказал, этого будет мало, чтобы выразить признательность моим близким, создавшим условия для работы над этой книгой. Предполагалось, что значительную часть подготовки рукописи я проделаю во время своих поездок. Однако все сложилось иначе. Лоре, моей жене и партнеру во всех начинаниях, пришлось не покладая рук заниматься моими делами, делами нашей компании и этой книгой. Она многократно читала и перечитывала каждую главу. Без ее помощи я бы не сделал и десятой части того, что мы сделали вместе. Мои чудесные дочери Саванна и Делани настолько привыкли к постоянному уединению своего отца в кабинете, что мое появление стало казаться им странным. Я благодарю их за нежные объятия и поцелуи и за то, что они такие, какие есть.
Эта книга в основном посвящена планированию, под которым я понимаю ответ на вопрос «Что необходимо сделать и к какому сроку?». Однако ответ на него требует ответа на вопросы, связанные с оценкой («Насколько это объемно?») и составлением календарного графика («Когда это должно быть сделано?» и «Сколько будет готово к этому моменту?»).
Книга состоит из семи частей, в ней 23 главы. Каждая глава завершается обобщением ключевых моментов и вопросами для обсуждения. Поскольку оценка и планирование – это виды деятельности, которыми занимается команда в целом, я предполагаю, что книгу будут читать все ее члены, а потом собираться (возможно, раз в неделю) для обсуждения прочитанного и вопросов в конце каждой главы. Учитывая, что agile-подход к разработке программного обеспечения популярен во всем мире, я старался избежать чрезмерной концентрации внимания на США. С этой целью в книге используется универсальное обозначение валюты и денежные суммы выглядят как $500, а не $500, €500 и т. п.
В части I рассказывается, почему планирование так важно, рассматриваются проблемы, которые часто встречаются на практике, и цели agile-подхода. В главе 1 говорится о цели планирования, о том, что нужно для составления хорошего плана и что превращает планирование в гибкий процесс. Основные причины, по которым традиционные подходы к оценке и планированию дают неудовлетворительные результаты, рассматриваются в главе 2. Наконец, глава 3 содержит краткий перечень особенностей гибких методов и описание обобщенных принципов agile-подхода к оценке и планированию, которому посвящаются последующие части книги.
В части II представлено основное правило оценки, требующее, чтобы оценки размера и срока никогда не смешивались. Главы 4 и 5 знакомят читателя с пунктами и идеальными днями – двумя показателями, подходящими для оценки размера разрабатываемых компонентов. В главе 6 описываются методы оценки в пунктах и идеальных днях и дается представление о покере планирования. Глава 7 посвящена тому, когда и как проводить переоценку, а в главе 8 приводятся рекомендации, что лучше выбрать – пункты или идеальные дни.
Часть III «Планирование на основе стоимости» содержит рекомендации для проектной команды относительно того, как создать наилучший конечный продукт. В главе 9 перечислены факторы, которые необходимо учитывать в процессе приоритизации функций. В главе 10 представлен подход к моделированию финансовой отдачи от отдельной функции или набора функций, а также методы сравнения финансовой отдачи, с тем чтобы в первую очередь разрабатывались наиболее ценные функции. В главу 11 включены рекомендации по оценке и последующей приоритизации желательности функцией для пользователей продукта. Глава 12 завершает раздел обсуждением вопроса о том, как разбивать крупные функции на более мелкие части, которыми легче управлять.
В части IV мы переключаем внимание на вопросы, связанные с составлением календарных графиков для проекта. Глава 13 открывается обзором этапов составления календарных графиков для сравнительно простого, выполняемого одной командой проекта. В следующей главе (14) рассматривается вопрос планирования итераций. Главы 15 и 16 посвящены выбору длины итераций для проекта и оценке первоначального темпа продвижения команды. В главе 17 детально разбирается составление календарных графиков для проекта с высоким уровнем неопределенности или с высокой чувствительностью к некорректности графика. Раздел завершается главой 18, в которой описываются дополнительные этапы при оценке и планировании проекта, осуществляемого несколькими командами.
После составления плана необходимо проинформировать о нем всю организацию и использовать его для мониторинга прогресса разработки. Именно этим вопросам посвящены три главы части V. В главе 19 рассматривается мониторинг плана релиза, а в главе 20 – плана итераций. В последней главе этого раздела (21) разбираются вопросы информирования о плане и процессе его выполнения.
Часть VI состоит всего из одной главы – 22, в которой рассматривается вопрос, почему работает agile-подход к оценке и планированию. Эта глава является своего рода дополнением к главе 2, где говорится о том, почему традиционные подходы нередко дают неудовлетворительные результаты.
Заключительная часть (VII) также включает в себя только одну главу. Глава 23 представляет собой расширенный анализ примера, который повторяет основные моменты этой книги применительно к гипотетической ситуации.
Чтобы уяснить суть agile-подхода к оценке и планированию, необходимо ясно понимать цель планирования. Именно этому вопросу посвящена глава 1 данного раздела. В главе 2 рассматриваются основные причины, по которым традиционные подходы к оценке и планированию дают неудовлетворительные результаты. Заключительная глава этого раздела содержит описание обобщенных принципов agile-подхода к оценке и планированию, которому посвящаются последующие части книги.
Планирование – это все. Планы – ничто.
Фельдмаршал Хельмут фон Мольтке
Оценка и планирование критически важны для успеха проекта по разработке программного обеспечения любого размера и значимости. Планы определяют наши инвестиционные решения: мы можем взяться за проект, на выполнение которого, по нашим оценкам, потребуется полгода и $1 млн[1], и отказаться от этого же проекта, если на него потребуется два года и $4 млн. Планы помогают нам понять, кого нужно привлечь к работам по проекту в течение определенного периода. Планы помогают нам понять, как продвигается создание функциональности, которая нужна пользователям и получения которой они ожидают. Без планов мы открываем ворота для целого ряда проблем.
О проекте
О подписке