Почему вы должны выбрать Scrum для веб и мобильных разработок

Мы обсудили, как Scrum работает, и почему он является более продуктивным способом для структурирования разработки web и мобильных продуктов. Теперь есть смысл остановиться и подвести итог основным моментам применения Scrum именно к web и к разработке мобильных продуктов.
С фундаментальной точки зрения, Scrum предлагает групповой подход к работе над проектом, позволяющий улучшить процесс разработки продукта за счет итеративного самоанализа. Этот подход помогает группе оценивать собственные возможности по решению незнакомых задач, предлагает метрики для оценки эффективности группы, поощряет обсуждение реализации вместо использования статичных спецификаций, и в регулярной манере поддерживает быструю реакцию на изменяющиеся рыночные условия.
Все эти преимущества могут создать реальную разницу при разработке web и мобильных продуктов. Большинство работ в этой области очень чувствительны к времени разработки, и нуждаются в быстрой реакции на изменения рынка. Означает ли это новые браузеры, новые технологии или новые программы обмена мгновенного сообщениями, в любом случае группы, занимающиеся разработкой web и мобильных продуктов, должны иметь возможность реагировать быстро.
Scrum предоставляет методологию, позволяющую разработчикам работать в направлении видения продукта, и возможность менять направления работы по мере изменения окружения, не испытывая чувство потери концентрации.
Следуя лучшим практикам разработки, работы, включаемые в построение и развитие сетевого или мобильного проекта, обычно разбиваются на отдельные шаги, которые могут выполняться независимо, с фиксацией ядра инфраструктуры, поддерживающего широкий диапазон независимых описаний, задающих свойства продукта. Это облегчает независимость разработки отдельной части проекта и выравнивает совместно используемые ресурсы на других частях того же проекта.
Scrum поощряет группу к тому, чтобы разъяснять работу над новым свойством проекта, что дает возможность разрабатывать их параллельно, не полагаясь на другие, еще не реализованные свойства. Используя истории, и добиваясь, чтобы каждая история была правильно отформатирована и оценена, группа устанавливает для себя стабильную и продуктивную среду разработки.
Замечание: некоторые определения терминов Scrum
Когда в Scrum используется слово, оно имеет только тот смысл, который в него вкладывает Scrum. Но в отличие от Шалтай-болтая из Зазеркалья, Scrum полагается на знакомые и легко понимаемые определения. Освоение языка является одним из первых шагов в приобретении нового опыта, а правильное использование языка создает основу совместной работы группы. Приведенные ниже термины — это только некоторые из тех, которые будут далее в книге определены более детально, но быстрое ознакомление с этими понятиями может помочь дальнейшему чтению.
Agile (динамичный)
набор методов разработки программного обеспечения, помогающих инженерам работать вместе, а также быстро и легко адаптироваться к изменениям
Artifact (артефакт)
физический или виртуальный инструмент, используемый группой Scrum для облегчения процесса Scrum.
Blocker (блокатор)
все, что препятствует инженеру двигаться вперед по реализации задачи
Customer (Клиент)
тот, кто вовлек группу в создание продукта
Engineer/Developer (инженер/разработчик)
лицо, ответственное за создание и обслуживание технологии, входящей в состав проекта
Engineering Organization (инженерное подразделение)
часть компании, где работают инженеры, создавая и обслуживая продукты
Product (продукт)
то, что инженерное подразделение создает или обслуживает для клиента
Product backlog (журнал требований к продукту)
постоянно изменяющийся список потенциальных свойств, характеристик или изменений продукта
Product owner (владелец продукта)
лицо, помогающее определить продукт для группы. Его работа может заключаться в поддержании постоянного контакта, если клиент не удовлетворен работой
Retrospective (ретроспективное совещание)
регулярная возможность для группы понять, как они работают и что они могут сделать для улучшения
Ritual (ритуал)
группа людей, собирающаяся вместе в рамках процесса Scrum на фиксированное время, имеющая четкие требования повестку для достижения четко определенного результата
Scrum Master (скрам-мастер)
лицо, ответственное за обслуживание артефактов и контролирующее ритуалы Scrum
Sprint (спринт)
фиксированное количество дней, в течение которых группа может совместно работать по реализации согласованного набора изменений продукта
Sprint backlog (журнал требований спринта)
конечный и хорошо определенный набор согласованных группой историй, которые они могут завершить в текущем спринте
Story (история)
четкий и последовательный способ фрагментации, формулировок и обсуждения работы, который может потребоваться группе при работе над продуктом
User (пользователь)
лицо, которое будет использовать продукт
Scrum достаточно гибок для поддержания стиля работы для владельцев, предпочитающих разбивать истории на порции. Такие порции могут быть выполнены за одну неделю, две недели, три недели, четыре недели, или за более долгий срок. В то же время большинство групп разработки web и мобильных продуктов обычно разбивают работу на сегменты длительностью одну-две недели — в терминологии Scrum называемые спринтами — на тот период, который, по мнению группы должен работать. До тех пор, пока группа отслеживает, прохождение совместной работы и имеет возможность регулярно оценивать выполнение планов, Scrum может адаптироваться к работе над различными проектами, от простейших, до наиболее сложных.
Чувствительность ко времени
Scrum предоставляет возможность в каждом спринте интегрировать идеи дизайнеров, инженеров, исполнителей, клиентов и менеджеров продукта при помощи реальных пожеланий клиента. Благодаря циклической природе Scrum и итеративному подходу, поощряющему обучение в процессе работы, Scrum позволяет быстро адаптировать web и мобильные проекты к изменению технологий и изменениям ожиданий рынка.
Модульное развитие
Scrum поддерживает возможность разработки проекта в виде модулей. Поскольку Scrum основан на представлении в терминах срезов функциональности, он идеально подходит для создания независимых, взаимодействующих свойств, которые могут разрабатываться самостоятельно и гармонично работать вместе.
Например, новая часть сайта может наследовать стили и структуру CSS от общедоступного руководства стилей, а функциональности наследовать от общедоступного шаблона. Работа по созданию этой части опирается на эти компоненты, остающиеся статическими достаточно долго для завершения работы. Scrum предоставляет стабильное поддержание этого, не ограничивая развитие остальной части сайта.
В то же самое время, обновление инфраструктуры продукта для обеспечения его новых свойств может производиться в любое время в процессе разработки, и группа должна заранее определять, как безопасно осуществлять эти изменения, не нарушая работу, выполненную для других свойствах продукта.
В качестве другого примера можно рассмотреть изменение API, который используется в каждом свойстве сайта. Scrum поощряет группу к поддержанию кода в модульном, легко тестируемом виде, что позволяет без нарушений проводить изменения, которые могут быть унаследованы другими историями.
Гибкое планирование
Компании, обслуживающие клиентов в web и мобильном пространстве должны иметь возможность быстро реагировать на изменения. Однако инженерам нужна уверенность, что свойство, над которым они работают, не будет изменено до того, как они закончат работу. Поддерживать баланс между этими двумя целями довольно трудно.
Scrum предоставляет окна возможностей, достаточно длительные для завершения разработки web или мобильного свойства, и в то же время разрешает в конце каждого спринта менять направление разработки на основе данных, поступающих с рынка.
Анализ и улучшение
Группа Scrum не только стремится улучшать продукт. Они также стараются улучшить свою собственную работу. Со временем, работа группы улучшается, поскольку они лучше оценивают, какой объем работы они могут выполнить, и улучшают свой подход к работе, в результате чего они могут работать наиболее продуктивно.
Предоставляя группе возможности оценивать собственную деятельность и определять, как лучше работать вместе, Scrum максимально эффективно использует ограниченные ресурсы любой организации.