2011-01-05

Книги // Adapting Configuration Management for Agile Teams

Cigarettes and coffee, man, that's a combination.
(c) "Coffee and Cigarettes", Jim Jarmush

Сам я не курящий, однако для книжки, про которую пойдет речь, это вполне подходящий эпиграф. Потому как книжка - про соединение двух очень связанных областей - это гибкие методологии разработки (a.k.a. Agile) и управление конфигурацией (a.k.a. SCM).

Однако, обо всём по порядку. Не так давно я делал обзор книг по SCM. Заинтересовавшие книжки приобрёл и начал планомерно с ними знакомиться. В первую очередь ознакомился с трудом Боба Айелло Configuration Management Best Practices. Книжка была стоящей, как и ожидалось. Боб, как выяснилось, немного знает русский (работал волонтёром в ER и часто бывал на Брайтон Бич ;) ) и с помощью знакомого русофила ознакомился с отзывом, после чего сильно благодарил.

Следующей в прочтение попала книга Adapting Configuration Management for Agile Teams: Balancing Sustainability and Speed за авторством Марио Морейры (Mario E. Moreira). Название можно перевести как "Применение SCM в командах с гибкими методиками разработки: в равновесии между устойчивостью и скоростью". Что по-русски, что по-английски - одинаково громоздко, однако смысл понятен.
Перед прочтением опасался, что книжка будет похожа на героев старого анекдота про морскую свинку, однако опасения были напрасными.


В первой главе Introduction: Racing with Confidence автор заранее говорит - кому вообще стоит читать данную книгу. Как и следовало ожидать - читать можно всем. И тем, кто знаком с agile, но хочет узнать больше про SCM, и наоборот. Много "воды", однако - надо же было с чего-то начать книгу. :) Далее идёт ознакомление с основами как SCM, так и agile.

Глава CM Primer с толком рассказывает, что же такое управление конфигурацией. Причем основы изложены правильно. Сначала говорится о 4 основных направлениях ответственности - identification, control, audit, report. А затем - об основных практиках, таких как контроль версий,  багтрекинг, управление отстройкой и многом другом. После этой главы должно появиться понимание - что из себя представляет SCM и какова его роль. С точки зрения СМ-инженера - изложено толково.

Следующая глава - Agile Primer - рассказывает о том, что вы давно хотели узнать про Agile, но всё недосуг было прочитать. Причем упор делается больше на идеях и духе, хотя о конкретных практиках также рассказывается. Для начала цитируется Agile Manifesto - чтобы читатель проникся идеями и ценностями. Далее идет рассказ о популярных методах, например, Scrum и XP. А затем, опять же, немало уделяется внимания именно роли личности и персональным коммуникациям - приводятся психотипы участников agile-движения (несколько - от innovator и champion до deviever и denier), их роли и общий настрой (mindset). В общем, познавательно. Я вот лично не работал в Agile-командах, однако для себя получил изрядную картину того, что же это такое.

Далее в главе How CM and Agile Values Work Together делается первая попытка свести вместе гибкие методики и SCM и показать, что они отлично уживаются и дополняют друг друга. А именно - берётся поочередно каждая практика SCM - будь то контроль версий, выпуск релизов или планирование - и рассматривается с точки зрения Agile. Рассуждение идёт достаточно прагматичное и не предвзятое - практик Agile примеряет "на себя" все практики SCM.

Затем глава Approaching Infrastructure for Agile описывает как выстраивается инфраструктура под гибкую разработку. В основном, описывается два подхода - когда всё выстраивается заранее (envisioning) и когда минимальный набор средств на старте проекта постепенно перерабатывается под нужны каждой итерации (refactoring). Также немало рассказывается о выборе между двумя крайностями: создание инфраструктуры самостоятельно, или же размещение/покупка решений "в облаке" - это направление в последние годы набирает обороты.

Опсле чего глава Approaching the CM Implementation for Agile продолжает развивать нчатую мысль и показывает как практики SCM будут внедрятся в работу agile-команды. Аналогично предыдущей главы рассматриваются подходы envisioning vs. refactoring, после чего читателя активно убеждают в необходимости максимальной автоматизации CM-деятельности, что очень правильно.

Наиболее существенная часть книги - это глава Adapting CM Practices for Agile, где подробно описывается, как практики SCM адаптируются к работе команды, исповедующей Agile. Берется какая-то сторона работы гибких методологий, и показывается - как CM увязывается с Agile в описанном случае. Сюда входит и continuous integration, планирование, рефакторинг, test-driven development, парное программирование, управление изменениями, багтрекинг и некоторые другие аспекты. Всё очень подробно и, опять же, прагматично. Автор спокойно может утверждать, что какие-то традиционные практики вроде планирования или baselining могут просто не понадобиться при грамотной работе "гибкой" команды. Причем описывает это обоснованно, с точки зрения здравого смысла и духа гибких методик.

Следующую главу CM Tool as a Strategic Agile Partner предоставил Деймон Пул (Damon Poole). Он делает упор на выборе инструментария под "гибкие" проекты описывающие выбор инструментария как для CM, так и для всего процесса разработки. Причем берет действительно нужные параметры, такие как производительность, наличие репликации или распределенного механизма, поддержка веток и т.п. Неплохая глава, в общем.

Следующая за ней Evaluating Tools Suited for Agile продолжает разговор о выборе инструментов, причем упор уже далается на том, как правильно построить evaluation, т.е. оценку выбираемых инструментов. Мало, но неплохо.

Закрывает книгу глава, предоставленная Бобом Айелло - Using CM Standards and Frameworks to Support Agile - которая во многом повторяет одноименную главу в его собственной книге, на которую ссылался в начале.

На сайте издательства можно прочитать детальный список глав и разделов.

Кому будет полезна книга?

Для разработчиков, исповедующих Agile, будет полезно ещё раз посмотреть на то, какие практики они используют, и лишний раз посмотреть - можно ли как-то улучшить свою работу, т.е. сделать рефакторинг своих процессов. Наверняка найдется что-нибудь новое.

Для тех, кто занимается SCM или какой-либо из его сторон, будет также полезно познакомится с тем, чем сейчас живёт чуть ли не половина всей отрасли. Ведь Agile сейчас на подъёме, а значит, надо иметь хорошее представление о том, что происходит вокруг. Кроме того, многие канонические вещи, вроде ветвления, обсуждаются в новом свете, что заставляет задуматься об их исключительной необходимости в определенных условиях. Короче, полезно иногда взглянуть по-новому на знакомые вещи.

Общий итог - надо брать.

Update: обновленную аннотацию опубликовали на RSDN.

Комментариев нет:

Отправить комментарий