[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-158433683", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxbwd&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&fmt=1&pr=" } } ]
{ "author_name": "Лена Очкова", "author_type": "self", "tags": ["\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439","\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f_\u0434\u043b\u044f_ios","\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435_\u044f\u0437\u044b\u043a\u043e\u0432","\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435_\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e","\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435_\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e_\u044f\u0437\u044b\u043a\u0430","\u0440\u0435\u043c\u0435\u043c\u0431\u0430"], "comments": 29, "likes": 17, "favorites": 9, "is_advertisement": false, "section_name": "default", "id": "17303" }
Лена Очкова
8 838

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

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

Поделиться

В избранное

В избранном

Дизайнер компании «Злые марсиане» Антон Ловчиков рассказал 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 и в онлайне чиним баги, анализируем обратную связь и пишем новые функции.

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

#Разработка_приложений #разработка_приложения_для_iOS #изучение_языков #обучение_программированию #изучение_английского_языка #Ремемба

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления