Архитектура в Agile

advertisement
Собрание прошло успешно, хотя и несколько сумбурно — по всей компании
пришлось собирать стулья, чтобы усадить всех желающих. В этот раз объявление
о собрании было опубликовано на http://habrahabr.ru, оно вышло там «на главную»
и получился «хабраэффект» зарегистрировалось более ста восьмидесяти человек.
Даже с пессимистичной оценкой вероятности прихода в 50 %, получалось, что
будет около сотни человек и в нижний зал они не поместятся, а новый зал был еще
не готов (висел только один экран из двух, проекторов не было ни одного, штор не
было, кондиционеры не работали и было только 20 новых стульев). Пришлось
выкручиваться — забрали все стулья, принесли переносной проектор, открыли окна
и выключили солнце (собрание было слава-богу вечером). По оценкам числа
оставшихся стульев и вместимости подоконников, участников было более сотни.
В общем, были неудобства, к следующим встречам планируем сделать и
кондиционеры, и два работающих проектора, и озвучивание зала микрофонами с
колонками.
Далее приведем краткое резюме обсуждение, и как обычно — майндмап-конспект
и видео.
Сумбур также усугубился, что основной модератор дискуссии — Асхат Уразбаев, к
сожалению, заболел, и ведением дискуссий пришлось заняться Андрею Бибичеву
с Никитой Филипповым, и им было нелегко управляться с опытными спорщиками
из зала.
Содержание






1 Архитектор в Agile: Кто он и зачем?
2 Конспект-майндмап
 2.1 Видео
3 Архитектура в Agile
4 Видео
5 Выбор тем для следующей встречи AgileRussia
6 Примечания
Архитектор в Agile: Кто он и зачем?
Сначала дискуссий крутилась вокруг самого определения «[Software] Архитектора».
Он виделся одновременно как


шейпер возможностей: задающий ограничения на техническое решение с
одной стороны, и указывающий возможные решения (СУБД-библиотекифреймворки-протоколы-интеграция) с другой.
фасилитатор, который


помощник команды в выборе технологий и в нахождении оптимальных
решений;
«разводящий» конфликты на стыках
 Бизнеса и технологии, хотя является не бизнес-аналитиком, а
скорее представителем технической команды;
 Функциональных и нефункциональных требований (по сути,
опять «business vs. технологии»);
 Концептуального видения и командно-тактического.
Судя по репликам из зала, представление об архитекторе плавало от практически
«верхнеуровнего» бизнес-аналитика, рисующего ARIS/BPMN-диаграммы (ну или
хотя
бы
набрасывающего
очень
крупноблочную
архитектуру),
до
«микроархитектора» занимающегося иерархией классов и вообще структурами
данных.
С другой стороны — его то нагружали функциями управления (или по крайней мере,
координации команды), то отсаживали отдельно, в элитную «башню мудрецов».
Но все сходились, что архитектор должен быть всесторонне опытным




и в разработке;
и в руководстве;
и в коммуникации;
понимать предметные области бизнеса (ну или хотя бы, успешно общаться с
бизнес-аналитиками и быстро въезжать в новые темы);
Какова же специфика архитектора именно в Agile[1], в agile-координатах
ответственности и команды?
И вообще, когда (в Agile) появляется:


Необходимость в архитекторе? — от размера команды это, похоже,
напрямую не зависит, а зависит именно от размера проекта.
И какая на нем будет личная ответственность, выпадающая «за сферу»
коллективной ответственности команды?
Кстати, практически сразу выдвинулся представитель, скажем так, RUP-подхода,
Дима Безуглый, заявлявший




о неизбежном интеллектуальном неравенстве членов команды;
о принципиально индивидуальном процессе творчества («мысли рождаются
в одной голове»);
что минимум потерь будет, если выбор компромиссов доверят только
ответственным экспертам;
о том, что целостность архитектуры при всех бушующих изменениях, можно
поддерживать только если эта архитектура полностью погружена в одну (ну,
по крайней мере минимум) голов, а не размазана слухами по всей
команде(ам).
Оппонировали
ему
с
позиций
Agile-ценностей,
о
максимальной
кроссфункциональности[2], и с позиций, что ответственность в Agile может быть
только коллективной, а значит, роль Архитектора — менторская, он должен давать
советы и наблюдать за командой, чтобы она не попала в технологический тупик,
стараясь передать при этом свои знания (понятная метафора — обучение детей,
когда без самостоятельности и ответственности обучаемых, эффективность будет
весьма низка), впрочем, об этом ниже будет подробней.
Соответственно точки обсуждения были:


