Education

Четыре года назад я опубликовал своё первое приложение в Google Play Store. И по ходу разработки я наткнулся на множество препятствий, но также и научился многим новым вещам. В этом посте я описываю две главные проблемы, с которыми сталкиваются многие разработчики в работе над личными проектами. 

Когда я начинал свой проект, у меня не было идей, что делать сначала, как это работает и что дальше. Прошло время и теперь у меня есть, чем поделиться. Основная проблема новичков — незнание с чего начать и что именно делать. Давайте разберёмся.

С чего начать

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

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

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

Что делать

И вот у нас есть идея, но не получится сразу запустить IDE и сформулировать свой запрос, просто получив в ответ то, что нам нужно. Это пошаговый процесс.

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

  • Сбор требований
  • Дизайн пользовательского интерфейса
  • Фаза разработки
  • Тестирование
  • Развёртывание
  • Аналитика

Сбор требований

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

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

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

Дизайн пользовательского интерфейса (UI)

Поверьте мне: UI-дизайн — это действительно ключевая вещь в вашем приложении. Термин понятен, UI — это пользовательский интерфейс. Вы должны понять всю важность UI/UX, где UX — это пользовательский опыт. Пользовательский интерфейс — первое, что видит пользователь, поэтому он должен сразу привлечь. Со временем популярность определит судьбу приложения. 

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

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

Фаза разработки

Вот мы и прошли основные этапы, а теперь настало время самого драматичного этапа — непосредственного программирования. И вот это самый подходящий момент запустить наши IDE и сражаться с ними какое-то время, чтобы реализовать нашу идею. Великие вещи редко случаются быстро, так что будьте терпеливы и уделите этому еще больше своего времени и внимания. Добавьте какую-нибудь анимацию для классного UX. Рождение чего-то нового — это не особенно простая вещь. Если у вас есть дети, то вы понимаете, о чём я.

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

Моё предложение: если вы разрабатываете приложения на Android, то стоит использовать Kotlin, а также следовать шаблону MVVM (Model-View-ViewModel, Модель-Представление-Модель Представления) для понятной архитектуры. Применяйте корутины и Dagger, если нужно. Почитайте что-нибудь про чистую архитектуру, чтобы ваше приложение было несложно поддерживать и тестировать позже. В процессе разработки следуйте принципам SOLID. Узнайте, можно ли сделать что-то для оптимизации. Всё, что я советую, необязательно, но очень помогает улучшить результат. Примените какой-нибудь фреймворк для краш-анализа, чтобы понять, где могут быть сбои. Найдите систему контроля версий, например, GIT, чтобы поддерживать исходный код в порядке. Мастерство — это постоянное обучение, никогда не останавливайтесь в этом.

Тестирование

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

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

Развёртывание

Чтобы развернуть приложение, вам нужен аккаунт в Google Play Store, который стоит 25$ единовременного взноса. В случае с Apple App Store цена составит 99$ в год.

Изначально выпустите альфа-билд, а затем бета и отправьте его в продакшн. Когда будете делать новый релиз, сделайте пререлиз для небольшой группы пользователей, отловите сбои и приостановите релиз, если будут серьёзные ошибки. Исправьте баги, а затем снова сделайте релиз. Постепенно увеличьте развёртывание с 5% до 100%. Если сделаете такое развёртывание по нарастающей, убережете себя от критичных негативных последствий.

Аналитика

Это ещё не всё. Аналитика тоже играет важную роль. Она даёт вам информацию от пользователей, правильно ли сконфигурировано приложение.

На какой-то из стадий в одном своём приложении у меня было 1000 установок и 900 удалений в день. Это было очень плохим знаком. Исправить ошибки поможет только аналитика: необходимо разобраться в пользовательских характеристиках и отреагировать на них. Хорошо начать с таких инструментов аналитики, как Google или Firebase. Но есть и другие сетевые инструменты, например, CleverTap, Segment и так далее. Используйте платформу для анализа в вашем будущем приложении. 

Заключение

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

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

Читайте также:


Перевод статьи Satya Pavan Kantamani: Why Developers Can Fail to Create Successful Personal Apps