26 мая 2021 года я проснулся с желанием сделать свой трекер самочувствия. И не просто, а лучше того, что представлено на рынке. Идея была в том, чтобы предоставить пользователям возможность отслеживать эмоциональное и физическое самочувствие по шкале от 1 до 10, а также видеть статистику по среднему самочувствию.
Я был невероятно вдохновлён и рассчитывал сделать всё за месяц. (ха-ха, глупец, как же я ошибался). На тот момент я был iOS разработчиком с 7 месяцами коммерческого опыта и даже не представлял, что меня ждёт.
В итоге всё вылилось в известный мем:
Спустя 2 месяца работы над проектом я понял, что сделать своё полноценное мобильное приложение, даже самое простое, — невероятно сложно и долго. Честно говоря, оглядываясь назад я не понимаю, как не бросил работу от осознания количества того, что нужно сделать. Наверное, потому что фигачил не заглядывая сильно в будущее.
Всего разработка релизной версии Sveti заняла порядка 320 часов. Всё начиная от дизайна до кода сделал сам. Чаще всего я устраивал себе “задротские” выходные, когда занимался проектом буквально с 11 утра до 10 вечера. 28 декабря вышла открытая бета. 5 января случился полноценный релиз.
Что в итоге получилось:
Чему я научился или советы тем, кто тоже планирует сделать своё приложение
1. MVP – круто
Все эти советы про выпуск Минимально Жизнеспособного Продукта (MVP) — правильные. И следуя им с большой вероятностью вы всё же доведёте ваш проект до пользователя.
Поясню. Всегда хочется сделать что-то законченное, полноценное, крутое. Такое, что сможет покорить сердца. Проблема в том, что сделать что-то большое и законченное невероятно трудозатратно. И чем больше вы “варитесь” сами по себе, ковыряя ваш идеальный продукт мечты — тем выше шанс, что он никогда не увидит свет.
Лучше сконцентрироваться на пусть на минимальном, но завершенном функционале. И отдать то, что вы сделали пользователям для проверки гипотез. Да, у вас будет не 20 фич, а 5, но тех, которые максимально отражают ваше видение и идею. Тогда вы сможете понять, в правильном ли направлении вы двигаетесь. А также получите ценную обратную связь про баги и желаемые фичи. А ещё заряд вдохновения от осознания того, что результатами вашего труда пользуются.
Отзывы от первых пользователей (спасибо вам 💛):
2. Начните с прототипов и макетов
Порой хочется сразу сесть за написание кода. Но рекомендую начать с отрисовки прототипов и макетов экрана. Прежде всего это нужно для того, чтобы на “живом” проекте не тестировать разные идеи касаемо дизайна и функционала.
Тестировать гипотезы рисуя их на макете в миллион раз быстрее, чем если бы вы правили код и заново загружали проект и ждали, пока отрисуются изменения. Плюс банально наличие конкретного видения ЧТО вы хотите и КАК это должно выглядеть позволит вам работать над фичами значительно быстрее. К тому же, всегда можно показать макеты друзьям/близким/коту и спросить их мнения — и благодаря этому заметить важные моменты еще до начала разработки.
Как постепенно менялось видение дневника (скрин из программы Sketch). В итоге от фичи с прикреплениям картинок пришлось отказаться.
3. Прогнозируйте и будьте готовы к необходимости обработки “крайних” сценариев использования продукта
Например, в моем приложении есть функция тегов. Вы можете добавлять теги к своим заметкам в дневнике настроения. Сами теги находятся в группах тегов. И всё это прекрасно работает, если не выходить за стандартный сценарий использования.
Но что делать, если пользователь удалит все группы тегов? Что он увидит на экране новой заметки на месте раздела тегов для этого случая? Что делать, если пользователь удалит все теги в определенной группе? А что, если пользователь удалит теги, которые уже использовались в заметках в дневнике? А что если потом он захочет отредактировать эти старые заметки с несуществующими тегами?
Поэтому рекомендую во время разработки примерно прикидывать такие вот нестандартные сценарии использования и учитывать их в архитектуре проекта. Лично я во время разработки об этом не думал — а потом обжегся, когда пришлось существенно допиливать существующую логику.
Как я решил проблему: позволил оставлять удалённые теги в старых заметках, а затем их удалить при редактировании. Простите за английский, не уследил с локализацией.
4. Ваш проект может стать второй работой
Как бы грустно это не звучало, но если вы выпустите ваш продукт, а потом захотите добавлять в него новые фичи и фиксы багов чаще чем раз в квартал — приготовьтесь к тому, что у вас будет “вторая работа”.
Это осознание может сильно удручать, но к этому нужно быть готовым, чтобы не сгореть от постоянного вджобывания. К примеру, недавно я делал фичу облачного бэкапа. И чтобы её сделать пришлось после работы практически всю неделю безвылазно сидеть с 18 до 1 ночи. Не пропагандирую такой образ жизни, но такова реальность.
Фото в цвете: воодушевлённый разработчик работает над своим проектом и радуется жизни.
5. Про подписку разработчика Apple
Чтобы получить возможность публиковать свои приложения в AppStore или распространять бету — нужно заплатить 99 долларов Apple и получить подписку разработчика. Как бы это смешно не звучало, но сделать это не так просто.
14 декабря я оформил заявление, указал данные карты для оплаты подписки и принялся ждать. Прошла неделя, я так и не получил ответа от Apple (деньги у меня не списали). Я написал в поддержку. Спустя 2 дня мне ответили и я узнал, что платёж почему-то не прошел и нужно оплатить через приложение Apple Developer. Кстати, рекомендую сразу оформлять заявку через приложение, а не сайт. Я сделал всё по рекомендации, деньги списали. Снова принялся ждать. Спойлер: ничего не произошло.
Я снова написал в поддержку. Оказалось, нужно предоставить документы (копию загранпаспорта, например). Я отправил копию и заметил, что у меня не совпадает написание имени с тем, как указано в документе (в заявке Savely, в документе Savelii). О чём я с искренним сожалением написал в комментарии к отправке документа.
27 декабря пришло письмо счастья о том, что меня приняли в программу и всё хорошо. Ошибку в имени поправили в Apple самостоятельно. Какой можно сделать вывод — не бойтесь писать в поддержку и просить помощи. У меня сложилось только положительное впечатление от поддержки. Если бы я “сидел ровно” и ждал ответа от Apple — полагаю, что до сих пор подписки у меня бы не было.
Мои попытки в получение помощи:
Итоги
Пару дней назад, спустя месяц с релиза, я выложил обновление приложения с новым важным функционалом — добавил больше статистики, онбоардинг, бэкап и поправил несколько багов. Всего за январь приложение скачали 82 человек. Вернулось в приложение 37 (почти половина). Ежедневно пользуются приложением в среднем 5-6 человек.
Всего за период 43 пользователя создали хотя бы 1 запись в дневник. Всего создано 247 записей. В среднем 5 записей на пользователя. Кто-то скачал приложение в американском городке Коффевилль. Сейчас же из этого города у меня 11 пользователей. Продолжаю наблюдать за распространением приложения :О
Результаты за месяц и пару дней февраля:
Это был тяжелый путь, но я счастлив, что получилось, и у меня есть первые пользователи. Если вы разработчик и думаете о своём проекте — крайне рекомендую пробовать. Это приключение сделает вас гораздо лучше, как специалиста.
P.S. Если вас заинтересовало приложение, то его легко найти в AppStore по названию Sveti. А еще оно есть в открытом доступе на Github!
Буду рад ответить на вопросы в комментариях!