• с алгоритмом;
• производительностью;
• масштабируемостью;
• отказоустойчивостью;
• проблемами применения технологий, которые команда не использовала ранее;
• проблемами при использовании компонентов или сервисов других производителей, которые команда не использовала ранее;
• проблемами использования унаследованной системы, которую команда не использовала ранее;
• проблемами зависимости от новых или сопутствующих изменений, внесенных другими командами.
Для устранения этих типов рисков используется следующая методика: один или несколько инженеров-программистов создают прототип для тестирования реализуемости. Обычно это делает программист, поскольку, как правило, это код — в отличие от большинства других прототипов, которые создаются с помощью специализированных инструментов, чаще всего предназначенных для использования дизайнерами продукта. До коммерчески поставляемого продукта такому прототипу еще далеко, поэтому необходимо написать такой код, который позволит снизить этот риск. И, как правило, это лишь малая толика работы, которую придется сделать, чтобы получить потенциально выгодный с коммерческой точки зрения продукт. К тому же в большинстве случаев прототип для тестирования реализуемости представляет собой технологическую программу, временно используемую при разработке программного обеспечения, так что результат часто бывает быстрым и довольно «грязным», но это нормально. Предположительно его будет достаточно для сбора данных, чтобы, например, продемонстрировать, что производительность, скорее всего, будет приемлемой — либо неприемлемой. Пользовательский интерфейс, механизмы обработки ошибок и любая типичная работа по коммерческому внедрению продукта тут обычно не нужны.
По моему опыту, на создание прототипа для тестирования реализуемости уходит не более двух дней. Но если вы работаете над сложными новыми технологиями, скажем над новым подходом с использованием технологии машинного обучения, то для создания такого прототипа понадобится больше времени. Сколько, оценивают инженеры-программисты. А вот будет ли команда этим заниматься, зависит от менеджера продукта: он решает, стоит ли продолжать работу над идеей. Он может сказать, что другие подходы к решению проблемы не чреваты риском реализуемости, и предпочтет отказаться от этой идеи.
Хотя созданием прототипа для тестирования этого вида риска обычно занимаются инженеры-программисты, эту работу относят к этапу исследования продукта, а не его поставки на рынок. Она выполняется в рамках принятия решения, следует ли вообще развивать этот подход или идею.
Скажу несколько слов о том, какие уроки я извлек из этого. Мне не раз приходилось видеть, как команды переходят к этапу поставки, не оценив в должной мере риска реализуемости. Каждый раз, когда вы слышите истории о продуктовых командах, недооценивших объем работ по созданию и поставке чего-либо стоящего, знайте: главная проблема данного просчета кроется именно в этом. Может быть, у разработчиков не было опыта в правильной оценке перспектив, или инженеры и менеджер продукта не в полной мере понимали, что для этого нужно, или последний не дал инженерам-программистам достаточно времени на изучение и анализ ситуации.
Глава 47. Пользовательские прототипы
Пользовательский прототип, или симуляция — один из самых эффективных инструментов на этапе исследования продукта. Это дым и зеркала. Фасад, за которым ничего нет. Занавес, за которым пустота. Простыми словами, если речь идет о пользовательском прототипе интернет-магазина, то человек может вводить данные своей кредитной карты хоть сто раз, ничего не покупая.
Спектр пользовательских прототипов весьма широк. На одном его конце находятся опытные образцы малой детализации. Они не похожи на реальный продукт; по сути, это просто интерактивный вайрфрейм. Многие команды используют их для всестороннего обдумывания продукта в тесном кругу коллег, но есть и другие способы применения этого метода.
Следует помнить, что пользовательские прототипы малой детализации представляют только один аспект продукта — информацию и рабочий процесс, но ничего не говорят о влиянии графического дизайна или различиях, возникающих при поступлении реальных данных. Это лишь два примера, которых на самом деле множество.
На другом конце спектра находятся пользовательские прототипы высокой детализации. Несмотря на то что это тоже симуляция, она выглядит и воспринимается как нечто весьма реалистичное. Часто их даже не отличишь от настоящего продукта. Тем не менее это не так; данные, которые вы видите, не реальные, хоть и очень похожие.
В примере с пользовательским прототипом для сайта электронной коммерции вы вводите запрос об определенном горном велосипеде, и на экране возникает один и тот же список таких транспортных средств. Но если присмотреться, это не те велосипеды, которые вы запрашивали. И еще, каждый раз вы получите выборку одних и тех же велосипедов, какую бы цену или модификацию ни указали. Иными словами, если нужно проверить релевантность результатов поиска, этот инструмент вам не подходит. Но если вы собираетесь придумать хороший общий опыт совершения покупок или выяснить предпочтения пользователей в плане поиска, такого прототипа будет более чем достаточно, а создается он очень быстро и легко.
Существует множество инструментов для создания пользовательских прототипов — для разных устройств, с разной степенью детализации. В основном их разрабатывают для дизайнеров продуктов. У вашего дизайнера несомненно есть как минимум один, а то и несколько любимых инструментов пользовательского прототипирования. Некоторые дизайнеры предпочитают писать код для своих опытных образцов высокой детализации вручную, что в принципе нормально, если, конечно, они работают быстро и готовы относиться к прототипу как к одноразовому инструменту.
Существенное ограничение пользовательского прототипа состоит в том, что он ничего не доказывает. Скажем, не дает гарантии, что ваш продукт будет продаваться.
Многие начинающие разработчики новых продуктов попадают в ловушку, создавая пользовательский прототип высокой детализации и предлагая его 10–15 человекам, которые в один голос подтверждают его великолепие. Создатель думает, что проверил свой продукт и подтвердил его соответствие предъявляемым требованиям, но, увы, ошибается. Люди часто говорят одно, а поступают совершенно иначе.
Есть более надежные методы для подтверждения ценности продукта, и вы обязаны знать, что пользовательский прототип в их число не входит. И все же в арсенале продуктовых команд это очень серьезное оружие, и вам следует развивать навыки и опыт своей команды в создании пользовательских прототипов любой степени детализации. Как вы убедитесь в следующих главах, для некоторых типов подтверждения правильности идеи пользовательский прототип очень нужен. К тому же это один из важнейших инструментов коммуникации.
Глава 48. Прототипы на реальных данных
Иногда для снижения серьезного риска, выявленного на этапе исследования продукта, нам нужна возможность собирать фактические данные о его использовании. Но делать это необходимо именно на этапе исследования, то есть задолго до того, как вы потратите время и силы на создание реального и масштабируемого готового продукта.