> For the complete documentation index, see [llms.txt](https://sallyit.gitbook.io/akademiait/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sallyit.gitbook.io/akademiait/obuchenie/den-1/lekcii/metodologii/agile.md).

# AGILE

<mark style="color:orange;">**Agile**</mark> — это гибкая методология разработки, которая фокусируется на итеративном и инкрементальном подходе. Основные принципы Agile описаны в "Манифесте Agile", который подчеркивает важность взаимодействия с заказчиком, гибкости и быстрой адаптации к изменениям.

<mark style="color:orange;">**Основные характеристики Agile:**</mark>

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

<mark style="color:orange;">**Преимущества Agile:**</mark>

* Быстрая реакция на изменения.
* Постоянная обратная связь от клиента.
* Возможность раннего выявления и исправления ошибок.

<mark style="color:orange;">**Недостатки Agile:**</mark>

* Требует высокого уровня взаимодействия и вовлеченности команды.
* Может быть трудно спрогнозировать сроки и бюджет.

<mark style="color:orange;">**Разновидности AGILE**</mark>

Scrum и Kanban — это две популярные методологии в рамках Agile, которые помогают командам управлять процессом разработки программного обеспечения и других проектов. Давайте рассмотрим их более подробно.

<mark style="color:orange;">**Scrum**</mark>

<figure><img src="https://3558955033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbZKWe747D7DUg6CC8XPy%2Fuploads%2FqsD64zlrniMTdf2r2G32%2FSCRUM.webp?alt=media&amp;token=b3313693-7fad-4a79-93b9-6cc992687db3" alt=""><figcaption></figcaption></figure>

Scrum — это Agile-методология, которая фокусируется на выполнении проектов с высокой степенью неопределенности, разделяя процесс на короткие, фиксированные по времени циклы, называемые спринтами. Scrum помогает командам работать над сложными задачами, предоставляя готовый продукт с высокой ценностью для клиента через регулярные промежутки времени.

Основные компоненты Scrum:

Роли в Scrum:

* Product Owner (Владелец продукта): Ответственен за формирование и управление бэклогом продукта, определяет приоритеты задач и взаимодействует с клиентами.
* Scrum Master: Обеспечивает соблюдение принципов Scrum, помогает команде устранять препятствия и улучшать процессы.
* Development Team (Команда разработки): Самоорганизующаяся команда, которая работает над выполнением задач, поставленных в спринте.

Артефакты Scrum:

* Product Backlog (Бэклог продукта): Список всех задач, функций и требований, необходимых для создания продукта.
* Sprint Backlog (Бэклог спринта): Подмножество задач из бэклога продукта, выбранное для выполнения в текущем спринте.
* Increment (Инкремент): Готовая часть продукта, представляющая собой результат завершения спринта.

События в Scrum:

* Sprint Planning (Планирование спринта): Встреча, на которой команда определяет задачи для следующего спринта.
* Daily Scrum (Ежедневный скрам): Краткая встреча (обычно не более 15 минут), на которой команда обсуждает прогресс, план на день и препятствия.
* Sprint Review (Обзор спринта): Встреча в конце спринта, на которой команда демонстрирует завершенные задачи и получает обратную связь от заинтересованных сторон.
* Sprint Retrospective (Ретроспектива спринта): Встреча для обсуждения того, что прошло хорошо, что можно улучшить и как повысить эффективность в следующем спринте.

Преимущества Scrum:

* Прозрачность процесса разработки.
* Быстрая адаптация к изменениям.
* Постоянная обратная связь от клиента.
* Четкое распределение ответственности.

Недостатки Scrum:

* Требует дисциплины и самоорганизации команды.
* Может не подходить для проектов с фиксированными требованиями и жесткими сроками.

<mark style="color:orange;">**Kanban**</mark>

<figure><img src="https://3558955033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbZKWe747D7DUg6CC8XPy%2Fuploads%2FWPbokJffyiYARcCEvfe2%2Fkanban.webp?alt=media&amp;token=dd8d403a-bf0c-4c36-a330-7634d89e3165" alt=""><figcaption></figcaption></figure>

Kanban — это методология управления рабочими процессами, которая фокусируется на визуализации задач и оптимизации потоков работ. Канбан позволяет командам контролировать текущие задачи, минимизировать потери времени и улучшать эффективность работы.

Основные элементы Kanban:

Kanban-доска:

* Это визуальный инструмент, который отображает все задачи команды. Доска разделена на столбцы, представляющие разные этапы работы (например, "To Do", "In Progress", "Done").
* Каждая задача отображается на карточке, которая перемещается между столбцами по мере выполнения.

Work In Progress (WIP) Limits:

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

Цикл выполнения (Cycle Time):

* Время, необходимое для завершения задачи от момента её начала до завершения. Kanban стремится минимизировать цикл выполнения задач.

Принципы Kanban:

* Визуализация рабочего процесса: Доска Kanban помогает всем участникам команды видеть, над чем они работают, и где могут возникнуть задержки.
* Ограничение незавершенной работы (WIP): Установка лимитов на количество задач, выполняемых одновременно, помогает избежать узких мест.
* Управление потоком: Kanban помогает оптимизировать последовательность задач и уменьшить время выполнения.
* Явные правила: Вся команда должна знать и следовать установленным правилам и процессам.

Преимущества Kanban:

* Легкость внедрения и использования.
* Гибкость в управлении задачами.
* Постепенное улучшение процессов.
* Подходит для непрерывного потока задач, таких как поддержка и обслуживание.

Недостатки Kanban:

* Может быть менее структурированным, чем Scrum.
* Меньше акцент на командные взаимодействия и улучшение, чем в Scrum.

<mark style="color:orange;">**Различия между Scrum и Kanban**</mark>

* Структура: Scrum более структурирован и организован в спринты с фиксированной длительностью, тогда как Kanban — это непрерывный процесс без жестких временных рамок.
* Роли: Scrum имеет четко определенные роли (Product Owner, Scrum Master, Development Team), тогда как в Kanban роли обычно не определены.
* Планирование: Scrum требует планирования спринтов и регулярных встреч, в то время как Kanban менее формализован в плане встреч и планирования.
* Подход к задачам: Scrum фокусируется на выполнении задач в рамках спринта, а Kanban ориентирован на оптимизацию процесса выполнения задач в целом.

Обе методологии могут быть полезны в зависимости от контекста проекта и специфики команды. Иногда их даже комбинируют для достижения наилучших результатов.
