Какой продукт создать программу

Создание продукта: НАЧАЛО

Как в фильме Начало (Inсeption), реальность в продуктовой разработке имеет определенную вложенность слоев. В зависимости от того, какая роль вам выпала, ваше «начало» в проекте может произойти раньше или позже, но всегда приятнее быть в числе создателей новой реальности, не так ли?

Эта статья — вступительная часть к трилогии о том, что собой представляет в гибкой продуктовой разработке:

  • Готовность Начать
  • Готовность Завершить
  • Готовность Выпустить

Первая часть будет посвящена процессу открытия продукта (Product Discovery), вторая — процессу разработки продукта (Agile Delivery), третья — формированию цикла этих двух процессов, с обратной связью от рынка (Business Development). Здесь же, в начале, я задам общие рамки ролей и процессов, в которые буду углубляться в следующих частях.

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

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

КОМАНДА ОТКРЫТИЯ ПРОДУКТА

Product Discovery Team

Никогда не экономьте на такой команде. Здесь я имею в виду именно команду открытия (поиска, исследования) продукта, а о разработке напишу позже. Сбалансированная команда открытия продукта должна обладать знаниями и навыками, достаточными для определения:

  • ценности продукта для бизнеса
  • удобства продукта для пользователей
  • реализуемости продукта в рамках времени и технологий

Именно эти три параметра: ценность, удобство и реализуемость, команда открытия должна держать в постоянном фокусе. Первые примеры таких команд мне приходилось видеть на конкурсах вроде DOU Mixer и Garage48.

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

КОМАНДА ОТКРЫТИЯ: UX Дизайнеры

Из этих трех составляющих команды открытия, сложнее всего найти хорошего «дизайнера». Дизайном эта функция называется условно — слишком большой метаморфозе подверглась профессия дизайнера за последние 10 лет. Здесь имеется в виду роль проектировщика архитектуры взаимодействия пользователя с продуктом. Так что хакеры в своем понимании дизайна как архитектуры, ближе к истине, чем люди бизнеса, которые представляют симпатичные картинки. Дизайн — это UX (архитектура взаимодействия), которая впоследствии дополняется Usability (удобством) и UI (красотой).

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

КОМАНДА ОТКРЫТИЯ: Хакеры

Короткое отступление для читателей из мира аутсорсинга. Я противник разработки командой по готовой спецификации. «Требования» означает «Заткнись» (цитирую Алистера Коуберна). Если команда пишет продукт по «спущенным» требованиям, значит вы не используете ее исследовательский потенциал, это — ложная экономия.

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

Если вы уже имеете дело с аутсорсингом, постарайтесь максимально включить команду в процесс открытия продукта. Под командой я имею в виду небольшие полнофункциональные составы «грабителей банков» (цитирую Максима Ткачука), в которых каждый хорош в своей специализации, при этом понимая суть и доверяя исполнению других ролей в своей «банде».

В зависимости, от рынка и технологий, состав и число «приближенных» может колебаться. Процесс открытия продукта может потребовать более глубокого вовлечения специалиста по базам данных (высоконагруженное приложение), математика (поисковый механизм), специалиста по искусственному интеллекту и т.п.

Читайте также:  В каких продуктах лпвп

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

КОМАНДА ОТКРЫТИЯ: Хастлеры

Эта роль (hustler) умышлено оставлена без перевода. На самом деле, самые приличные варианты перевода это «энергичный человек» и «пробивной делец», но все из них явно указывают на качества, которыми должен обладать ее носитель. Что бывает, если в команде есть просто «человек с идеей», без пробивных бизнес-качеств? Получается бизнес трусогномов .

В чем профит? Именно этот вопрос — основная забота хастлера. В коммерческой разработке продукт всегда должен либо зарабатывать деньги, либо их экономить. В среде технологических

золотоискателей

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

Итак, предположим, вы собрали команду открытия продукта. Что дальше?

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

