Постоянная декомпозиция
При условии, что вы выбрали гибкую разработку и бэклог на релиз готов, требуется разделить каждую функциональность на более мелкие части и составить план на спринт. Для этого используйте одну из тех же методик, что и при планировании релиза:
– Use Case: детализация вариантов использования. (Например, описание возможных вариантов использования во время заполнения заявки на получение услуги).
– User Story: разбор отдельных историй на части. (Например, описание истории перехода от заполнения заявки к получению услуги).
– Job Story: дробление крупного контекста на мелкие контексты. (Например, описание переключения от контекста заполнения заявки к контексту получения услуги)
Как видите, степень свободы в реализации решений зависит от выбора фреймворка. Методика приоритизации задач на спринт – аналогичная той, что и для приоритизации функционала в релизе.
Стоит ли участвовать в декомпозиции задач внутри спринта, зависит от того, насколько глубоко хотите погрузиться в разработку и как договорились с подрядчиком.
Вертикальная декомпозиция. Источник – https://creativecommons.org
Я предпочитаю не углубляться в подробности реализации задач, если только разработчики сами этого не попросят.
Усмирение демонов
Допустим, план на спринт готов, критерии приемки чётко сформулированы и команда приступила к разработке. Обсудим несколько базовых правил, чтобы всё шло так, как должно.
Всегда давайте возможность разработчикам предложить вам несколько вариантов решения задачи. Ни в коем случае нельзя настаивать только на вашем конкретном варианте. Помните: пока продукт не запущен и нет возможности посмотреть на статистику его использования, все гипотезы равнозначны.
Если вы не можете избавиться от мысли, что ваше решение задачи самое лучшее и других вариантов быть не может, грамотный исполнитель предложит провести A/B-тест. Зафиксируйте ваше решение в отдельной таблице работы с гипотезами и двигайтесь дальше.
Старайтесь, чтобы у каждой задачи, которая идёт в спринт, был понятный результат, а не «провести исследование как провести исследование». Вообще, в гибкой разработке не принято выделять исследования в отдельные задачи, потому оценивать качество таких активностей и управлять ими затруднительно.
В гибкой методологии срок исполнения равен сроку завершения спринта. Если от спринта к спринту часть задач не выполняется – ничего страшного, это абсолютно нормальное явление. Зато после прохождения нескольких спринтов вы будете лучше понимать средний объём задач, который команда успевает «переварить», и в следующий раз не будете переживать о нескольких задачах, которые не успели решить. Просто держите приоритетность под контролем – и среди невыполненных задач окажутся не такие уж и важные.
Аппетит приходит во время еды
Возможно, у вас появится соблазн сказать: «Давайте пока закроем задачу, а потом немного доделаем!» Покорный исполнитель смирится и отправит задачу в колонку «готово». Но это неправильно. Так вы перестанете управлять сроками и качеством исполнения. Запомните: у задач не может быть статуса «почти сделана». Либо она готова полностью, либо не готова.
Если вы захотите внести какое-либо улучшение – закройте текущую задачу, сформулируйте новую, типа «улучшение такой-то функциональности», и отправьте её в конец бэклога, чтобы во время планирования следующего спринта обсудить её приоритетность и возможные варианты решений вместе с командой. Вот тогда вы и разберётесь, насколько она важна. А пока наберитесь терпения. Такие ситуации неизбежны.
Планирование внезапных задач при гибкой разработке.
Планирование задач при гибкой разработке может осуществляться постоянно. Используйте бэклог, чтобы вести все текущие задачи и создавать новые. Главное – не забывать обсуждать новые задачи с разработчиками и устранять недосказанность. Не меняйте приоритетность задач, не обсудив причины изменений с исполнителем – иначе появится информационный вакуум. Фактически вы переосмыслите требования к результату, который хотите получить, но чем это обернётся для пользователей – никто не узнает. Надеюсь, вы ещё не забыли, что разрабатываете продукт не для себя?
Далее я расскажу о разных этапах работ, с которыми вы можете столкнуться при углублении в процессы реализации.
UX
Проектировать пользовательский опыт можно с разной глубиной проработки. В зависимости от сложности продукта применяются разные инструменты. Для некоторых продуктов достаточно лишь текстового описания базового сценария использования.
Чтобы проверить качество UX, попросите записать скринкаст демонстрации сценария использования и отправьте его посмотреть тем, кто не в теме проекта. Если несколько человек заметили что-то непонятное в одном и том же месте – отдавайте на доработку. Если же у вас нет таких знакомых, которые могут протестировать сценарий, – существуют специальные сервисы, в которых можно заказать данную услугу и оперативно получить отчет.
UI
В задачи UI не входит планирование последовательности экранов взаимодействия или, например, в какой момент должно появиться уведомление о необходимости пополнить баланс. В задачи UI входит решать, как эти штуки будут выглядеть при наведении курсора, а также контролировать, чтобы во всех разделах вашего продукта они выглядели единообразно. Последний момент сейчас в тренде. И если ваш продукт состоит более чем из 5 различных экранов, я рекомендую для начала создать дизайн-систему.
Несмотря на всеобщую тенденцию к унификации дизайна интерфейсов, это очень творческая задача, и ее оценка с вашей стороны, скорее всего, будет субъективной. Конечно, если вы профессиональный UI-дизайнер, к вам это не относится. Если же вы сомневаетесь в уровне дизайнера, то сначала закажите дизайн-концепцию из нескольких экранов. почувствуете, что уровень работ недостаточен, – меняйте исполнителя.
Бэкенд
Над серверной частью продукта стоит начинать работать сразу после завершения этапа проектирования. К этому моменту у вас уже будут требования по логике работы продукта. Привлекайте бэкенд-разработчиков во время формирования решений в бэклоге. Во-первых, они смогут оценить сложность разработки, а во-вторых – предложить альтернативные решения, которые смогут закрыть потребности пользователей. В их ведении находится баланс между техническими ограничениями и функциональностью. Именно их трудозатраты больше остальных влияют на стоимость проекта.
Качество кода можно оценить только с помощью тестов. Иногда бэкенд-разработчики пишут тесты параллельно с написанием самого приложения, что позволяет сократить сроки проекта и повысить его качество.
Зачастую у бэкендеров работа больше научно-исследовательская, нежели техническая. Чем яснее сформулирована задача – тем выше вероятность готовности функционала в срок.
Фронтенд
Сейчас многие задачи, которые раньше выполнялись на стороне бэкенда, можно решать и без него. Весь сервис может работать непосредственно в браузере. Представляете, насколько быстрее запустится продукт, если убрать из его создания целый этап работ?
Деятельность фронтенд-разработчиков влияет на первое впечатление от вашего продукта. Насколько быстро и плавно загружается контент, насколько удобно работают формы заполнения заявок, зависит не только от дизайнеров, но и от фронтендеров. Конечно, бывают и исключения, но я редко встречаю идеально работающий фронтенд со страшным дизайном, а вот обратное – на каждом шагу.
После запуска цифрового продукта в интерфейсе можно увидеть два типа ошибок: серверные и клиентские. Серверные всегда выглядят шаблонно, например: «Ой, что-то пошло не так» или «Извините, страница не найдена» и т. п. Клиентские (ошибки фронтенда) отражаются в съехавших шрифтах, дёргающихся при загрузке блоках страниц и невозможности «свайпить» картинки на экране смартфона. И если к серверным ошибкам пользователи более-менее привыкли, поскольку они типовые, то косяки с вёрсткой всплывают неожиданно и тем самым больше раздражают, выдают низкое качество продукта и снижают лояльность ваших пользователей.
Заметки и истории
Готово!
«У меня все готово, осталась буквально пара мелочей», – говорят люди, которые не умеют доводить дела до конца. Многие недооценивают этот навык.Олег Чулаков
Человек, способный проконтролировать работу специалиста (например, дотошный арт-директор работу дизайнера), выясняет, что доработка этих мелочей занимает такое же или большее время, чем вся «выполненная» работа.
По грубой оценке автора, в лучшем случае один человек из двадцати способен отвечать за результат.
Один из ста может довести до финала работу команды. Такой человек называется product owner. Другими словами, тот, кто за все отвечает в конце концов.
Каждый специалист должен быть менеджером продукта, к которому он прикладывает руку.
Зона ответственности дизайнера не заканчивается на этапе передачи макетов разработчикам. Он должен контролировать все до релиза. Это называется вовлеченность.
Специалист, который способен взять на себя ответственность за соблюдение тысячи нюансов с учетом дефицита времени, дорогого стоит.
Не работать ради работы
До того, как я взялся за разработку своего самого сложного проекта для оператора связи, его не могли запустить в течение 4 лет. Вроде бы все уже было готово. Он даже работал на тестовом сервере. В продукте была реализована ключевая функциональность, однако чего-то всё же не хватало. И этим «чем-то» были ценности для пользователей. Бизнес-заказчики и команда разработки настолько углубились в сам процесс, что напрочь забыли о ценностях.
Конечно, в мире существуют такие утилитарные вещи, как вешалки или посуда, без которых в бытовой жизни не обойтись, однако цифровыми продуктами мы пользуемся из-за того, что с их помощью более эффективно или комфортно реализуем свои потребности. Пришлось изучить массу исследований, досконально проанализировать текущий опыт клиентов компании и найти в нём изъяны, чтобы составить гипотезы о ценностях, которыми стоит наполнить продукт.
Спустя год была сформирована проектная команда, полностью изменены процессы взаимодействия с заказчиком, внешними и внутренними подрядчиками и, наконец, запущен продукт, который действительно полезен аудитории, поскольку решает её проблемы. Прародитель методики Agile провёл исследование более 20 000 проектов и доказал, что результат вовсе не связан с процессами.
Суть этой истории – в том, что не стоит работать ради работы: во главе любого цифрового продукта находятся не процессы, а реальные потребности пользователей и вовлечённая команда. Всё остальное – второстепенно.