четверг, 17 декабря 2015 г.

Коротко: Методология SCRUM

Вдохновленный прочтением "Scrum. Революционный метод управления проектами", хочется немного подвести итоги и написать об основных моментах методологии scrum.

До появления scrum, для разработки программного обеспечения и не только, использовали каскадную технику. Т.е. процесс разбивался на некоторые этапы, и на каждый этап отводилось определенное время. Перейти к следующему этапу можно было, только после завершения предыдущего. Приведу пример:

Проектирование -> Дизайн пользовательского интерфейса -> Написание кода -> Тестирование.


Чем же плох такой подход?

Нельзя заранее сказать сколько времени займет тот или иной этап, нельзя предвидеть все нюансы и сложности которые могут возникнуть, нельзя сказать точно какова будет производительность команды над данным проектом и прочее. Сроки срывали, бюджеты росли, но в один прекрасный момент появился scrum. придумал его товарищ Сазерлед, часть идей, он позаимствовал у компании Toyota, что честно и признает. Scrum более гибче позволяет наладить процесс разработки, это относиться не только к производству программного обеспечения, он применим абсолютно к любой области. Перечислю основные тезисы, из них станет понятно, что из себя представляет scrum:

  1. Весь процесс разработки производит одна команда, она должна состоять из 3-9 человек, не более. В нее должны входить специалисты имеющие знания достаточные для всего процесса. Члены команды сами решают, каким образом выполнять поставленную задачу.
  2. Разработка делиться на мелкие этапы - спринты, на каждом спринте выбирается некоторый пул приоритетных, важных задач. Оценка приоритетности задач оценивается с точки зрения бизнеса.
  3. Сторону бизнеса в команде представляет человек - владелец продукта. Он контактирует с заказчиком.
  4. После каждого спринта должны получать в идеале работающий продукт, пускай, и не со всеми функциями. Продукт потом можно будет показать конечным пользователям и получить обратную связь, для корректировки целей для последующих спринтов.
  5. Оценка сроков выполнения основывается на том, с каким темпом работает команда. Т.е. каждой задаче присваивается некоторое значение (делается это командным голосованием), определяющее ее сложность. Затем после того, как команда пройдет несколько спринтов, можно определить с какой скоростью она работает, сколько времени тратит на условную единицу работы. Исходя из этого значения можно точнее дать оценку для всего проекта.
  6. В команде присутствует scrum мастер, он налаживает процесс разработки, при этом не вмешиваясь в работу команды. Этот человек определяет продолжительность спринтов, количество задач, берет на себя оценку трудозатрат на проект. Он не руководит группой.

Вся прелесть методологии scrum заключается в ее гибкости. Мы выполняем какую то работу, собираем обратную связь, корректируем цели, и снова повторяем процесс. Таким образом достигаются те самые 20% процентов функциональности, которые, действительно, нужны пользователям. Мы тратим силы только на то, что действительно нужно и будет полезно с точки зрения конечных потребителей.

Для большего запоминания приведу подробную диаграмму

методология программирования scrum