AGILE
Agile - это средство насилия над разработчиками метод гибкой разработки. Применяется как эффективная практика организации труда небольших групп. Agile является семейством процессов разработки. В его основе лежит манифест (https://agilemanifesto.org). Идеи манифеста:
- люди и взаимодействие важнее процессов и инструментов;
- работающий продукт важнее исчерпывающей документации;
- сотрудничество с заказчиком важнее согласования условий контракта;
- готовность к изменениям важнее следования первоначальному плану.
Основополагающие принципы манифеста agile:
- наивысшим приоритетом признается удовлетворение заказчика за счёт ранней и бесперебойной поставки ценного программного обеспечения;
- изменение требований приветствуется даже в конце разработки (это может повысить конкурентоспособность полученного продукта);
- частая поставка работающего программного обеспечения (каждые пару недель или пару месяцев с предпочтением меньшего периода); общение представителей бизнеса с разработчиками должно быть ежедневным на протяжение всего проекта
- проекты следует строить вокруг заинтересованных людей, которых следует обеспечить нужными условиями работы, поддержкой и доверием;
- самый эффективный метод обмена информацией в команде — личная встреча;
- работающее программное обеспечение — лучший измеритель прогресса;
- спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределённый срок;
- постоянное внимание к техническому совершенству и хорошему проектированию увеличивают гибкость;
- простота как искусство не делать лишней работы очень важна;
- лучшие требования, архитектура и проектные решения получаются у самоорганизующихся команд;
- команда регулярно обдумывает способы повышения своей эффективности и соответственно корректирует рабочий процесс.
С манифестом и принципами определились. Отлично. Можно сделать сразу несколько выводов-особенностей:
- Отсутствие нормальной документации для данной методологии это нормально.
- Команда разработки готовы работать за еду идею.
- “Бесконечность не предел” - спасибо Базу Лайтеру за цитату на века
Для начала нужно осознать, что везде где пишут, что agile это методология - нагло врут. Это философия. Здесь нет практических приемов и/или алгоритмов действий. Всё в принципах и манифесте указывает на как это должно восприниматься, но не как делаться.
Конечно же никто в здравом уме и твердой памяти не будет отказываться от нормальной документации - это банально сделает проект не поддерживаемым. Однако в реальности это часто приводит к тому, что за конкретным проектом следит конкретная команда. Даже внутри одной компании.
За идею люди тоже не готовы работать продолжительное время, хотя коммунисты до сих пор живут существуют.
Бесконечно удешевлять/оптимизировать процесс - утопия. В научной физике есть весьма четкие критерии после какого момента считать влияние каких-либо сил перестают. Также и в разработке. Оптимизация и удешевление процесса происходит до какого-либо момента. Только в отличие от науки четких критериев не существует.
Абстрагируемся до реальности.
Agile строится на пользовательских историях. Как их выделяют и какие считать более правильными и нужными здесь описано не будет. История реализуется в коде - тестируется - выкатывается в релиз. Повторять пока не надоест. Получается такой маленький цикл. Что в нем хорошо: все понимают как и когда заработает та или иная фича. Что плохо: мало людей (или совсем никто) не видит большую картину проекта.
Резюме.
Agile это философия для сильных, сплоченных команд. Важно, чтобы были активные люди(визионеры), которым нужно выделять больше свободы в ресурсах. Agile заточен под работу с клиентами, которые в свою очередь работают с клиентами. Это тонкий момент, так как, к примеру, аджайл абсолютно не пригоден для написания софта к производствам. Банально нельзя запустить маленькую часть конвейера и хотеть получить продукт с конвейера. Так не работает.