По словам Скотта Максвелла, самой сильной и привлекательной составляющей Scrum стал заранее подготовленный бэклог проекта, в котором перечислены все задания, отсортированные по их приоритетности. Наличие такого документа окончательно повлияло на решение Максвелла внедрить Scrum в OpenView; и по сей день он считает нашу методику залогом своей конкурентоспособности.
Бэклог. Что и когда делать
Первое, что полагается делать, когда приступаешь к проекту по методике Scrum, – создать список требований к функциональности продукта; список должен быть упорядочен по степени важности задач, подлежащих реализации. Традиционно такой список называется «бэклог»
[42]. Иногда он содержит сотни заданий, иногда – всего несколько задач, о которых нужно думать в первую очередь. Само собой, требуется иметь четкое представление, что вы хотите получить в конце своего проекта. Задание может быть любым: программное обеспечение; свадебная церемония; услуга, новая вакцина, перекрашенный дом. Желательно без промедления – едва только сложится концепция замысла – детально продумать все, что потребуется для нормального хода работ.
Недавно я консультировал компанию, которая выпускает системы автоматизации зданий. Отопление, вентиляция, электричество, водоснабжение, кондиционирование – в общем, «все в одном». Один из их новых продуктов представлял собой программное обеспечение для домашней автоматизации, управляющей важнейшими системами в жилом помещении: открыванием входной двери; включением осветительных приборов; расходами на отопление и многим другим – причем все осуществляется с мобильного устройства. Перед началом проекта разработчики, собравшись за одним столом, составили большой список: переключатели, контроллеры, интерфейсы, сенсоры, протоколы коммуникаций и прочее в таком же духе – то есть в нем были перечислены детали, которые понадобятся для нормально функционирующей системы. Не ее принципы, не этапы рабочего процесса, а именно пожелания пользователя. Например, следующее пожелание: «Мне как хозяину надо видеть, кто звонит в дверь, чтобы открывать только тем, кого я хочу впустить в свой дом». Были записаны истории об открывании ворот гаража, включении систем отопления и вентиляции, контроле за состоянием электросети. Разработчики продолжали писать до тех пор, пока не зафиксировали все функции системы. Список оказался длинный – в несколько сотен пунктов. Система обещала быть большой, сложной и весьма привлекательной для пользователей.
Смысл составления бэклога представляет создание максимально полного перечисления требований, предъявляемых к функциям продукта. На самом деле никто и не собирается выполнять подряд каждый пункт, но такой документ, содержащий все, что в принципе могло бы быть включено в концепцию проекта, всегда должен находиться под рукой. Некоторые требования отбираются в первую очередь.
Основной момент, нас интересующий, – принцип расстановки приоритетов. Для этого нужно выяснить, какие пункты списка:
• имеют самое большое значение для хода работ над проектом;
• важнее всего для заказчика или будущего потребителя;
• принесут максимальный доход;
• проще всего осуществить.
Следует сразу уяснить простую вещь: в списке полно заданий, до которых у вас никогда не дойдут руки, но вам требуется выбрать те, что принесут наибольшую пользу при наименьшем риске. Поскольку Scrum придерживается поступательной модели разработки и поставки – на языке программистов эта модель называется инкрементальной, – надо начать с такого набора возможностей продукта, который немедленно принесет доход; тем самым вы снизите риски, связанные с проектом. Потому сначала советую отбирать основные функциональности. Хотите оказать быструю услугу заказчику? Тогда берите требование с наивысшим приоритетом, выполняйте его – и, полностью сделав, демонстрируйте клиенту. Это может быть лишь небольшая часть крупного проекта, но ее нужно исполнить до готовности, чтобы не было стыдно показать всем заинтересованным лицам. Перекрашивая дом, начните в первую очередь с обновления гостиной и доведите работу до конца (вплоть до того, что уберете оттуда грязные тряпки и банки с краской) – это будет часть вашего проекта, выполненная целиком.
В первой главе я уже говорил о непреложном правиле, не раз подтвержденном на практике: 80 процентов успеха и ценности продукта заложены в 20 процентах его функциональных возможностей. На минутку задумайтесь. Что бы вы ни приобрели, основная ценность товара или услуги, то есть самое необходимое, содержится в пятой части того, что было сделано. Этот универсальный принцип, естественно, касается и любой проектной разработки программного обеспечения. Вернемся к нашей компании, выпускающей системы автоматизации зданий. Разработчики, составив перечень требований, предъявляемых к функциям продукта, принялись внимательно его перечитывать, причем они прекрасно понимали – действительно понимали, – что из всего огромного списка потребитель заинтересуется лишь 20 процентами предложений. Секрет мастерства методики Scrum заключается в том, что с ее помощью вы докопаетесь до истины и определите эти 20 процентов. При традиционном подходе к производству исполнители работают вслепую, не зная, в каких глубинах проекта закопаны таинственные 20 процентов. Однако они сразу находятся, когда готовый продукт становится собственностью потребителя. Из чего мы делаем вывод: целых 80 процентов усилий работников совершаются впустую. Мое отношение к потерям вам хорошо известно.
Вы никогда не думали о таком беспроигрышном варианте, как выпускать новую продукцию в пять раз быстрее своих конкурентов, при этом впятеро повысив ее рыночную ценность? А вот разработчики из компании по автоматизации – они задумалась. И опять сели за свой бесконечный список, но на сей раз не для того, чтобы его перечитывать, а чтобы решить ряд вопросов. Им предстояло разобраться, за какой участок работы они возьмутся завтра, установить, какие функции системы нужнее всего для потребителя, и понять, как повысить эффективность системы и вывести ее на рынок быстрее всех. По утверждению Скотта Максвелла, сложность не в том, чтобы решить, чего ты хочешь достичь, – намного труднее понять, что ты можешь выполнить. Это относится к любому виду деятельности, независимо от того, строите ли вы дом или собираете автомобиль, пишете ли книгу или производите компьютерную игру, боретесь ли с преступностью или убираете мусор. Попытайтесь установить, как принести наибольшую пользу в кратчайший срок с наименьшими усилиями, – и немедленно принимайтесь за дело. Затем, с каждым следующим этапом, продолжайте наращивать ценность проекта. Таким образом, довольно быстро – быстрее, чем могли подумать, приступая к работе, – вы создадите продукт, который можно будет представить заказчику или выпустить на рынок. Иными словами, вы довольно скоро достигнете реального результата. Только и нужно, что правильно расставить приоритеты.
Как это сделать? Рассказываю. Для начала вам понадобится человек, который сможет определить концепцию проекта, сформулировать требования заказчика и установить необходимые пользователю основные функциональности продукта. В скрам-команде человека с такими обязанностями мы называем владельцем продукта.