Трудный опыт обучения, который я хотел бы повторить снова

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

Встреча

В январе 2017 года ко мне обратились с идеей двое друзей, только одного (дизайнера) из которых я знал более 15 лет. Они хотели начать что-то новое, что могло бы повлиять на жизни людей. Концепцией было мобильное приложение, которое поддерживало бы покупку и продажу подержанных или новых товаров. Я знаю, это не новаторская концепция, но прежде чем вы откажетесь от нее как от подражателя Craigslist или Letgo / OfferUp, нашей основной задачей была безопасность клиентов; серьезная проблема для частных транзакций между незнакомцами.

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

Приложение

Дизайнеру не потребовалось много времени, чтобы создать макеты экрана веб-сайта и мобильного приложения; это был для него уже год. Основные функции были понятны на основе нашего собственного опыта покупки / продажи приложений, и мы знали, чего хотим с точки зрения безопасности. Я начал создавать веб-сайт с помощью Angular (в то время v5) и искал мобильный фреймворк, который мог бы повторно использовать часть служебного кода. После некоторого исследования я остановился на относительно незрелом фреймворке под названием NativeScript.

У фреймворка были свои проблемы, и сообщество, хотя и активное, было не таким сильным по сравнению с React Native, Ionic или Xamarin. В то время у меня не было опыта работы с React, казалось, что Ionic имеет проблемы с производительностью при запуске в WebView, а я никогда не слышал о Xamarin. NativeScript не запускался в WebView и использовал плагины для доступа к собственному оборудованию.

Вы можете написать свое приложение, используя Angular и TypeScript, и оно будет скомпилировано в собственное приложение на iOS или Android.

Я был продан. Преимущества в производительности были убедительными, и Angular и TypeScript были моей сильной стороной с парой лет опыта работы с ними и их предшественником AngularJS. Ionic поддерживал Angular, но я знал, что производительность будет большим фактором, поэтому решил использовать NativeScript.

Создание веб-сайта было относительно простым по сравнению с мобильным приложением. Для меня это была новая территория, поэтому потребовалось несколько попыток, чтобы пользовательский опыт был даже ближе к более устоявшимся приложениям. Поначалу производительность Android была настолько низкой, пока не была обнаружена опция сборки под названием snapshot, в которой использовалась функция Google V8 снимков кучи.



Это изменение сильно изменило время запуска приложения, но пользовательский интерфейс Android всегда требовал немного больше работы, чтобы получить правильный макет и размер. В этом отношении NativeScript был удобен тем, что можно было создавать отдельные стили CSS для Android или iOS.

Аналог iOS никогда не имел этих проблем и имел лучшую производительность, а пользовательский интерфейс требовал меньше настроек. Его главный недостаток был связан с требованиями Apple использовать свои сертификаты, файлы подготовки и TestFlight. В итоге я воспользовался сайтом под названием Diawi для тестирования версий, которые еще не были полностью готовы к выпуску в учетной записи разработчика Apple. Диави все еще существует сегодня, так что я думаю, это законно, потому что тогда я не был так уверен в этом.

После почти года разработки, которая включала борьбу с процессом сборки NativeScript и выяснение требований к отправке для Apple Store (отправка в Google Store была намного проще), казалось, что мы были готовы к запуску, но оставался один вопрос. Этого было достаточно?

Релиз

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

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

Событие

Опасаясь насыщения рынка США и доминирования таких тяжеловесов, как eBay и Craigslist, бизнесмен смог найти контакт в Панаме. У этого контакта уже был опыт координации крупных мероприятий, поэтому в планах было его организовать и продвигать на нем наше приложение. Они быстро собрали маркетинговую команду, которая взялась за публикации в наших учетных записях в социальных сетях. Казалось, что они неплохо продвинулись.

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

В приложении не было ни спроса, ни потребности.

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

Конец

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

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

AWS EC2, CloudWatch, Cloudfront, ELB, Auto Scaling, Mongo, Angular, TypeScript, NativeScript, Loopback, Firebase, Google API, Android, iOS…

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