«Отойдите, я всё сделаю сам» — Дизайнер «Злых марсиан» рассказал, как разрабатывал приложение для запоминания информации

Дизайнер компании «Злые марсиане» Антон Ловчиков рассказал vc.ru, как придумал приложение «Ремемба», чтобы облегчить себе запоминание иностранных слов, потратил на его разработку полмиллиона рублей и научился программировать.

«Ремемба» — это личный проект, который я развиваю в свободное время с 2012 года. Задача «Ремембы» — помогать запоминать информацию: слова из иностранных языков, заумные термины родного языка, билеты по физике, что угодно.

Я начинал делать проект в первую очередь для себя: у меня очень плохая память. Читая книги на иностранном языке, я встречаю новые слова и смотрю их значение в словаре. Читаю дальше, переворачиваю страницу — и уже не помню перевод. Приходится постоянно сверяться со словарём. Время идёт, а удовольствия от чтения никакого.

Исследование

Однажды я узнал про метод пополнения словарного запаса под названием Golden list. Каждую неделю нужно брать расчерченный листок и заносить в него 25 новых слов. Через две недели надо найти этот листок, проверить, какие слова выпали из памяти, и записать их во вторую колонку. Ещё через две недели повторить операцию и перенести забытые слова в третью колонку, и так далее.

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

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

Дальше я изучил рынок подобных приложений. По запросу Flash cards App Store выдал великое множество приложений — но, конечно, ни одно из них мне не понравилось. И интерфейс слишком запутанный, и идея лотков реализована так себе, и добавление карточек неудобное.

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

  • Офлайн-режим. Приложение должно заполнять свободное время: в пробках, в очередях, на скучных лекциях и так далее.
  • Приложение-инструмент. Основным способом появления карточек должен быть ручной ввод. Я пользовался массой сервисов, которые возятся с тобой, как с ребёнком: составь слово из кубиков, выбери правильный перевод из четырёх. Все эти сервисы мне не подходили, потому что предлагали учить ненужные мне слова. А я Тафти читаю и хочу запомнить конкретную фразу.
  • Фразоориентированность. Учить отдельные слова очень непродуктивно. К тому же мозг запоминает и воспроизводит во время речи не отдельные слова, а их связки, куски фраз — это я вычитал в каком-то исследовании. Но очень многие сервисы зациклены на словах. А что толку от слова, особенно от глагола, если не знаешь, с каким управлением оно употребляется.
  • Мультиязычность. Приложение не должно быть привязано к определённому языку.
  • Адаптивность. У всех разная скорость запоминания, поэтому интервалы должны подстраиваться под человека, желательно с использованием машинного обучения.
  • Нормальный дизайн. На самом деле этот пункт шёл одним из первых: я же дизайнер.

Рисуй, ведь ничего другого ты не умеешь

Первые наброски сделал за один вечер. На следующий вечер они мне уже не нравились, и я всё переделал.

Первые наброски приложения для iPhone

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

А будет ли оно вообще работать

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

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

Первая версия веб-приложения

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

Чтобы проверить, как «Ремемба» поможет с нуля пополнять словарный запас, я начал изучать новый язык. Где-то за год использования приложения и листания самоучителя я смог на разговорном уровне освоить датский и набил словарный запас около 2000 слов (правда, считались уникальные словоформы, а не лексемы). Это доказало мне, что механика приложения работает и может приносить пользу.

Отойдите, я всё сделаю сам

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

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

Вторая версия веб-приложения

У меня были кое-какие навыки вёрстки и JavaScript, а написанию серверной части пришлось учиться с нуля. Я обратился к знакомому программисту. Сам он использовал Zend Framework — его же посоветовал и мне. Показал и объяснил, что там к чему, и потихоньку я написал серверную часть.

Вторая версия веб-приложения просуществовала больше года. На ней я отточил механику и понял, как всё должно работать.

Третья версия приложения, команда, планы

Наконец я нашёл iOS-разработчика и занялся обратным портированием дизайна на iPhone, так как макеты, нарисованные в начале 2012 года, устарели функционально и эстетически.

Вторая версия дизайна приложения для iPhone

