AGILE

Agile - метод гибкой разработки. Применяется как эффективная практика организации труда небольших групп. Agile является семейством процессов разработки. В его основе лежит манифест (https://agilemanifesto.org). Идеи манифеста:

  • люди и взаимодействие важнее процессов и инструментов;
  • работающий продукт важнее исчерпывающей документации;
  • сотрудничество с заказчиком важнее согласования условий контракта;
  • готовность к изменениям важнее следования первоначальному плану.

Основополагающие принципы манифеста agile:

  • наивысшим приоритетом признается удовлетворение заказчика за счёт ранней и бесперебойной поставки ценного программного обеспечения;
  • изменение требований приветствуется даже в конце разработки (это может повысить конкурентоспособность полученного продукта);
  • частая поставка работающего программного обеспечения (каждые пару недель или пару месяцев с предпочтением меньшего периода); общение представителей бизнеса с разработчиками должно быть ежедневным на протяжение всего проекта
  • проекты следует строить вокруг заинтересованных людей, которых следует обеспечить нужными условиями работы, поддержкой и доверием;
  • самый эффективный метод обмена информацией в команде — личная встреча;
  • работающее программное обеспечение — лучший измеритель прогресса;
  • спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределённый срок;
  • постоянное внимание к техническому совершенству и хорошему проектированию увеличивают гибкость;
  • простота как искусство не делать лишней работы очень важна;
  • лучшие требования, архитектура и проектные решения получаются у самоорганизующихся команд;
  • команда регулярно обдумывает способы повышения своей эффективности и соответственно корректирует рабочий процесс.

С манифестом и принципами определились. Отлично. Можно сделать сразу несколько выводов-особенностей:

  1. Отсутствие нормальной документации для данной методологии это нормально.
  2. Команда разработки готовы работать за еду идею.
  3. “Бесконечность не предел” - спасибо Базу Лайтеру за цитату на века

Для начала нужно осознать, что везде где пишут, что agile это методология - нагло врут. Это философия. Здесь нет практических приемов и/или алгоритмов действий. Всё в принципах и манифесте указывает на как это должно восприниматься, но не как делаться.
Конечно же никто в здравом уме и твердой памяти не будет отказываться от нормальной документации - это банально сделает проект не поддерживаемым. Однако в реальности это часто приводит к тому, что за конкретным проектом следит конкретная команда. Даже внутри одной компании.
За идею люди тоже не готовы работать продолжительное время, хотя коммунисты до сих пор живут существуют.
Бесконечно удешевлять/оптимизировать процесс - утопия. В научной физике есть весьма четкие критерии после какого момента считать влияние каких-либо сил перестают. Также и в разработке. Оптимизация и удешевление процесса происходит до какого-либо момента. Только в отличие от науки четких критериев не существует.

Абстрагируемся до реальности.
Agile строится на пользовательских историях. Как их выделяют и какие считать более правильными и нужными здесь описано не будет. История реализуется в коде - тестируется - выкатывается в релиз. Повторять пока не надоест. Получается такой маленький цикл. Что в нем хорошо: все понимают как и когда заработает та или иная фича. Что плохо: мало людей (или совсем никто) не видит большую картину проекта.

Резюме. Agile это философия для сильных, сплоченных команд. Важно, чтобы были активные люди(визионеры), которым нужно выделять больше свободы в ресурсах. Agile заточен под работу с клиентами, которые в свою очередь работают с клиентами. Это тонкий момент, так как, к примеру, аджайл абсолютно не пригоден для написания софта к производствам. Банально нельзя запустить маленькую часть конвейера и хотеть получить продукт с конвейера. Так не работает.