Какова роль Product Engineering в разработке цифровых продуктов?

Дата: 21 октября 2022 в 09:06

Продуктовый инжиниринг в корне меняет подходы к созданию цифровых сервисов и приложений, фокусируясь не на количестве функций, а на ожиданиях и бизнес-целях клиентов.

Для более полного освещения этой темы я счел нужным взять в соавторы моего коллегу Павла Максимова, лид-менеджера Akhter Studios, имеющего многолетний опыт управления различными командами в сфере разработки ПО. Благодаря его ценным мыслям и комментариям часть очерка об организации спринтов значительно выиграла в плане фактологии.

Шамиль Ахмедов, CPO & Co-Founder Akhter Studios

Продакт-инжиниринг vs. software development

В это трудно сейчас поверить, но в истории кодинга (software development) был такой длительный период, когда рядовым программистам приходилось заниматься буквально всем, что касалось создания цифровых продуктов: от системной архитектуры и бизнес-аналитики до разработки дизайна интерфейса. Даже сейчас эта ниша универсалов-многостаночников (full-stack developer) вполне процветает, пусть и в ограниченном объеме.

Но когда производство цифровых продуктов вышло на промышленный уровень, в отрасли возникла потребность в более узкой специализации исполнителей. Рядовые кодеры больше не думали об общих целях проекта, им достаточно было сосредоточиться на решении собственного пула задач.

Но в связи с ускоряющимся трендом цифровизации, затягивающим в свой круговорот все большее число организаций и стартапов, на рынках стали появляться зоны высокой неопределенности. В игру вступает множество компаний, нуждающихся в срочной трансформации своего бизнеса, но не обладающих при этом ясной стратегией перехода «на цифру».

Зачастую в разработке приходится наблюдать следующую картину — клиент не может определиться с выбором приоритетов, выдвигая одно требование за другим. Это неизбежно отражается в скоупе задач, вынуждая разработчиков на ходу менять план выполнения рабочих процессов.

Наиболее адекватное решение на эти вызовы дает продуктовый подход, в котором культивируются общность целей и стремление каждого члена команды к осознанному выполнению своей задачи.

В такой группе программисты не работают изолированно, словно в закрытом отсеке, а активно вовлекаются во все процессы дизайна и маркетинга продукта. И вместо слепого исполнения воли клиента изучают его запросы, а затем компетентно предлагают гипотезы и пути решения проблем. Этот подход называют продакт-инжинирингом, то есть кодингом в составе продуктовой команды, и его описанию я посвящу первую часть статьи.

Казалось бы, продакт-инжиниринг в целом соотносится с понятием software development, ведь он охватывает все основные процессы производства цифровых продуктов. Тем не менее эти понятия не являются синонимичными. Новизна данного подхода состоит в замене привычной проектной иерархии на методологию Agile, которая в корне меняет отношение программиста к сути того, чем он занимается. Об этом расскажет Павел Максимов во второй части статьи.

Роль продуктовых исследований и дизайна в постановке задач

В своей прошлой статье «В чем ценность Product discovery для начинающих бизнесменов», посвященной фазе продакт-дискавери, я подробно рассказывал о важности исследований в продуктовом подходе.

Только с помощью исследований команда разработчиков может получить ответ на ряд жизненно важных вопросов, без решения которых работа над заказом грозит превратиться в бесконечный бег по замкнутому кругу:
— Насколько актуальным будет приложение или сервис на предполагаемом рынке?
— Какими важными свойствами должен обладать продукт, чтобы завоевать внимание?
— Что движет людьми, чего они ожидают от нас?
— Какие качества целевой аудитории могут оказаться полезными для заказчика?

Кроме этих знаний, исследования дают ответ на ряд важных общемаркетинговых вопросов, которыми не следует пренебрегать даже в эпоху цифры:
— Как выстроить финансовую модель — то есть где клиент будет тратить и зарабатывать деньги.
— С помощью чего расписать первичный функционал.
— Для чего нужно знать примерный объем рынка.

Весь этот массив запросов обрабатывается продакт-оунером с одной целью — составить и детализировать так называемый БФТ к будущему продукту (Бизнес Функциональные Требования) — основополагающий документ, в котором без углубления в технические спецификации излагается логика работы всей системы или приложения.

В пакет исследований также входит готовая документация и заключение в виде артефактов. Таким образом команда под управлением продакт-оунера заявляет об общем понимании ею поставленных задач, специфики рынка и особенностей целевой аудитории. Этот набор знаний может быть подкреплен презентацией и КП (коммерческое предложение) для отправки в разработку.

После того как БФТ сформулировано, к работе подключается продуктовый дизайнер, который путем анализа и экспериментов воздвигает жизнеспособную концепцию будущего сервиса или программы. Подробней о фазе продакт-дизайна вы можете прочесть в моей статье «Как донести до клиентов важность продакт-дизайна?», где рассказывается об отличиях между продакт-дизайном и UX/UI.

Если коротко, фаза продакт-дизайна активируется в тех случаях, когда в списке функциональных требований, заявленных клиентом, присутствуют значительные пробелы, не позволяющие концептуально описать будущее приложение или сервис, а также каналы его взаимодействия с пользователями.

В отличие от дизайнера интерфейсов, продуктовый дизайнер не столько рисует, сколько занимается проектированием и всесторонним изучением продукта. Он выстраивает непротиворечивый облик или прототип, дающий ясное представление о потенциале проекта, его слабых и сильных сторонах и, конечно, о взаимодействии с целевой аудиторией.

Кроме дизайнера, продакт-менеджер и продакт-оунер часто подключают к работе QA-инженера, чтобы протестировать рабочую модель продукта и выявить скрытые проблемы. В таких случаях присутствие дев-команды (то бишь программистов), хотя бы в точечном формате, тоже бывает очень полезным.

Миссия технической команды

В конечном счете в техзадании должны найти свое отражение все ключевые требования клиента. Особенно важен на этом этапе вклад системного аналитика: он считывает и анализирует спецификации исходных программ, проводит серию интервью с заказчиком. Например, если требуется создать мультиплатформенное приложение, то будет использован стек Flutter, а если клиент хочет ограничиться платформами iOS и MacOS, то подойдет язык программирования Swift.

Пока финализируются БФТ и техзадание, дорабатываются все оставшиеся артефакты, которые необходимы для передачи в фазу инжиниринга, в свои права вступает техническая команда. Ей скоро предстоит запустить ряд важных процедур:
— Создание архитектуры продукта — выбор краеугольных элементов организации всего приложения или сервиса.
— Развертывание так называемой среды разработки (dev) — подключение сервера, на котором программисты будут кодить.
— Заведение необходимых артефактов для кодинга — в программировании термин «артефакты» описывает ключевые рабочие документы.
— Отладка алгоритмов — это workflow всей команды, то есть последовательность действий, обусловленная причинно-следственной связью и логикой программирования.

Ближайшая цель на данном этапе инженерной работы — создать архитектуру программы, которая, подобно каркасу или фундаменту, будет способствовать гладкому процессу написания кода и обслуживания готового ПО. От этого зависит и перспектива развития продукта в будущем: хорошая архитектура позволяет легко тестировать результаты труда инженеров, добавлять новый функционал и интегрировать с другими системами.

Итогом технической работы должны стать элементы для сборки MVP (minimum viable product — минимально жизнеспособный продукт), обладающего ограниченным функционалом, но вполне пригодного для испытаний, либо уже готовое к запуску ПО.

Этап тестирования

В процессе разработки и в конце каждой итерации проводится серия различных тестов, осуществляемых QA-специалистами. Описание принципов и приемов тестирования вполне может стать темой отдельной статьи, поэтому перечислю лишь основные подходы к проверке труда программистов.

Очевидно, что на выходе каждый образец ПО должен решать одну или несколько основных задач, заложенных в него в начале проектирования. Если вы создаете приложение для получения скидок в фитнес-центрах, то вас в первую очередь должно волновать, как программа справляется с основной задачей. Такой вид тестирования называется функциональным, оно позволяет выявить ЧТО именно в программе работает/не работает.

Но помимо функционала, приложение должно обладать рядом дополнительных качеств типа удобной навигации или дизайна. В таком случае QA-инженеры применяют так называемое нефункциональное тестирование, позволяющее выяснить КАК именно программа работает/не работает.

По итогам тестирования готовится отчет с перечнем доработок и настроек всех модулей.

Работа над релизом

После того, как QA-специалисты завершили тестирование, а кодеры исправили все ошибки, готовое цифровое изделие передается в пользование заказчику. Как и в случае с любым сложным техническим устройством, процесс сдачи/приемки сопровождается целым набором процедур, из которых следует отметить самые главные: подготовка документации и инструкций пользователя, обучение представителей клиента, передача исходников, дизайн-системы, элементов фирменного стиля.

Продуктовая команда стремится не ограничивать возможности своего участия в будущей судьбе продукта, поэтому обязательно предлагает заказчику дополнительную фазу продвижения – product launch. Особенно это важно, если команда обладает значительной экспертизой и опытом запуска ПО, следовательно может создать для клиента целостную стратегию по продвижению и развитию продукта. Данная тема хорошо проработана на практике, поэтому продакт-менеджеры всегда могут предложить заказчику различные подходы типа «Стратегия Go-to-Market», PMF (product/market fit) и мн. др. Этому большому финальному этапу цифрового производства я планирую посвятить отдельный материал, благо там есть о чем рассказать.

Принципы управления в продакт-инжиниринге

В своем рассказе об управленческом аспекте продакт-инжиниринга я буду опираться на опыт нашей компании Akhter Studios, поэтому следует учитывать, что указанные сведения привязаны к особенностям моей команды и могут отличаться от стиля работы в других продуктовых компаниях.

Павел Максимов, CPMO (Chief Project Management Officer) Akhter Studios

Для начала скажу пару слов о так называемых циклах разработки ПО. Как понятно из названия, жизненный цикл означает некий период времени от запуска до завершения проекта. Последовательность событий внутри цикла состоит из следующих этапов: дизайн проекта → программирование → тестирование → готовность проекта.

Такая идеальная схема событий называется predictive life cycle, то есть прогнозируемый жизненный цикл.

Конечно, на практике в эту стройную картину неизбежно приходится вносить коррективы, исходящие, во-первых, от самого клиента, а во-вторых, от участников: тестировщиков, менеджеров, дизайнеров, аналитиков. Реакция команды на эти изменения и определяет характер избранного исполнителем стиля управления проектом.

Наша продуктовая компания работает по методологии Agile, следовательно, проповедует определенные ценности, присущие «гибким» методам управления: сотрудничество с заказчиком и стремление выдавать качественные решения на каждом шаге производства.

В соответствии с этим мы действуем по инкрементальной схеме (incremental life cycle). Особенность данного подхода заключается в том, что программисты сдают клиенту работу отдельными завершенными фрагментами, практически готовыми к использованию. Каждая такая единица нашего труда называется инкрементом.

В качестве основной техники мы используем Scrum, что подразумевает работу спринтами — хронологически равными итерациями по 1-2 недели. Учитывая, что продакт-инжиниринг относится к фазе глубокой разработки, к началу инженерных работ все артефакты должны быть качественно прописаны: созданы «эпики» (крупные этапы работы) и «сторики» (небольшие задания в составе эпиков). Необходимо убедиться, что задачи как следует «прогрумлены», то есть бэклог продукта изучен и проработан всеми заинтересованными участниками, а текущий спринт спланирован полностью.

В конце каждого спринта мы стараемся предоставить клиенту очередной инкремент, причем в таком виде, чтобы его можно было либо сразу запустить в работу, либо протестировать и изучить на предмет дальнейшего использования в бизнесе. Все это происходит, конечно, под неусыпным оком продакт-оунера, который продолжает сопровождать готовый модуль после релиза. Он заносит в бэклог обнаруженные «баги» (ошибки), изучает реакцию и действия пользователей (customer journey), одним словом, готовит участников к следующей итерации. 

Со временем все продуктовые команды оттачивают собственный стиль производства, выпуская улучшенные версии рабочего фреймворка. Например, в нашей компании вышла уже 9-я редакция нашего workflow. Каждая такая версия строится на основе обратной связи от клиентами и проектными группами, и, соответственно, с каждой версией команда растет и масштабируется.

Надеюсь, наше совместное описание фазы продакт-инжиниринга окажется полезным для тех молодых бизнесменов, кто желает попробовать себя в IT-бизнесе и уже задумывается о формировании своей первой команды. Как неоднократно говорилось на самых разных медийных площадках, многие проекты часто стагнируют или даже закрываются, столкнувшись с критической нехваткой инженерной экспертизы. В таком случае хочется пожелать нашим читателям главного – обращать внимание на технический опыт управленцев, которым вы хотите доверить свой бизнес.

Подпишитесь на недельный обзор главных казахстанских и мировых событий

По сообщению сайта kapital.kz