Решил написать о сравнительно новой методике экстремального программирования - Agile, которая в последнее время на западе приобрела огромную популярность.
Начну с определения “Экстремальное программирование” по версии ru.wikipedia.org:

Экстремальное управление проектами — англ. Extreme project management (XPM) — метод управления очень сложными или неопределёнными проектами. От традиционных методов управления проектами XPM отличается открытым, гибким и недетерминистским подходом. Основное внимание уделяется человеческому фактору в управлении проектами, а не следованию запутанным техникам и строгому формализму. XPM является обобщением методик экстремального программирования.

Эта цитата дает общее понимание методики экстремального программирования, что же касается именно Agile, здесь имеем такой вариант:

Гибкая методология разработки (англ. Agile software development) — это концептуальный каркас, в рамках которого выполняется разработка программного обеспечения. Существует несколько подобных методик.

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

Очень интересную информацию о реальном применении Agile в команде разработчиков нашел здесь:

Команда не может мгновенно стать высокопродуктивной. Она обязательно проходит через несколько последовательных фаз развития:

Forming. Члены команды начинают осторожно присматриваться друг к другу. Они учатся работать друг с другом и пытаются понять свою роль в команде

Storming. После окончания разведки члены команды начинают сражаться за власть и контроль на проектом. Они практически никогда не могут согласится с друг другом, выражают недоверие и предубеждение. На этом этапе несколько лидеров формируют вокруг себя альянсы. Эта самая тяжелая, но к сожалению, неизбежная фаза формирования команды. Очень важно на этом этапе правильно управлять конфликтами

Norming. Борьба постепенно заканчивается, члены команды теперь знают друг друга достаточно хорошо и начинают понемногу доверять друг другу. На совместных обсуждениях они способны достигать консенсуса и принимать командные решения.

Performing. Команда самоуправляема и наконец может отвлечься от выяснения отношения и полностью посвятить себя проекту. Члены команды полностью доверяют друг другу и чувствуют ответственность друг перед другом. Команда начинает действовать как один человек: она может давать обещания и выполнять их. Она способна принимать решения руководствуясь стратегическими соображениями

Теперь становится понятно, почему некоторые Agile проекты имели проблемы на самом старте - они не смогли преодолеть стадию «Storming».

Подобным образом работает и методика разработки Scrum:
Scrum
Рисунок дает понять основной принцип разработки.
Подробную информацию о данной методике можно найти здесь.
Надеюсь описания данных методик натолкнули вас на возможную оптимизацию при разработке программных продуктов. Желаю что б программирование не
стало слишком экстремальным ;)
PS: Как я и обещал, я написал статью о Model-View-Controller.

Комментарии (9) на запись “Agile, Scrum и экстремальное программирование”

  1. Arina пишет:

    Интересно ходить на различные конференции на эту тему, там много интересных вещей “из первых уст” :-)

  2. Евгений пишет:

    С самого начала ничего не понял. Очень понравилась фраза “Члены команды начинают осторожно присматриваться друг к другу”. Попробую прочитать еще пару раз:)

  3. freezero пишет:

    Хм, интересно, хотя и очень хитро)

  4. vova пишет:

    Продолжайте проливать свет на сие. Заинтересовало.

  5. Влад пишет:

    Интересное методика, Но, отложу статью на понедельник. Для более вдумчивого чтения.
    Уж как-то немного непонятно. “как”?

  6. Gaver пишет:

    что именно “как” ? :)

  7. forsyte пишет:

    статья толковая, обновил свою БД свежей информацией :)

  8. Tosha пишет:

    Если можно, то хотелось бы узнать более подробно о том, какое место занимает тестирование во всем этом процессе. То есть, как часто происходит тестирование, завозятся ли ежедневные билды в течении всех 30 дней?
    И как обычно происходит планирование тестирования в связи с таким способом разработки. Если есть практика, поделитесь плиз :) спасибо

  9. DeVoid пишет:

    К сожалению практиковать такие методы разработки еще не приходилось. Но в скором времени думаю смогу поделиться некоторой информацией по этому поводу.

Оставить комментарий