ШАГ 1. Определяем цели и принципы создания продукта.

Это могут быть:

  • Личные цели основателей
  • Цели бизнеса или организации
  • Принципы функционирования продукта

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

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

ШАГ 2. Оцениваем возможности продукта

Это можно сделать используя такие инструменты, как Business Model Cancas или Lean Canvas. Или же ответив на вопросы оценки возможностей продукта по Кагану:

  1. Какую конкретно проблему решает продукт? (предложение ценности)
  2. Для кого мы решаем эту проблему? (целевой рынок)
  3. Как мы будем измерять успех? (метрики бизнеса)
  4. Насколько велики возможности? (объем рынка)
  5. Какие есть альтернативы? (текущие конкуренты)
  6. Почему наш продукт лучше подходит для решения проблемы? (наши отличия)
  7. Почему сейчас подходящее время? (окно рынка)
  8. Как мы будем запускать продукт? (стратегия выхода)
  9. Какие факторы критичны для успеха? (требования и риски)
  10. Беремся / не беремся?

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

ШАГ 3. Идентифицируем ключевых клиентов и пользователей

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

Будте внимательны к тому, являются ли ваши будущие пользователи вашими «избирателями»? Будут ли они использовать ваш продукт по собственной воле или в его внедрении будет заинтересованы над-структуры? Например, если вы разрабатываете банковский сервис, то удобство пользователя будет не самым главным критерием выбора и всегда будет уступать место надежности и безопасности решения.

Если покупать ваш продукт будут не те же люди, которые будут его использовать, полезно описать профайлы «покупателей», что бы учесть их интересы и приоритеты.

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

ШАГ 4. Проводим исследования пользователей

Это этап предварительного интервью с целевой аудиторией продукта. Цели этой активности:

  • убедиться в наличие проблемы
  • узнать какими средствами она решается сейчас
  • получить идеи о вашем решении проблемы

Как готовиться интервью, выбирать аудиторию, задавать вопросы и анализировать ответы — я опишу в следующей части. Шаги с 4-го по 6-й могут быть выполнены несколько раз в цикле, еще до написания первой строчки кода.

ШАГ 5. Строим карту опыта пользователя «как есть»

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

ШАГ 6. Строим карту взаимодействия с продуктом

Отличный инструмент для этого — User Story Mapping от Джеффа Паттона. По сути, карта историй пользователя — это высокоуровневая, многомерная модель требований, описывающая сценарии использования продукта.

Читайте также:  Какие продукты дают сахар в крови

Этот инструмент хорош как для проведения мозгового штурма по проектированию функциональности, так и для выбора объема реализации в рамках релизов.

ШАГ 7. Выбираем минимальный ценный продукт (MVP)

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

1. Уже на этом этапе вы можете проверить свою идею о ценности, попросив обратной связи на несуществующий продукт. Это занимает время.

Я понимаю, что тысяча коров не расскажут как приготовить хороший стейк, и что если бы Генри Форд спросил своих пользователей чего они хотят, то ему пришлось бы совершенствовать лошадь. Именно поэтому, интервью с пользователями и получение обратной связи лучше доверить профессиональному UX дизайнеру.

2. На этом этапе вам уже понадобятся наброски интерфейса пользователя. Их создание занимает время.

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

Тема метрик крайне важна и заслуживает отдельной статьи. Предваряя разговор о разных системах и подходах в их создании (например, AARRR, или NSP), скажу довольно банальную вещь, которая лишь может натолкнуть на размышления.

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

Думаю, этого для Начала, этого достаточно. В следущей части постараюсь пройтись по важным деталям шагов 4-6 и обсудить Готовность начать разработку.

Источник

Как создавать софт, который действительно работает?

Вы на самом деле думаете, что у вас есть все для создания классного софта? Я открою вам один секрет: это нелегко и требует больших усилий, но всему этому можно научиться.

Вот мой список того, что необходимо для разработки проектов программного обеспечения, которое действительно хорошо продается и хорошо работает:

Научитесь создавать продукт для людей

Создание продукта для людей — это такое же умение, как и многие другие, и ему можно научиться. Я не имею ввиду визуальный дизайн (хотя это тоже является частью процесса). Я говорю скорее о том, чтобы распознать проблему и понять, как обеспечить такое взаимодействие человека с компьютером, которое гарантирует пользователю успешное решение проблем без каких-либо затруднений, вместо того, чтобы просто создавать самое что ни на есть стандартное CRUD-приложение для работы с базами данных, которое включает несколько типичных UI-компонентов.

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

Освойте и используйте несколько языков

Если другой язык (или другая среда разработки) является лучшим решением или дает вам большие преимущества, то используйте его. Часто овладение очередным инструментом не стоит дополнительных усилий.

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

Не ведитесь на рекламу

Используйте то, что является для вас наилучшим. Если ваша продуктивность высока на PHP, то и работайте с PHP. Конечно, иногда технологии на самом деле способны увеличить продуктивность или дать другие существенные преимущества, но я не преувеличу, если скажу о том, что это огромная редкость — такое встречается, пожалуй, раз или два в десятилетие.

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

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

Дизайн пользовательского интерфейса — это тяжелая работа, и использование MVC на стороне клиента не сотворит для вас магии.

Придерживайтесь одного стиля

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

Читайте также:  Какие продукты есть чтобы быть молодой и красивой

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

Внедряйте минимально жизнеспособное решение

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

И не забывайте: код не высечен в камне. Его несложно реорганизовать или переписать позже, когда вам действительно нужно будет изменить или расширить его, и когда вы будете знать реальные требования.

Избегайте сложностей

Я не использую такие препроцессоры CSS или HTML, как HAML или Sass (если вам удобно с ними работать, то используйте их на здоровье и повышайте свою продуктивность!) — мой стиль написания кода и «полировки» приложений требует много возни и переделок, и для меня намного проще возиться с кодом на низшем уровне (например, просто копируя и вставляя стили и работая со средствами разработки в браузере напрямую в файле CSS).

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

Все эти сложности — относительны. То, что мне кажется ужасно сложным, вы можете воспринимать как простое и естественное. Чтобы понять, какие виды работ являются для вас наилучшими, потребуется время.

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

Кодирование > Конфигурация

Легко попасть впросак, чрезмерно полагаясь на код, написанный другими людьми. Должно быть (как вы полагаете), если многие используют этот код, то он должен быть качественным. Ведь правда? Между прочим, именно поэтому большинство людей пользуются Windows. Это то, что называется «разумной достаточностью» (satisficing), или стремление к чему-то, что кажется для достаточным для человека.

Ваш мозг всегда старается найти самое легкое решение. Он скажет вам забыть о каком-либо компоненте или библиотеки, и большинство программистов согласятся с этим. Зачем заново изобретать велосипед и страдать от известного синдрома «Придумано не нами» (Not Invented Here)?

Выбор уже готового компонента — это практически всегда не самый оптимальный путь для решения проблемы. Подобные инструменты решат вашу проблему на 80%. А затем внезапно обнаружится, что для этой простой, казалось бы, вещи, которая выглядела такой простой, нет возможности конфигурации. И теперь вам нужно заняться реорганизацией исходного кода и исправлением ошибок в выбранной библиотеке, и в конечном итоге сделать разветвление кода. После этого вам нужно понять, как правильно выполнить тесты, и здесь вдруг выясняется, что возможность проведения тестов просто-напросто отсутствует. А затем… И все в том же духе.

Не забывайте, что вы программист, а не конфигуратор

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

Вы будете удивлены тем, как мало времени вы потратили на само написание кода по сравнению с тем, сколько ушло на выбор и настройку библиотек.

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

Никогда не переставайте учиться

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

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

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

Источник