Скрам предназначен для достижения результатов в комплексных ситуациях. Используя бэклог продукта, результаты могут быть оптимизированы для конкретной ситуации. Еще скрам очень трепетно относится к людям. Скрам-мастера посвящают себя своим командам, потому что участники команды, включая скрам-мастера, – соседи и друзья.
Во время моего последнего визита компания Service1st уже была отличным местом. Я видел, как люди стремятся улучшить организацию, команды, себя и свою профессию. Я горжусь тем, что знаком с ними. За последнее десятилетие я помог реализовать скрам в сотнях организаций и уверен, что это заслуженный ожидаемый результат. Что еще можно просить от жизни?
Глава 9
Масштабирование проектов с помощью скрама
Во многих проектах объем работы слишком велик для одной скрам-команды. В таких случаях можно организовать несколько команд разработки. Параллельная работа команд координируется различными механизмами. Одни механизмы довольно формальны, другие возникают ситуативно. Проект, над которым одновременно трудится несколько скрам-команд, называется масштабированным проектом, а используемые для координации деятельности этих команд механизмы – механизмами масштабирования. Каждый масштабированный проект является по-своему комплексным и обычно требует своего неповторимого решения. Используя практически те же механизмы масштабирования, что и любой другой процесс разработки, скрам масштабируется, сохраняя все свои эмпирические практики. В этой главе приводятся рекомендации по масштабированию проектов с использованием скрама. Эти шаблоны я успешно использовал в почти сотне проектов, однако это не магические формулы и не совершенно безупречные рецепты. Масштабирование скрама – непростая задача, уникальная для каждого проекта.
Ядром, вокруг которого происходит все масштабирование, являются скрам-команды. Проект на 800 человек будет состоять из 100 команд по 8 человек. В этой главе мы рассмотрим, как координировать работу этих команд, сохраняя при этом производительность каждой отдельной команды. Мы также рассмотрим, как масштабировать проекты независимо от количества участников, предметной области программного приложения, технологии системы, количества локаций сотрудников и других аспектов масштабирования. В этой главе я продемонстрирую применение методов масштабирования скрама в критически важном проекте с сильным желанием руководства масштабировать его, чтобы несколько команд имели возможность разрабатывать один программный продукт одновременно из нескольких географических мест.
Масштабирование в MegaFund
Мы рассматривали компанию MegaFund в третьей и пятой главах. Если вы, будучи клиентом MegaFund в 1997 году, хотели перевести деньги, открыть счет, торговать ценными бумагами или воспользоваться любым другим финансовым предложением MegaFund, у вас было два варианта: позвонить агенту по телефону или пойти в ближайший офис MegaFund и использовать туповатый терминал типа IBM 3270, подключенный через сеть к мейнфреймам компании. Хотя эта технология и была новаторской в 1980-х годах, спустя 17 лет конкуренты MegaFund позволяли клиентам самостоятельно управлять своими учетными записями с домашних или офисных компьютеров, сотовых телефонов, веб-устройств, пейджеров и телефонных голосовых систем в любой день в любое время. Это несоответствие стало неотложной бизнес-проблемой MegaFund. Требовалось как можно скорее устранить отставание от конкурентов и предоставить клиентам новую технологию. Все в MegaFund хотели начать свой собственный проект и тут же создать конкурентоспособное предложение.
Подход
MegaFund Systems Company (MSC) предоставляла MegaFund технологические услуги. MSC выявила, что лучшим способом быстро создать новые конкурентные продукты будет использование существующих баз данных через промежуточные серверы. Каждая организация должна была реализовывать собственные бизнес-функции, исполняемые на их серверах, а MSC реализовывала общие функции доступа к данным. Серверы должны были обрабатывать практически любые объемы транзакций в безопасной, перезапускаемой среде. Перечисленные характеристики были первыми нефункциональными требованиями, добавленными в бэклог продукта.
Владелец продукта хотел как можно скорее предоставить готовые решения и поэтому стремился запустить побольше команд. Однако до начала работы нужно было выполнить ряд подготовительных действий. Во-первых, для разделения работы между командами требовалась архитектура системы с достаточной детализацией. Во-вторых, чтобы несколько команд могли синхронизироваться и минимизировать объем конфликтующего кода, необходимо было развернуть среду разработки, поддерживающую процессы управления программным кодом и работу из нескольких локаций. И, в-третьих, чтобы интерфейсы взаимодействия между бизнес-объектами и системными данными были логичными и понятными, нужно было определить стандарты проектирования и программирования. Поэтому мы потратили время на выявление нефункциональных требований к масштабируемой инфраструктуре, поместили их в верхнюю часть бэклога и распределили между первыми спринтами.
Затем мы добавили небольшое количество функциональных бизнес-требований. Например, подразделение по управлению счетами хотело предоставить клиентам возможность напрямую обращаться к своим счетам и просматривать балансы и предыдущие транзакции через интернет. Разделив эти требования на мелкие части, мы поместили какую-то часть из них в каждый спринт, планируя создавать бизнес-функции одновременно с настраиванием масштабируемой инфраструктуры. Укомплектовывая команду, мы выбрали лучших проектировщиков и архитекторов MegaFund. Для реализации помещенных в бэклог продукта требований по определению стандартов и развертыванию инфраструктуры мы пригласили в команду технических писателей и инженеров по настройке аппаратного и программного обеспечения. В результате команда состояла из 10 человек.
В конце первого спринта команда продемонстрировала первую операцию по управлению счетом: отображение текущего баланса счета. Соответствующие бизнес-объекты обращались к системным объектам доступа к данным, которые обращались к унаследованным базам данных, где находилась информация о текущем балансе счета. Тем же путем информация передавалась обратно и отображалась пользователю на странице интернет-обозревателя. Команда перезапустила сервер, как это произошло бы в случае сбоя, и успешно провела ту же операцию снова. Затем участники команды продемонстрировали возможности масштабирования, взяв за основу ресурсоемкость одной операции, экстраполировав ее на несколько и распределив между кластерами выбранной серверной технологии. Таким образом, благодаря успешному выполнению одной бизнес-операции команда доказала жизнеспособность выбранного подхода в целом.
Владелец продукта и другие заинтересованные лица были так впечатлены, что захотели сразу же сформировать побольше команд для этого проекта. Однако пришлось подождать до четвертого спринта, поскольку первой команде потребовалось еще два спринта для завершения настройки масштабируемой инфраструктуры. В итоге над проектом работали семь команд. В состав каждой новой команды вошло по одному сотруднику из первой, чтобы делиться опытом и советами с остальной частью команды. Все команды проводили ежедневные скрамы, а за ними следовал ежедневный скрам скрамов, на котором участники первоначальной команды встречались в качестве представителей своих новых команд, чтобы синхронизировать работу семи команд. Ежедневный скрам скрамов проходил в том же формате, что и обычный ежедневный скрам.