Гибкие методологии Agile
Введение в урок
В этом уроке вы узнаете подробнее, что такое гибкие методологии, какие идеи лежат в их основе и для каких проектов они подходят.
Гибкие методологии разработки (Agile software development) — это совокупность подходов к разработке программного обеспечения, которые основаны на ценностях Манифеста гибкой разработки (Agile Manifesto). В нём также содержатся 12 принципов, дополняющих правила по разработке программного обеспечения.
Наиболее популярные подходы в группе гибких методологий — Scrum и Kanban. Многие компании используют их для организации работы своих команд. Кроме них, к гибким методологиям относятся экстремальное программирование, функционально-ориентированная разработка и другие.
Гибкие методологии пришли в разработку ПО, когда стало понятно, что классические методы управления не подходят для ситуаций, где нужно быстро принимать решения и менять продукт по ходу работы. Гибкость в таких методологиях обеспечивает то, что команда разработки создаёт продукт не целиком, а по частям, фокусируясь только на самом важном.
Agile позволяет команде не планировать разработку сильно наперёд и не требует от неё предсказать, сколько времени займёт та или иная задача. Так участники команды не обещают заказчику то, чего не смогут выполнить, и не делают то, что ему уже не нужно. Agile-манифест описывает не только как вести разработку ПО, но и то, как должна выстраиваться коммуникация в команде, на какие ценности она должна опираться.
Основные ценности, на которых строится любая методология из группы Agile:
- Люди и взаимодействие важнее процессов и инструментов.
- Работающий продукт важнее исчерпывающей документации.
- Сотрудничество с заказчиком важнее согласования условий контракта.
- Готовность к изменениям важнее следования первоначальному плану.
На практике командам, которые работают по принципам гибких методологий, не всегда удаётся следовать заветам Agile. Это скорее идеал, к которому им нужно стремиться. Но важно и не забывать, что методология адаптируется к обстоятельствам, а не обстоятельства подстраиваются под методологию.
Люди и взаимодействие важнее процессов и инструментов
Самое важное в команде — люди, из которых она состоит. Ни хорошие инструменты, ни удачно выстроенные процессы не имеют смысла без людей. Поэтому важно сначала подумать, как участникам команды было бы удобно решать свои рабочие задачи, а потом уже искать подходящие инструменты и процессы — они не должны стать бременем.
Например, вы с друзьями собрались дома для просмотра фильма. Нужно выбрать, что вы будете смотреть. Тут есть несколько вариантов:
- Кто-то лично примет решение.
- Каждый предложит своё.
- Вы воспользуетесь функцией shuffle («перемешать»), которую предлагают многие стриминговые сервисы, — она включит случайный фильм из медиатеки.
Сработать может любой из вариантов, главное — обсудить его с друзьями: возможно, кто-то не захочет участвовать в обсуждении и готов смотреть любой фильм, у кого-то уже есть свои соображения. Как вы придёте к цели, не так важно, главное, чтобы в процессе всем было комфортно.
Работающий продукт важнее исчерпывающей документации
Одно из важных качеств хорошего продукта — соответствие потребностям пользователей. В командной работе этот фокус нередко теряется, участники сосредотачиваются на выполнении своих обязанностей. Системные аналитики, например, могут сконцентрироваться на подготовке технического задания или документации и забыть про работу над ценностью приложения для пользователя. В этом случае страдают и пользователи, и приложение, поэтому важно искать баланс между подготовкой документации и созданием ценности для пользователя.
Бывает так, что команда разработки закончила одну из задач, а дополнения о том, как работает продукт с новыми изменениями, ещё не внесли в документацию. Это частая ситуация в командах, когда документация не поспевает за изменениями в продукте. В этом случае придётся выбирать: выпустить обновлённое приложение сразу или дождаться, пока обновится документация, и после начать релиз. В данном случае лучше обновить приложение, а потом уже заняться документацией, так как важнее в первую очередь закрыть потребности пользователей.
Сотрудничество с заказчиком важнее согласования условий контракта
Работая в команде, можно достигать бОльших результатов, чем в одиночку. То же справедливо для тандема команды разработки и заказчика. При вовлечении заказчика команда разработки лучше понимает его требования, делает именно то, что нужно, а заказчик всегда знает, как продвигается разработка, и может внести правки. Так работа команды становится более прозрачной и понятной для заказчика, а он, в свою очередь, становится соучастником процесса создания ПО.
Продумывание всех деталей на старте работы приводит к тому, что заказчик увидит только готовый результат и не сможет скорректировать действия команды по ходу работы. В проектах с высокой степенью неопределённости это может быть критично. Привлекайте заказчика к основным этапам создания продукта для того, чтобы скорректировать решение и сократить время доработок после выпуска продукта или новой функциональности.
Готовность к изменениям важнее следования первоначальному плану
Поскольку главная задача продукта — закрыть потребности пользователей, команде необходимо постоянно задаваться вопросами: «Делаем ли мы то, что нужно? Соответствуют ли наш продукт и наши решения текущим потребностям пользователей?»
Благодаря тому, что продукт обновляется по частям, а не сразу, команда разработки получает от пользователей обратную связь и с каждой новой итерацией знает об их потребностях больше, чем в начале работы. Изменения важны для продукта, и нужно готовить себя к ним, ведь мир и обстоятельства меняются. Не заковывайте себя в рамки строгих планов и целей, чтобы продукт не оказался ненужным или нерелевантным потребностям пользователей.