возможно ли коллективное творчество?
нужна ли индивидуальная ответственность избранных?
Аргументировали не только личным опытом и представлениями, а также к свежим
метологическим статьям, как таких зубров, как Мартин Фаулер, так и менее
известным Are You An Agile Architect?
В качестве «прорезающего» примера, рассматривали случай больших проектов,
когда приходится использовать практики маштабирования (Scrum-of-Scrum)[3].
Путь «кроссфункциональщиков» — общие архитектурные решения принимаются на
SoS-митингах, куда команды делегируют своих представителей, причем возможно
каждый раз разных (это зависит скорее от актуальной функциональности, чем от
«крутизны»).
RUP-оппозиция контратаковала:
Ошибка Резидента Брукса
единственная ошибка в которой (якобы) признался Фредерик Брукс —
«нельзя делать информацию доступной для всех команд».
Core Team
Как дополнение/оппозиция для классических Feature Team, отвечает за
«стержневые» библиотеки («ядра») проекта[ов].
Architecture Board
Выделенный Совет Архитекторов (не «Архитектурная Доска», как думают
привыкшие к пробковым SCRUM-доскам), жестко следящий за
целостностью проекта, получающий от Feature Teams списки пожелания и
проблем текущей архитектуры и пытающийся найти компромиссное
решение (реализуемое core team).
Architecture Description
увязка нефункциональных требований (производительность, безопасность,
юзабилити), и интересов всех стейкхолдеров (включая пользователей,
заказчиков, команду и т.п.).
Контр-контр-атака аджайлистов (Андрей Бибичев, Павел Афанасенков):








Максимальная мотивация — дать самостоятельность, дать право принимать
важные решения, это круче чем деньги. А регуляция, бюрократия,
регламенты — все это убивают.
Разные люди в роли архитектора — убирается предвзятость, biases,
устраняются перекосы в приоритетах требований.
«Патернализм»
избранных
архитекторов
убивает
обучение
(вышеупомянутый кейс с обучением детей), а рулит маевтика;
Архитектор близок к техлиду, а лидерство суть руление коммуникацией,
фасилитация общения, иногда даже принуждение;
Персональная ответственность — это миф (иначе, ибо ставки архитектурных
ошибок высоки, нужно увольнять после пары ошибок, а безошибочных людей
не бывает);
Да, цена ошибок велика, но персонализация решений — не серебряная пуля,
ничего не гарантирует и вообще далека от оптимальность. И вообще, когда
цена ошибок велика, нужно применять стандартные методы — управление
рисками, привлечение экспертов.
Но с Бруксом можно согласится — архитектор должен следить за
концептуальной целостностью. Следить, но не запрещать.
Резюме — с архитектором можно жить, он полезен, но мешать он не должен
ни в коем случае.
Конспект-майндмап
[на всё окно][свернуть]
Видео
Архитектура в Agile
Тут был достаточно беглый обзор новые веяния, сговорившихся иметь схожие до
степени смешения аббревиатуры:
DDD
Domain Driven Design;
BDD
Behavior Driven Development;
TDD
Test Driven Development;
FDD
Test Driven Development;;
VDD
Value Driven Development (по большому счету это маркетинговый bullshit, но
тоже затесался за компанию).
Для тех, кто заинтересовался более подробно, рекомендуем



Тренинг Андрея Бибичева по «DDD» (2010-03-03).
«Обзор Feature-Driven Development и Domain-Driven Design» на AgileDays2009
«Проектирование больших ИС в Agile» на SECR-2009: статья, слайды.
Видео
Выбор тем для следующей встречи AgileRussia
Демократичный процесс выбора темы для следующей встречи сообщества.
Спойлер — победила темы «Инструменты в/для Agile».
Примечания
1. ↑ В RUP-то роль архитектора прописана явно, а вот в Agile есть спектр
мнений, включая то, что выделенный архитектор — не нужен
2. ↑ Поднимите руки у кого есть совместное владение кодом? — лес рук…
3. ↑ Забавный момент — ключевые спорщики, Никита и Дима, в разное время
оба были партнерами Асхата по внедрению Scrum-of-Scrum. Звучит это
несколько пикантно.
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи,
запишите его в раздел «discussion».
Репликация: База Знаний «Заказных Информ Систем» → «Архитектор в Agile (встреча AgileRussia.ru 2010-03-24)»
Download