С разработчиком мы договорились на формат, при котором я выкупал 50% его рабочего времени и платил за это $1000 каждый месяц. Это был 2013 год, я работал на московскую компанию, а сам жил в Воронеже. Схема казалось выгодной.

Пока шла разработка приложения, я задумался о развитии продукта. Понял, что не смогу самостоятельно поддерживать веб-версию и мне нужны помощники. Обратился к знакомому верстальщику, который переверстал всё нормально; тот привёл фронтэндера, который переписал весь фронтовый JavaScipt. В Twitter я нашёл бэкендера, который навёл порядок на сервере. Всем им я платил сдельно за оговоренные заранее куски работы. Каждый месяц на оплату моих экспериментов уходило где-то 40 тысяч рублей.

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

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

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

Расширение для Google Chrome

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

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

Приложение для Mac

Нашёл разработчика под Mac, за пару недель сделали приложение, я протестировал механику, но дальше развивать это направление не стал.

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

2014 год, кризис, $12 тысяч

В 2014 году начался кризис, я уволился с работы и занялся фрилансом, iOS-разработчик поднял ценник, деньги закончились, и мне пришлось заморозить разработку.

По итогу годовой работы я потратил на разработку для iPhone $12 тысяч и получил наполовину готовое приложение, которое в целом работало, но было слишком нестабильно для публикации. Мне удалось попробовать офлайн-изучение в деле и получить ощутимые результаты. Судя по онлайн-тесту словарного запаса, за полтора года я поднял свой словарный запас английского примерно с 4000 слов до 8500.

Из-за нехватки денег и вялого развития проекта ребята, которые помогали мне с вебом и расширением, постепенно покинули команду. Остался только серверный программист, с которым мы работаем до сих пор.

Всего на этот проект я потратил 568 тысяч рублей, не считая хостинга и оплаты сертификата iOS-разработчика.

2015 год, выход из кризиса, программирование

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

Единственное решение, которое я видел, — закончить приложение самому. Для этого в декабре 2014 года я открыл Xcode (среда для написания приложений для iOS) и начал её изучать. Но я же всё ещё дизайнер, поэтому перед этим обновил дизайн:

Третья версия приложения для iPhone, которая сейчас в App Store

Изучать программирование под iPhone было одновременно и сложно, и просто. Сложно — потому, что выражение «объектно-ориентированное программирование» пугало меня непонятностью, и потому, что знание HTML и JavaScript совершенно не помогало при изучении Objective-C. Я выбрал этот язык, так как Swift на тот момент был ещё молод, да и на Stack Overflow проще было найти примеры кода, написанные на Objective-C. Ну, а просто было благодаря отличному гайду для новичков от Apple. Сейчас этого гайда больше нет, но зато есть ещё лучше по Swift.

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

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

В Skype у меня было три знакомых iOS-программиста, которые, как мне кажется, меня возненавидели. Им я задавал вопросы, ответы на которые не мог найти на Stack Overflow. Иногда задавал всем троим один и тот же вопрос, чтобы поскорее получить ответ и двигаться дальше.

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

В конце 2015 года первая сборка приложения ушла на проверку в Apple. Приложение вернули из-за неправильной работы встроенных покупок. Ещё месяц понадобился на переделку, затем ожидание нового ревью — и 27 февраля приложение было опубликовано.

Что получилось

Сейчас в App Store лежит версия 1.2 и готовится к выпуску 1.3. Я реализовал все пункты (кроме машинного обучения), которые наметил в самом начале.

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

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

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

Посещаемость приложения и доходы очень низкие. С момента запуска приложение было установлено на 563 устройства, заработано на нём $30. Это, в общем-то, логично, ведь я делал приложение, опираясь на свои потребности. Только сейчас я начинаю получать обратную связь от платящих пользователей и учитывать их пожелания.

Работа над ошибками

Комбинация «Делаю приложение для себя и плачу за разработку» означает 100% убытки. Вероятность попасть в потребности рынка и вернуть инвестиции ничтожна. Но я по-прежнему верю, что если делаешь качественный инструмент, которым сам пользуешься каждый день, то найдутся люди, которые увидят в нём пользу.

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

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

©  vc.ru