Как пройти к Agile?

В последнее время всё чаще поднимается вопрос об отличиях разных Agile-подходов к разработке (свят-свят-свят, чуть было не вырвалось «методологий» ;). Об этом можно почитать, например, здесь или здесь. И ещё много где, как подсказывает нам Гугль. А вездесущий Асхат Уразбаев уже проводит специальный тренинг, разъясняя, что Lean — это как бы не совсем Agile, но что Lean делает Agile лучше.

Попробую и я внести свои дилетантские пять копеек.

В моём представлении XP — это такой «идеальный» Agile. Это практически полный набор Agile-практик (сначала их было 12, а теперь, я слышал, это число удвоилось, но эту книгу я ещё не читал). Используйте все практики XP — и у вас наступит полный Agile, процветание и благоденствие.

Одна беда: перечислив и описав все эти практики, отцы экстремального программирования не объяснили толком, как со всей этой фигнёй взлететь всё это добро внедрять. Наверное, поэтому среди моих знакомых нет ни одного человека, реально работавшего когда-либо в проекте, разрабатываемом по XP. Зато есть парочка бывших теоретиков-энтузиастов использования XP, мечты которых разбились о неприступные скалы корпоративной культуры и полное непонимание со стороны коллег. Да что греха таить, я и сам потерпел неудачу при попытке внедрения парного программирования — мои коллеги, однажды попробовав эту практику, категорически отказались продолжать эксперимент (я их, помнится, после этого ещё долго пугал: не закончишь задачу к сроку — будешь весь день работать со мной в паре).

Шум по поводу XP постепенно стих. Хотя полки книжных магазинов тихо заполнялись книгами, заголовки которых странным образом совпадали с названиями практик XP.

Тем временем несколько умных дядек, почесав репу, придумали и явили миру Scrum. Scrum — это очень простой, можно даже сказать, минималистичный набор методов, ролей и правил. Достаточно жёстких правил, кстати, за что некоторые его сразу не полюбили.

В отличие от XP, Scrum сразу начал своё победное шествие по планете. Некоторые злые языки утверждают, что дело тут в его неуёмном пиаре хорошо проработанной маркетинговой модели, но лично я думаю, что причина в другом: применение Scrum действительно позволяет быстро решить наиболее злободневные в отрасли разработки ПО проблемы.

Scrum сразу концентрируется на наиболее типичных слабых местах процесса разработки, а именно:
— общение с заказчиком;
— обмен информацией и координация действий внутри команды.

Именно эти проблемы (недостаток общения «снаружи» и «внутри») являются первопричиной провала большинства неудачных проектов. Их решение позволяет создать залог успешной реализации проекта: общее видение, разделяемое заказчиком и всей командой.

Благодаря простоте и немногочисленности правил и инструментов Scrum, их можно внедрять сразу. Вот так просто: взять и начать со следующего понедельника. Сначала просто и тупо следовать правилам, и после пары-тройки итераций вам явится дух Agile. (Хотя для надёжности, может быть, и стоит позвать Scrum-шамана.)

Как соотносится Scrum с XP? Да прекрасно соотносится. Разве Scrum запрещает вам использовать парное программирование? Или непрерывную интеграцию? Или test-driven development? Конечно, не запрещает. Scrum — это отличный первый шаг в мир Agile, и если он окажется удачным, то вам наверняка захочется сделать следующие шаги.

Но в каком направлении их делать? И вот здесь нам на помощь приходит Lean. Lean — это не методология и не свод правил. Это, скорее, философия. Или, как минимум, набор принципов. Корневую идею Lean, как мне кажется, выражает цитата из книги Мери и Тома Поппендик «Бережливое производство программного обеспечения»:

Не бывает «наилучших методов», поскольку не существует процесса, который нельзя было бы усовершенствовать.

 

Именно постоянное совершенствование процесса покажет направление для следующих шагов.

Сами принципы Lean, а также советы по их реализации применительно к разработке ПО, содержатся в этой же книге, и пересказывать их я не буду. Кстати, не советую пытаться составить представление о Lean только на основании краткого перечисления этих принципов (таких «шпаргалок» уже немало в интернетах). Лучше возьмите эту книгу и прочитайте. Там есть над чем подумать.

Суммируя всё сказанное, идеальная «дорожная карта Agile» мне сейчас представляется так: от Scrum через Lean к XP. Идеальная не смысле «самая лучшая», а в смысле чистой идеи, которой требуется подтверждение практикой.

Добавить комментарий