Первое, что полагается делать, когда приступаешь к проекту по методике Scrum, — создать список требований к функциональности продукта; список должен быть упорядочен по степени важности задач, подлежащих реализации. Традиционно такой список называется «бэклог»[42]. Иногда он содержит сотни заданий, иногда — всего несколько задач, о которых нужно думать в первую очередь. Само собой, требуется иметь четкое представление,
Недавно я консультировал компанию, которая выпускает системы автоматизации зданий. Отопление, вентиляция, электричество, водоснабжение, кондиционирование — в общем, «все в одном». Один из их новых продуктов представлял собой программное обеспечение для домашней автоматизации, управляющей важнейшими системами в жилом помещении: открыванием входной двери; включением осветительных приборов; расходами на отопление и многим другим — причем все осуществляется с мобильного устройства. Перед началом проекта разработчики, собравшись за одним столом, составили большой список: переключатели, контроллеры, интерфейсы, сенсоры, протоколы коммуникаций и прочее в таком же духе — то есть в нем были перечислены детали, которые понадобятся для нормально функционирующей системы. Не ее принципы, не этапы рабочего процесса, а именно пожелания пользователя. Например, следующее пожелание: «Мне как хозяину надо видеть, кто звонит в дверь, чтобы открывать только тем, кого я хочу впустить в свой дом». Были записаны истории об открывании ворот гаража, включении систем отопления и вентиляции, контроле за состоянием электросети. Разработчики продолжали писать до тех пор, пока не зафиксировали все функции системы. Список оказался длинный — в несколько сотен пунктов. Система обещала быть большой, сложной и весьма привлекательной для пользователей.
Смысл составления бэклога представляет создание максимально полного перечисления требований, предъявляемых к функциям продукта. На самом деле никто и не собирается выполнять подряд каждый пункт, но такой документ, содержащий все, что в принципе
Основной момент, нас интересующий, — принцип расстановки приоритетов. Для этого нужно выяснить, какие пункты списка:
имеют самое большое значение для хода работ над проектом;
важнее всего для заказчика или будущего потребителя;
принесут максимальный доход;
проще всего осуществить.
Следует сразу уяснить простую вещь: в списке полно заданий, до которых у вас никогда не дойдут руки, но вам требуется выбрать те, что принесут наибольшую пользу при наименьшем риске. Поскольку Scrum придерживается поступательной модели разработки и поставки — на языке программистов эта модель называется инкрементальной, — надо начать с такого набора возможностей продукта, который немедленно принесет доход; тем самым вы снизите риски, связанные с проектом. Потому сначала советую отбирать основные функциональности. Хотите оказать быструю услугу заказчику? Тогда берите требование с наивысшим приоритетом, выполняйте его — и,