ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 342
Скачиваний: 11
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Clean Agile
Back to Basics
Robert C. Martin
Boston • Columbus • New York • San Francisco • Amsterdam • Cape Town
Dubai • London • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi • Mexico City
São Paulo • Sydney • Hong Kong • Seoul • Singapore • Taipei • Tokyo
РОБЕРТ МАРТИН
ЧИСТЫЙ
AGILE
ОСНОВЫ
ГИБКОСТИ
2020
ББК 32.973.2-018
УДК 004.3
М29
Мартин Роберт
М29 Чистый Agile. Основы гибкости. — СПб.: Питер, 2020. — 352 с.: ил. — (Серия
«Библиотека программиста»).
ISBN 978-5-4461-1552-5
Прошло почти двадцать лет с тех пор, как появился Манифест Agile. Легендарный Роберт
Мартин (Дядя Боб) понял, что пора стряхнуть пыль с принципов Agile и заново рассказать о гиб- ком подходе не только новому поколению программистов, но и специалистам из других отраслей.
Автор полюбившихся айтишникам книг «Чистый код», «Идеальный программист», «Чистая ар- хитектура» стоял у истоков Agile. «Чистый Agile» устраняет недопонимание и путаницу, которые за годы существования Agile усложнили его применение по сравнению с изначальным замыслом.
По сути Agile — это всего лишь небольшая подборка методов и инструментов, помогающая не- большим командам программистов управлять небольшими проектами, но приводящая к большим результатам, потому что каждый крупный проект состоит из огромного количества кирпичиков.
Пять десятков лет работы с проектами всех мыслимых видов и размеров позволяют Дяде Бобу показать, как на самом деле должен работать Agile.
Если вы хотите понять преимущества Agile, не ищите легких путей — нужно правильно при- менять Agile. «Чистый Agile» расскажет, как это делать разработчикам, тестировщикам, руково- дителям, менеджерам проектов и клиентам.
16+
(В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
ББК 32.973.2-018
УДК 004.3
Права на издание получены по соглашению с Pearson Education Inc. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступ- ность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими.
ISBN 978-0135781869 англ.
© 2020 Pearson Education, Inc.
ISBN 978-5-4461-1552-5
© Перевод на русский язык ООО Издательство «Питер», 2020
© Издание на русском языке, оформление ООО Издательство «Питер»,
2020
© Серия «Библиотека программиста», 2020
ОГЛАВЛЕНИЕ
Отзывы на книгу «Чистый Agile» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Глава 1 . Введение в Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
История Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Сноуберд . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Краткий обзор Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Жизненный цикл . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Глава 2 . Почему же Agile? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Профессионализм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Разумные ожидания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Оглавление
6
Билль о правах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Глава 3 . Методы взаимодействия с клиентами . . . . . . . . . . . . . . . . 106
Планирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Небольшие частые релизы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Приемочное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Одна команда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Глава 4 . Методы взаимодействия внутри команды . . . . . . . . . . . . 151
40-часовая рабочая неделя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Коллективное владение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Непрерывная интеграция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Стендап-митинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Глава 5 . Технические методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Разработка через тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Простота проектирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Парное программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Глава 6 . Внедрение Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Ценности Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Методологический бестиарий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Преобразование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Коучинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Сертификация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Оглавление
Agile в крупных масштабах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Инструменты Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Коучинг — альтернативный взгляд . . . . . . . . . . . . . . . . . . . . . . . . . 225
Заключение (снова Боб) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Глава 7 . Мастерство высшего уровня . . . . . . . . . . . . . . . . . . . . . . . 241
Похмелье от Аgile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Ожидание и реальность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Все дальше друг от друга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Высшее мастерство разработки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Идеология против методологии . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Есть ли в мастерстве разработки методы? . . . . . . . . . . . . . . . . . . 253
Сосредоточьтесь на ценностях, а не на методе . . . . . . . . . . . . . . 254
Обсуждение методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Влияние мастерства на личность разработчика . . . . . . . . . . . . . 257
Влияние мастерства на отрасль разработки . . . . . . . . . . . . . . . . . 258
Влияние мастерства на компании . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Высшее мастерство и Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Глава 8 . Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Послесловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
ОТЗЫВЫ НА КНИГУ
«ЧИСТЫЙ AGILE»
Проделав огромный путь, Agile, не без помощи того самого Дяди
Боба, достиг вершин . Безусловно, эта история знает свои взлеты и падения . Восхитительная книга, которую вы сейчас держите в руках, сочетает в себе историческую хронику и мемуары . Вся мудрость Agile собрана здесь . Если вам интересно, что такое Agile и как он появился, — эта книга для вас .
Гради Буч
Разочарования Дяди Боба пронизывают каждую строку «Чистого
Agile», но, поверьте, эти разочарования оправданны . Все, что соз- дано в мире Agile, — просто капля в море по сравнению с тем, что еще можно из него сотворить . Эта книга — взгляд Дяди Боба на перспективу . Его вклад велик . Его стоит послушать .
Кент Бек
Полезно почитать о том, что Дядя Боб думает об Agile . Может быть, вы новичок, а может, уже матерый спец — в любом случае вы найдете в этой книге что-то для себя . Я подписываюсь почти
Отзывы на книгу «Чистый Agile»
под каждым словом в ней . В некоторых главах я вижу свои соб- ственные недостатки, что греха таить . Теперь я проверяю наш код дважды, а это 85,09 % .
Джон Керн
В этой книге, словно под увеличительным стеклом, можно в под- робностях разглядеть методологию Agile . Дядя Боб, несомненно, один из умнейших людей, которых я знаю . Его рвение к програм- мированию бесконечно . Он как никто другой может развеять ми- стический туман, сгустившийся над Agile .
Из предисловия Джерри Фицпатрика
Всем программистам,
кто хоть раз боролся
с ветряными мельницами
или водопадами
ПРЕДИСЛОВИЕ
Так что же такое методология гибкой разработки Agile? Как по- явилась на свет? Как эволюционировала?
В этой книге Дядя Боб дает глубокомысленные ответы на эти во- просы . А еще рассказывает о разных способах неправильного или искаженного понимания методологии Agile . Его взгляды очень важны, поскольку он авторитет в этой области . Ведь именно с его именем связано появление Agile .
Мы дружим с Бобом уже не один год . Впервые я встретил его в 1979-м, когда устроился на работу в отдел телекоммуникаций компании Teradyne . Я был инженером-электриком, моя работа за- ключалась в том, что я помогал устанавливать и обслуживать нашу продукцию . Позже я вырос до разработчика аппаратных средств .
Где-то спустя год моей работы в компании стали искать новые идеи для своей продукции . В 1981-м мы с Бобом выдвинули идею созда- ния электронного телефонного администратора — по сути дела, он представлял собой службу голосовой почты с функцией переадре- сации вызовов . В компании нашу концепцию приняли с одобре- нием, и вскоре мы приступили к разработке E . R . — электронного администратора (The Electronic Receptionist) . Прототип получился
Предисловие
12
шедевральным . Он работал под управлением операционной системы
MP/M на базе процессора Intel 8086 . Голосовые сообщения храни- лись на пятимегабайтовом винчестере Seagate ST-506 . Я занимался разработкой порта для передачи голоса, а Боб писал приложение .
Закончив разработку, я тоже написал часть кода приложения . По- этому с тех пор я еще и разработчик .
То ли в 1985-м, то ли в 1986-м Teradyne неожиданно остановила разработку E . R . и без нашего ведома отозвала заявку на патент .
Компания вскоре пожалела о принятом решении, а мы с Бобом жалеем и по сей день .
В конце концов мы ушли из Teradyne в поисках лучшей доли . Боб занялся консалтинговым бизнесом в районе Чикаго . Я же стал пре- подавателем и ударился в разработку программ . Мы умудрялись не терять друг друга из виду даже после моего переезда в другой штат .
К 2000 году я преподавал объектно-ориентированный анализ и проектирование в Learning Tree International . Курс включал в себя преподавание UML и унифицированный процесс разработ- ки (USDP) . Тогда я уже поднаторел в этих технологиях, однако ничего не понимал в Scrum, экстремальном программировании и прочих методиках .
А в феврале 2001 года появился Манифест Agile . Моя реакция была примерно как у всех: «Что еще за Agile?» Единственный манифест, о котором я знал, — это Манифест Коммунистической партии, со- ставленный Карлом Марксом и Фридрихом Энгельсом . Этот Agile призывал взяться за оружие? Чертовы айтишные радикалы!
Манифест породил массы бунтарей . Он вдохновил программистов на создание лаконичного чистого кода посредством совместной адаптивной работы с отлаженной обратной связью . Они выгля-
Предисловие дели заманчивой альтернативой тяжеловесным процессам вроде каскадной модели и USDP.
Прошло уже 18 лет, как был обнародован Манифест. Для боль- шинства современных разработчиков все это история древнего мира. Именно поэтому ваше понимание Agile может отличаться от представлений его основателей.
Эта книга ставит своей целью точно передать посыл идеи. В этой книге, словно под увеличительным стеклом, можно в подробностях разглядеть методологию Agile. Дядя Боб, несомненно, один из ум- нейших людей, которых я знаю. Его рвение к программированию бесконечно. Он как никто другой может развеять мистический туман, сгустившийся над Agile.
Джерри Фицпатрик
Software Renovation Corporation
Март 2019 года
ВВЕДЕНИЕ
15
Введение
Книга, которую вы держите в руках, — не научное исследование .
Я не старался провести тщательный обзор литературы . То, что вы собираетесь прочесть, — мои личные воспоминания, наблюдения и мнения . Как-никак, я около двадцати лет связан с Agile .
Книга написана в неформально-разговорном стиле . Поэтому ино- гда я могу выбирать не очень корректные выражения . Сам я далеко не любитель крепкого словца, правда одно (несколько искаженное) бранное слово попало на эти страницы, но лишь потому, что иначе выразиться было никак!
Я бы не сказал, что книга гневлива . Когда вдруг меня прошибало, что нужно как-то обосновать написанное, я приводил источники, на которые ссылался . Я сверялся с мнениями других ребят из сообщества Agile, которые в деле столько же времени, сколько и я . Иногда даже нарочно просил некоторых дополнить книгу своим мнением или выразить свое несогласие, чему посвящены отдельные главы и разделы . Как бы то ни было, не стоит воспри- нимать эту книгу как научный труд . Наверное, правильнее бы воспринимать эту книгу как мемуары — старческое брюзжание, адресованное новичкам в Agile, которые только делают свои первые шаги .
Книга подойдет как программистам, так и простым любителям .
Это не техническая литература .
Тут нет кода . В книге дается обзор первоначальной цели разработ- ки Agile без углубления в какие-либо технические нюансы про- граммирования, тестирования и управления .
Книга невелика . Просто потому, что много писать и не надо . Agile — небольшая идея, предназначенная для решения небольших задач, поставленных небольшими командами программистов, которые