Что такое Agile

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Данная статья:


Привет! В этой статье мы вкратце расскажем о том, что такое Agile.

Сразу оговоримся, что данная статья не претендует на супер научный многотомный труд об Agile.

Основная задача: "на пальцах" объяснить начинающему программисту что такое Agile и почему он(-а) должен следовать ценностям и принципам Agile.

Что такое Agile

Представьте, что Вы руководитель IT-компании. У Вас в компании работает 100 разработчиков. Есть заграничный заказчик, который заказал Вам разработку трех абсолютно разных продуктов. Ну, круто же! Есть заказчик - есть деньги. Все вроде бы хорошо.

Но есть 2 больших "НО":

1. Заказчик:

  • требует регулярного отчета о том как продвигается работа
  • сначала дает одно техническое задание, на основании которого начинается разработка программного обеспечения. Уже идет полным ходом разработка, а заказчик время от времени вносит в техническое задание все новые и новые коррективы. Причем достаточно часто "хотелки" заказчика могут в корне отличаться от его "хотелок" в самом начале работы над продуктом.

А именно так все и происходит в реальной жизни. И как быть? Ведь заказчик платит деньги.

2. Команда: 

Да, у Вас 100 разработчиков. Чтоб сделать для заказчика 3 продукта Вы их разбили на 3 группы.

Однако:

  • как управлять данными командами программистов?
  • как быть уверенным, что продукт будет сделан в срок?
  • как быть уверенным, что в рабочее время все разработчики действительно работают?
  • как наладить взаимодействие между разными разработчиками одно и той же группы? Например, между Java разработчиками, front-end разработчиками, тестировщиками и т.д.

Уж поверьте - это очень и очень сложная задача управлять командой и управлять желаниями заказчика. Это только кажется, что это просто.

Именно для решения данной задачи и возник Agile. 

И все же что такое Agile?

Agile с английского переводится как "гибкий, ловкий". Agile - это о том, как сделать так, чтоб:

  • и команда разработчиков работала эффективно (с одной стороны - загружена работой без простоев, срывов дэдлайнов, с хорошей коммуникацией в команде; с другой стороны - не перегружена работой, когда ставятся нереальные сроки и объемы работ)
  • и клиент был доволен (с одной стороны - вовремя сдан продукт, выполнено все согласно техзадания; с другой стороны - управление в том числе и клиентом и его "хотелками" в рамках возможностей команды и согласованной стоимости разработки ПО)

Agile - это философия "гибких" подходов к организации процесса разработки ПО.

IT-компания, которая организовывает процесс разработки ПО согласно Agile, должна стараться следовать таким ценностям Agile.

Ценности Agile

  • Люди и взаимодействие ВАЖНЕЕ процессов и инструментов
  • Работающий продукт ВАЖНЕЕ исчерпывающей документации
  • Сотрудничество с заказчиком ВАЖНЕЕ согласования условий контракта
  • Готовность к изменениям ВАЖНЕЕ следования первоначальному плану

"ВАЖНЕЕ" в данном контексте значит, что немного акцент все-таки смещается на: людей и взаимодействие, работающий продукт и т.д.  Потому что, например, кому нужна великолепно прописанная, детализированная документация, если продукт по факту "сыроват"?

А на практике?

Вот как может выглядеть работа в компании, использующей Agile:

  • Проект разбивается на небольшие подзадачи.

Поскольку не все задания можно равнять "под одну гребенку", обычно задачам может даваться "вес" - от 1 до 8, например.

  • Эти подзадачи расставляются по приоритетам.

Естественно, задачи надо приоритизировать. При этом, как Вы помните, показателем успеха является работающий продукт ("Работающий продукт важнее исчерпывающей документации").

  • Наше время разбито на циклы - итерации. Одна итерация - от 1 до 4 недель.

В конце каждой итерации мы демонстрируем результаты заказчику. Это помогает адаптироваться к быстрым изменениям на рынке ("вчера хотели котиков, а теперь печеньки"). Как Вы помните, четвертая ценность - "готовность к изменениям важнее следования первоначальному плану".

  • Мы набираем задачи на следующую итерацию.

Как Вы помните, задачи могут иметь разный вес (например, от 1 до 8). Так, например, вся команда берет себе задач общим весом, например, 40. При том, это число определяется с практикой именно в этой команде и примерно равно именно тому количеству баллов, которое команда реально способна сделать за итерацию. Каждый разработчик берет себе задачи одну за другой по мере выполнения.  Таким образом программисты защищены от переработки и прессинга заказчика.

В результате, каждые пару недель у нас есть видимый результат. Так гораздо удобнее следить за рабочим процессом 🙂

Что дальше

В этой статье мы рассказали что такое Agile в первом приближении.

Также Вы должны знать, что Agile приобрел популярность в 2001 году, после выпуска «Манифест гибкой методологии разработки программного обеспечения» («Agile Manifesto»). По сути, любой метод разработки, который соответствует ценностям «Agile Manifesto» считается Agile.

Существует огромное множество методик, базирующихся на философии Agile:

  • Scrum
  • Kanban
  • Agile Modelling
  • Экстремальное программирование
  • Бережливая разработка программного обеспечения
  • BSDM
  • и др.

В общих чертах, что такое Agile и почему он так важен во время организации процесса разработки ПО Вы уже знаете. Когда приступите к разработке ПО в команде разработчиков, работающей согласно принципов и ценностей Agile, все это станет еще понятнее 😉


Надеемся, наша статья была Вам полезна. Можно записаться на наши курсы по Java. Детальнее у нас на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--