Как говорили ранее, в этом году мы намерены прочитать все книги Роберта Мартина. Того самого, которого в айтишной среде называют дядей Бобом. Cегодня речь пойдет о другой стороне работы айтишника — управлении проектами и истории Agile.
Agile — это методология гибкой разработки. В книге Роберт Мартин рассказывает о её создании, опираясь на собственные воспоминания и наблюдения. Так вышло, что он был свидетелем зарождения этой системы, что называется, из семечка. И одним из поводов к чтению однозначно может стать намерение разобраться как же развивались методы Agile, как они приживались и что было до того, как это всё стало ассоциироваться с тем же Lean или Kanban.
Когда же началась история Agile? В феврале 2001 года — на собрании семнадцати экспертов в Сноуберде. Группа инициативных специалистов, жаждущих сделать мир разработки совершеннее, создала манифест. В нём перечислены принципы Agile. Вот эти ключевые идеи:
«Люди и взаимодействие важнее процессов и инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта. Готовность к изменениям важнее следования первоначальному плану».
Само слово «agile» переводится как «гибкий». Неудивительно, что присутствующие на собрании его и выбрали. Эти люди и назвали Agile. Именно на собрании в городке Сноуберд методологии дали имя.
Роберт Мартин при всех этих событиях присутствовал и затем активно участвовал в популяризации идей. Читать его можно как первоисточник, пусть даже в некоторых моментах он и сам предупреждает читателя, что некоторые факты в памяти немного стерлись. Так-то сейчас ему за 70 лет. При написании книги было немного меньше, но всё равно гипотетическую неточность можно списать на седину.
Как обычно, книги Роберта Мартина наполнены теплом. В них присутствует легкость и искренность. Примеры из рабочей среды переплетаются с жизненными историями. Не ожидайте, что советы автора сработают как волшебная таблетка и вы за пару часов наведёте порядок в проектах, но рассчитывайте на то, что ценности и пояснения к ним станут хорошими ориентирами. Кстати, книга совсем небольшая, а информация из неё воспринимается без лишних проблем. Так что чтиво можно взять с собой и на пляж, если вы такое любите.
Основа Agile — работа над большим проектом через небольшие этапы. Переход из точки А в точку В даёт промежуточные результаты. При этом и программистам работается легче, и вносить коррективы можно по ходу дела, и анализировать проект непрерывно. Ключевым в данном вопросе является срок: планировать правильно и без фанатизма — это обязательно. Вот обо всём этом Роберт Мартин и пишет, подчеркивая главное и опровергая стереотипы.
«Некоторые думают, что Agile способствует скорости выполнения проекта. Это не так. Agile никогда не ставил своей целью выполнить и сдать проект поскорее. Agile помогает вовремя понять то, где и насколько мы облажались. Это нужно для того, чтобы успешно справиться с поставленными задачами. Теперь посмотрим, в чем заключается задача руководителя. Для ведения проекта руководители собирают данные и потом уже на их основе принимают наилучшие решения. Благодаря Agile можно получить необходимые данные. Много данных», — отмечает он. Про данные в отдельных блоках книги он тоже рассуждает развернуто.
Особое внимание Роберт Мартин уделяет экстремальному программированию. В том числе, схеме, которая носит название «жизненный цикл». Эта методика широко известна и предлагает способы взаимодействия между клиентами и разработчиками. Конспектировать её здесь не будем — обратитесь к оригинальному мнению. Автор всё преподнес лаконично, с болдом и маркированными списками. В целом, её основная идея тоже заключается в готовности к изменениям. Если захотите освоить, готовьтесь быть достаточно гибким, чтобы сделать мостик или сесть на психологический шпагат.
Одна из важных составляющих Agile — технические методы. Роберт Мартин утверждает: «Любая попытка применить Agile без технических методов обречена на провал». К ним автор относит, в первую очередь, разработку через тестирование. Вот какими правилами он её описывает:
«Не пишите готовый код до того, как напишете тест, который не получится пройти из-за нехватки этого кода.
Не пишите тестов больше, чем это необходимо для неудачи, — сбой при компиляции также считается неудачей.
Не пишите готового кода больше, чем достаточно для прохождения теста, который был провален до этого».
Возражения по поводу этих предписаний он тоже отрабатывает на страницах книги. Так что если хотите поспорить — сначала прочитайте полный вариант мысли Мартина, а потом возвращайтесь к дискуссии.
Также в рамках технических методов автор пишет про отладку, документацию, рефакторинг и парное программирование. Результатом применения таких методов может стать совершенствование качества кода и повышения производительности. Красота.
Про внедрение Agile в готовых работающих командах Роберт Мартин пишет в лоб: «Можно ли создать крупную организацию, где смогут успешно работать команды, использующие Agile? Несомненно! Только обратите внимание, я сказал “создать”, а не “перевести”». Но так-то в книге говорится и про коучинг, и про функционал скрам-мастеров, сертификацию agile-специалистов (нужна ли она или нет). Есть к чему прислушаться.
Кстати, Agile по-своему вдохновил бунтарей: «Манифест породил массы бунтарей. Он вдохновил программистов на создание лаконичного чистого кода посредством совместной адаптивной работы с отлаженной обратной связью. Они выглядели заманчивой альтернативой тяжеловесным процессам вроде каскадной модели и USDP». Про бунтарское начало мы, к слову, недавно писали в отдельном материале на Хабре.
Оставайтесь легковесами, напитывайтесь идеями и ловите вдохновение в книгах Роберта Мартина, и не забывайте заглядывать в нашу рубрику — впереди ещё много интересного.