понедельник, 13 апреля 2009 г.

Что такое Agile?

Часто задается вопрос, что такое Agile или XP. В чём ключевое отличие от других подходов. Ответ очень простой. Agile - это культура разработки, включает гармонично подобранные ценности, принципы и практики. Мета-методология, которая определяется входящими в неё методологиями. Эти вещи уже проверены по отдельности различными командами. Но в совокупности они порождают нечто большее. Синергию. Другие подходы ориентируются преимущественно на практики, иногда на принципы. Про ценности же забывают напрочь. То есть на то, что человека отличает от болтика.

Agile - это не простое следование простым практикам. Это наделение смыслом работы, это самоидентификация участников проекта. Это культура. Но не нужно забывать, если ваша культура разработки высока, а команда состоит из зрелых личностей, то вы сами будете создавать свою культуру. И здесь Agile приобретает другой, более глубинный смысл. Он становится инструментом, фрэймвоком для построения собственной культуры команды. Каждая команда и проект - своя культура и методология.

Натянутые попытки использовать ряд практик, без комплексного подхода, приведёт к неудаче. И это нельзя назвать работаю по Agile. Потом неудачники с радостью и гордостью рапортуют о своих неудачах. Кстати меня удивляет, почему он обсуждая только практики делает столь поспешные выводы. Полностью забыв про принципы и ценности. Да и существует 1000 способов делать неправильно, а постарайся сделать так, чтобы получилось!

Кстати, а если есть комплексный подход, то его как то нужно называть. И чтобы название отображало суть явления. "Agile" очень подходящее слово.

Да... а для работы с ценностями можно использовать практику - Team Value Sync-up Practice, о которой я писал ранее.

Кстати, в тему цитата Кент Бека (link):

There is 3 legs on the stool: practices, values and principles and I think people who are successful applying XP are paying attention to all 3. This gets back a little bit to some of my disenchantment with the direction of agile development in general, people are now asking the question: "How am I going to do agile development?" and agile development isn't a thing you do, it's an attitude, it's a set of personal values about responding to the real world, being open to the information that is there and being willing to do something about it.

That is agility. Yes, there is a lot of practices that come out of that but to me that is where it starts, it's this attitude. If somebody understood a bunch of practices and tried to do them, you could do agile development without being agile and it's a disaster because you're acting out of harmony with what you really believe when you do that.


И в заключение: весь мир делится на два лагеря - 1) те кто работает в новом стиле и 2) те кто работает постаринке. Честно говоря я рад, что вторых больше. Потому что именно вторые оплачивают мою работу :)

8 комментариев:

  1. А по-русски?

    Что-то не понятно, слов много, а сути так и не понял. Что же такое Agile?

    ОтветитьУдалить
  2. Agile - гармонично подобранные ценности, принципы и практики. Посмотри:
    http://en.wikipedia.org/wiki/Agile_software_development
    http://en.wikipedia.org/wiki/Extreme_Programming
    Обрати внимание на VALUES, Principles и после этого переходи к Practices. Подумай как Values & Principles влияют на Practices, что они создают, какие командные взаимоотношения порождают.

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

    Но, чтобы это понять, это нужно пережить, нужно обладать опытом.

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

    В любом деле есть 10000000 способов сделать неправильно, и только профессионал делает как нужно и будет эффективен. Кем мы выбираем быть?

    ОтветитьУдалить
  3. Agile - это религия. Даже на Agile конференциях никто не может сказать, что это такое в применении к конкретике. По большей части этот термин стоит рассматривать как "светлое будущее" (т.е. маркетинговую фишку, позволяющую выколачивать деньги из дураков).

    Дао, выраженное в словах, не есть истинное дао. :-)

    ОтветитьУдалить
  4. "Agile-религия" - это бред севой кобылы.

    Подчеркиваю Agile определяется теми методологиями, которые к него в ходят. Ключевые гибкие методологии содержат:
    1. Ценности
    2. Принципы
    3. Практики
    Этим и определяется этот подход.

    Да, руководителям и простым смертным, которые рассматривают производство ПО как результат работы человеко-винтиков это может показаться странным. Ценнности? Практика? О ценностях только сектанты говорят. Вот откуда и пошло, что Agile - это религия.

    Agile же ставит под вопрос "человека-винтика" и своими ценностями, принципами и практиками выводит на новый уровень пониманияя процесс разарботки. Причем делает это за счёт хорошо выверенного взаимодействие этих компонент. Сами же компоненты существовали и ранее. Но в гармоничной совокупности они дали новый уровень. Тем самым и сами преобразились.

    По поводу выкалачивания денег из дураков. Ты скажи, кто конкретно выкалачивает деньги? И отзывы дураков от сего выкалачивания? :)

    А ещё скажи, ты же можешь дрова наколоть и печь истопить? Так почему ты тратишь деньги на централизованное отопление?
    Так и Agile. Но предметы которые создает Agile находятся вне объективного мира. Agile создает ментальную культуру, способ мышления, модель эффективного поведения для достижения проектных целей. А деньги платятся лишь тогда, когда ты делегируешь какую-то работу другому, чтобы достичь ещё больших результатов самому. К примеру дрова я могу наколоть, но пользуюсь отоплением, так как в это время могу заработать больше :)

    ОтветитьУдалить
  5. К тому же. Тот кто делает Agile о нём так не отзывается. А кто неделает - постоянно сыплет обвинения. Не наводит ли это тебя на мысль? Зрело ли такое поведение? Какие цели ты преследуешь таким поведением? Что тебе даст моя реакция на твое поведение?

    ОтветитьУдалить
  6. denis miller пишет о сущности Agile:
    Agile - гармонично подобранные ценности, принципы и практики. ... Это определенный набор, который ты можешь использовать ... Но, чтобы это понять, это нужно пережить, нужно обладать опытом. Суть передается телесно-ориентированным способом. ... И самое интересное перейдя на Agile ты с него не спрыгнешь ...
    ------------------------.

    такое в комментариях не нуждается
    (что-то не вижу возможности подписи комментария

    ОтветитьУдалить
  7. что пост, что камменты ни о чем... нихрена не понятно...
    ценности, принципы, практики... бла бла бла...
    что за ценности? какие принципы конкретно? что входит в практику??? три простых вопроса, а ответ типа "оооо... это доступно только великим... вом тупым не понять высших материй"

    ОтветитьУдалить
  8. Alex, да я сам до этого совершенно недавно дошёл :)
    Раньше тоже было всё не понятно.

    Концепт такой.
    Есть тыщи способов действовать, и только некоторые из них в каких-то контекстах приводят к результатам. Выделим их в удачные "практики"
    Есть сотни "практик", и в них есть какие-то основные "принципы"
    Есть десятки "принципов", и внутри... эти принципы содержат что-то общее, ключевые убеждения... Назовём их "ценности"
    Есть несколько "ценностей" (убеждений)

    От общего к частному когда строишь последовательность - вроде всё понятно. А вот когда наоборот - ничего не понятно.
    Это как раз в твоей ситуации. Я пошёл от абстрактного. Другими словами, чтобы одолеть мысль в посте, нужно обладать опытом, некоторой подготовкой.

    Как можно приорсти этот опыт. Варианты
    1) читать
    2) спрашивать
    3) пробовать

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

    Есть инженерные практики, но они уже будут ближе к разработке софта относится. Например: TDD, CI, PP и др.

    Чего я хотел сказать, тут просто так за 5 сек не раскроешь, что народ наизобретал. Но разобраться можно. Главное поставить цель. Вот скажи - зачем тебе оно?

    ОтветитьУдалить