|
|
|
Апрель 10, 2009
04:46 pm - Что такое Agile? Не читайте, это уже было здесь. Запостил часть для удобства комментирования. Если есть возражения или добавления, пишите!
Что такое Agile?
Тут есть некоторая путаница. Аджайла два.
Agile(1) - это семейство различных методологий под одним общим "зонтичным" названием. Все Agile-методологии характеризуются примерно общей культурой и ценностями, хотя расхождения имеются. В целом, можно сказать, что культура ориентирована на командную работу и человека, а также на частое деливери. Принципы Agile сформулированы в манифесте гибкой разработки.
Проверить, принадлежит ли ваша методология семейству Agile, невозможно. Такие критерии не сформулированы. К сожалению, сам манифест не может служить таким определением, так как, во-первых, слишком размыт, во-вторых, направлен против Waterfall. Практически любой Code&Fix проект при некоторой широте души вполне соответствует всем сформулированным в нем принципам.
Во многом, это абстракция, так как изначально в семейство Agile некоторые методологии попали почти по знакомству, а другие не попали по недоразумению. Так, например, RUP нигде не противоречит принципам agile, а значит может быть включена в это семейство. Более того, вы можете придумать свой подход и объявить его "Agile" и вам за это ничего не будет.
Существует множество методологий, входящих в семейство Agile. Самыми популярными из них являются Scrum и Extreme Programming (XP). Поскольку Scrum и XP не противоречат друг другу, часто речь идет о методологии "Scum + XP". Эти методологии являются более или менее определенными. Так, например, вы можете пройти тест на соответствие Scrum (т.н. Nokia Test) или XP.
Если вы "прошли" такой тест, то можете смело заявить, что работаете по Agile.
К настоящему моменту Agile-сообщество наработало огромное количество практик, облегчающих разработку ПО и в общем и целом находящихся в контексте культуры и принципов Agile. Эти практики не принаджежат никакой конкретной методологии семейства Agile, хотя в реальной жизни, разумеется, активно используются, в том числе в рамках этих методологий. Так, например, User Stories, придуманные Майком Коном, не принадлежат Scrum формально, хотя достаточно часто даже являются частью официального тренинга "Certified Scrum Master". То же самое относится к Plainning Poker, FIT/FITNESSE, ретроспективе, практикам управления релизом и т.д.
Теперь что такое agile(2). Очень часто применить Scrum и XP или другую определенную методологию в чистом виде невозможно по тем или иным причинам. В этом случае внедряется некоторый процесс, заимствующий практики и принципы из других методологий Agile семейства, плюс какие-то практики из других методов. Часто такую методологию называют "agile". Например, "мы работаем по agile". Никаких тестов, которые могут установить однозначно принадлежность проекта этой группе по понятным причинам нет.
Это порождает массу спекуляций. Так, например, можно ли взять одну практику из XP и заявить, что вы работаете по agile? Очевидно, нет. Однако, этим сплошь и рядом пользуются, чтобы оправдать, например, отсутствие документации в проекте. "Почему у вас нет требований?" - "А мы по agile работаем!"
|
Comments:
А я вот какой ответ на этот вопрос придумал.
Agile - это (дальше важно каждое слово): 1. группа (множество, совокупность) 2. итеративных 3. инкрементальных 4. методологий (а не моделей) В которых (далее цитируем манифест): 1. рабочее ПО ценится выше документации 2. индивидуумы и их взаимодействие ценится выше процессов и инструментов 3. плотная совместная работа с заказчиком ценится выше обсуждения контракта 4. реакция на изменения ценится выше следования плану
Но это ближе к философии. Пользоваться этим определением для аудита "Agile - неAgile" не получится
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 01:13 pm none (UTC) |
|---|
| | | (Link) |
|
В общем, да, тока вылетает Lean с FDD. Они вроде впрямую не требуют итеративности и инкрементальности. FDD инкрементален, но не итеративен. Lean просто требует Deliver as fast as possible. Это, вообще говоря, не обязательно означает итеративность и инкрементальность.
Теперь понятно, почему в 2001 году эти орлы так долго мусолили эту тему :) Придется тогда тупо оставить манифест :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 01:27 pm none (UTC) |
|---|
| | | (Link) |
|
Ну вот они и оставили. Но это не определение, а так, общий attitude.
Если оставить слова "группа методологий, в которых", то будет определение :) Без определения сложно спорить дальше о том что же лучше.
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 02:42 pm none (UTC) |
|---|
| | | (Link) |
|
Определения, мне кажется, нет. Его можно было бы сделать, прояви авторы Agile-манифеста меньшую гибкость. Но они взяли к себе под крыло практически всех желающих. Самое смешное, что все, кроме Scrum и XP, почти не используется.
Гы :) Опять тема для теологического спора :) Для определения "Скрам - неСкрам" есть нокиа тест. А как определить "ХР - неХР"?
Кстати, ты пость остальное по-тихоньку :) Будет минутка на выходных я и остальное прокомментирую
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 10, 2009 03:10 pm none (UTC) |
|---|
| | | (Link) |
|
XP = 12 определенных практик. Там как то сразу было хорошо с этим :-). Scrum намного более неопределенная вещь.
Начал постить потихоньку.
Подумал над этим еще раз. Из моего определения можно выкинуть слово "итеративный" и все.
Lean все же требует инкрементальность, ибо Мария (не буду переводить ее фамилию) четко нам говорит - измеряйте и оптимизируйте всю цепочку для инкремента, от заказа до получения кэша. Может, требования итеративности там и не такие яркий, но инкрементальность лежит чуть ли не в основах.
А вообще прав [info]peeplevarreh. Грядет "Большая Война Остроконечников с Тупоэджайльниками". Было бы не плохо до ее начала хотя бы разобраться "во что же мы верим" :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 08:24 am none (UTC) |
|---|
| | | (Link) |
|
Хм. Да, вроде с некоторой натяжкой :-)
Жалко только Code & Fix в твое определение легко пролезает легко. Он как раз инкрементален, но не итеративен.
Тогда давай жертвовать FDD :) Code & Fix это же по сути Bug Driven Development :) А грань между Feature и Bug иногда до такой степени зыбка :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 08:37 am none (UTC) |
|---|
| | | (Link) |
|
Вот и я говорю, там столько лишних методологий :-) Оставим Scrum и XP. Можно еще Crystal. Тем более это верно для 99% проектов. А остальные используют Agile как прикрытие для своих темных дел.
"Очень часто применить Scrum и XP или другую определенную методологию в чистом виде невозможно по тем или иным причинам"
По очень простым причинам :) XP - в основном состоит из инженерных практик, Scrum - в основном из управленческих.
В реальном проекте так или иначе нужно не только делать когд (используя инженерные практики), но и как-то управлять самим проектом (требуются управленческие практики).
Поэтому и нужны замесы. Все же методологии довольно "сыроваты", и изобилуют дырами. Именно поэтому очень опасно фанатично следовать какой-либо Agile методологии. Вы взяли ХР "из коробки", но это как старый линукс - хрен он так просто заработает на вашем ноуте (нужны дрова для сетевухи, видеокарты). Так и с методологией, нужно добавить "интерфейсы" взаимодействия с менеджментом, отделом QA (если организация достаточно зрелая, что бы выделить QA в отдел), ИТшнегами (мы же не собираемся еще и сами свои серваки админить), Ичарами.
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 11, 2009 09:23 pm none (UTC) |
|---|
| | | (Link) |
|
BTW На самом деле не так просто назвать хотя бы три вещи, которые есть в Scrum и которых нет в XP :-)
Любой проект состоит из кучи работ. Далеко не все из них относятся к методологии. Под применением в чистом виде я имею ввиду ненарушение фундаментальных практик.
Например, если ваш Product Owner имеет трех с половиной начальников, с которыми устанавливает сложные отношения, к самой методологии это не имеет отношения. Настраивайте интерфейсы как хотите, это все равно старый добрый Линукс. Более того, в ней так и написано: кастомизировать процесс под контекст. Под нарушениями обычно подразумеваются действительно серьезные расхождения. Вы не проводите совместного планирования - нарушение Scrum. Вы не пишете тестов - нарушение XP (по крайней мере в первой его редакции :-))
"BTW На самом деле не так просто назвать хотя бы три вещи, которые есть в Scrum и которых нет в XP :-)":
1. Scrum Master firewall 2. Decision made in 1 hour 3. Blocks are gone in 1 day
И наоборот: 1. System metaphors 2. Pair programming 3. Coding Standards
Ну это если сравнивать канонические скрам и ХР :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 08:20 am none (UTC) |
|---|
| | | (Link) |
|
Про Scrum - ты перечислил скорее преимущества, а не практики :-)
Я их взял из книги Крэга Лармана из раздела "Core Practices" :) Если бы этот раздел назывался "Key Advantages", тогда ты был бы совершенно прав :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 08:40 am none (UTC) |
|---|
| | | (Link) |
|
Да там намешано много чего из светлой головы самого Лармана. Лучше Nokia Test использовать. Всякие там Chicken and Pigs у меня вообще вызывают подозрения :-)
Асхат, мы близки к параличу собственного мозга :) Как мы будем воевать с остроконечниками, если мы не только не знаем, что такое Agile, но даже не знаем того, кто знает, что такое Agile :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 09:27 am none (UTC) |
|---|
| | | (Link) |
|
Ну с точки зрения определения Agile не так уж важно, какие практики входят в Scrum.
А если мы допишем к манифесту 4 принципа против Code&Fix? Will it do the job?
Пока нет никакого определения, сгодится любое. Просто у тебя уже есть какие-то критерии в голове. Например, ты каждое определение "тестируешь", пихая туда в качестве кейсов то, что ты считаешь Agile, и то, что ты считаешь неAgile.
Кстати, а чем плох Bug Driven Development? Если замешать туда ретроспективу и добавить хоть чуточку планирования, станет ли он от этого лучше?
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 10:01 am none (UTC) |
|---|
| | | (Link) |
|
Ты имеешь ввиду все практики Scrum, но без итераций? Ты знаешь, я боюсь, как в том анекдоте получится. "Стоя нельзя, танец получится."
Планировать просто кусок задач на какое то время вперед. Ретроспективы дадут немного самоорганизации. Захочется зафиксировать горизонт планирования. Последний шаг, правда, по опыту никто не делает. Нужно перестать планировать фичи на людей.
А для меня критерием Agile почти всегда самоорганизация команды + итеративность икрементальность. А практики -средство достижения.
Сам говорил, FDD не итеративен :) Самоорганизация + инкрементальность? Такое пойдет как определение Agile? :)
![[User Picture]](http://l-userpic.livejournal.com/80407190/10317623) | | From: | zibsun |
| Date: | Апрель 13, 2009 10:10 am none (UTC) |
|---|
| | | (Link) |
|
Мне лично нравится :) |
|