Что такое Agile
Вероятно, многие команды, работающие по Agile, затруднятся дать ему точное определение. Что это: Философия? Некий набор принципов? Методология?
В целом, вы не ошибётесь, если выберите любой из этих вариантов. Это и методология, и набор принципов, и философия (хотя и не имеющая ничего общего с Сократом, Кантом, или Декартом).
Методология Agile, как понятно из названия, означает гибкость и подвижность, олицетворяя собой готовность к изменениям. Он противопоставляет себя сложившимся практикам в разработке программного обеспечения (хотя сами по себе принципы Agile применимы не только в сфере разработки приложений).
Если раньше были важнее сами процессы и инструменты для достижения целей, то теперь на первый план выходят люди и коммуникации между ними.
Готовое приложение важнее сотен страниц технической документации. Взаимодействие и живое общение с заказчиком важнее контрактных ограничений, связывающих обе стороны.
И наконец, изменения. Изменения – это определяющее понятие в Agile. Как бы не был хорош изначально заготовленный план, никто не может продумать всё идеально от начала и до конца, особенно если проект рассчитан на долгие месяцы разработки.
Очевидно, что Agile команды появились не просто так. В принципах методологии сокрыты и изначальные проблемы, с которыми сталкивались заказчики и разработчики в процессе создания ПО.
Это, в свою очередь, позволило реализовать один из главных принципов Agile – частые поставки дополнительного функционала. Путём небольших итераций (цикл разработки нового функционала) размером в несколько недель, заказчик получил возможность получать рабочие версии приложения ещё задолго до финального релиза.
Разберём наиболее популярные виды Agile:
Scrum подразумевает постоянную коммуникацию – будь то планирование очередного спринта совместно с клиентом, или ежедневный скрам-митинг, в течение которого команда обсуждает все вопросы.
Таким образом команда идёт к конечной цели путём постепенного наращивания функционала небольшими порциями. Например, вы хотите заняться разработкой мобильного приложения, скажем, мессенджера.
Но какой смысл будет во всех этих замечательных видеозвонках, вылизанных стикерах и сложной системой премиум-аккаунтов, если приложение не сможет выполнять свою основную функцию – отправка сообщений? Логично, что для данного приложения приоритетным минимальным функционалом будет возможность отправлять сообщения, а всё остальное команда сможет добавить потом, сделав из него “конфетку”.
Второй – ограничение максимального количества задач, находящихся на одном этапе. Это позволяет свести производственные потери к минимуму – команда максимально сосредоточена на своих задачах. Например, заводу вряд ли будет выгодно производить двигатели быстрее, чем собираются автомобили.
В таком случае заказчик только потратит лишние деньги. Третий, и, пожалуй, самый главный принцип – оптимизация процесса производства.
Время на выполнение каждой задачи отслеживается, команда постоянно анализирует результаты, и смотрит, как можно выполнить работу наилучшим образом. В процессе разработки не должно быть простоев, равно как и не должна быть выполнена ненужная работа.
Не только Agile
Для большей наглядности следует сравнить Agile с одной из классических моделей – waterfall (водопад). Особо рьяные последовали Agile любят при удобном случае указать на отсталость водопада, забывая при этом, что он вполне себе хорош для больших и фундаментальных проектов.
Например, постройка космического шаттла. Вряд ли вы захотите добавлять в настолько сложную конструкцию какие-либо изменения. Хотя, конечно, для разработки мобильного приложения водопад вряд ли подойдет. Но вернёмся к самой модели.
Представьте настоящий водопад. Может ли вода в нём потечь в обратном направлении, когда уже упала с обрыва? Нет. Ну, по крайней мере до тех пор, пока существует гравитация. То же самое можно сказать и в отношении модели «водопад».
Она крайне линейна, в неё очень трудно вносить изменения. До начала проекта нужно уточнить каждую мелочь – проект не может повернуть назад, как и вода в водопаде. Именно поэтому большинство проблем скорее всего проявятся уже на стадии тестирования, когда процесс разработки уже закончен.
Как уже стало понятно, методологоия Agile является гораздо более гибкой, чем waterfall. Тем не менее, водопад вполне подойдет малоопытной команде разработчиков, т.к. сам подход очень хорошо структурирован.
Также данную модель можно использовать в случае, если время и деньги для вас – не проблема, и ваша компания готова потратить много ресурсов на тестирование и «полировку» продукта.
Особенности команд, работающих по Agile
Многие Agile команды редко могут точно определить, какой тип Agile они используют. Вряд ли вы найдете себе выделенную команду разработчиков, работающих по чистому scrum, или руководствующуюся исключительно lean-принципами.
Есть общие позитивные практики, которые будет не лишним использовать любой команде. Ежедневные scrum-митинги, бэклоги (журналы пожеланий заказчика), итеративная разработка с фиксированным размером спринтов, банальная доска задач, где непосредственно и вывешиваются задачи, карта проекта (долгосрочное планирование спринтов), ретроспектива проекта и т.д.
Будьте готовы к тому, что придется часто созваниваться с вашей выделенной командой разработчиков для уточнения требований к проекту и предоставления обратной связи по уже реализованному функционалу продукта. Это единственный способ получить именно то, что вы хотели.
К счастью, практически любая задача при использовании Agile оказывается вполне выполнимой, особенно при наличии опытной выделенной команды разработчиков.
looks good!
We will process the request and contact you.
Now fill in information about yourself: