В данном посте хочу рассказать об истории рождения собственного детища-приложения для ОС Android.
Сознательно останавливаюсь на эмоциональной и организационной, а не технической составляющей процесса. Если почувствую интерес хабравчан к техническим деталям — посвящу этому отдельный материал.
Данный пост также ни в коем случае не является рекламой и пиаром, поэтому в пост сознательно не включены ссылки и графические материалы приложения с включенными в них ссылками и QR кодами.
Публикация сделана специально для хабра с надеждой, что начинающим разработчикам будет полезно узнать какие трудности могут встретится на их пути и понять, что есть смысл в их преодолении.
Часть 1-я: Беременность
Забеременел я внезапно.
Но сначала предыстория.
Как и у многих айтишников и людей других творческих профессий мой рабочий день не совсем и не всегда нормирован. Кроме перепадов рабочего настроя есть еще и клиенты, рассредоточенные по всей России и некоторым зарубежным странам.
Соответственно последние переговоры могут начаться за полночь, а первый клиент из своего города может позвонить уже в 8 утра.
Имея маленькую дочь и супругу мне приходилось каждый раз на ночь переводить свой телефон в виброрежим, чтобы самому услышать вызов и не разбудить семью. Думаю, любой молодой родитель испытывал всю гамму ощущений, когда телефонный звонок будит ребенка, уложенного спать в тяжелом бою.
При этом периодически возникали «промахи», порой я забывал выключить телефон (в результате чего мог продолжить утро, играя в куклы с дочерью), а еще чаще я забывал включить звук телефона утром и пропускал дневные звонки, когда фоновый шум уже не позволял услышать Ж-Ж-Ж-Ж от виброрежима.
Первая мысль была перепоручить кому-нибудь следить за состоянием моего телефона. Но ни супруга, ни тем более моя трехлетняя дочь не испытали восторга или энтузиазма по этому поводу.
И тут ко мне пришло озарение — это же Android, а значит эту задачу можно поручить ему!
Не долго думая, я полез в дебри Google Play. От увиденного я испытал культурный шок. Нет, приложений под мою задачу можно было приспособить несколько, но это означало поселить к себе в телефон либо монстра, который очень аппетитно смотрел из магазина на батарею телефона (от чего она, как мне показалось, заранее немножко села) и с которым можно договориться проведя час-другой в переговорах-настройке. Либо же это был набор однотипных страшненьких дизайном приложений, внешний вид которых вселил в меня неуверенность хочу ли я вообще такую программу.
Хочу.
Но все же не такую.
Программа, которую я хотел должна была своим видом вселить в меня уверенность, что она справится с поставленной задачей. А так же мне хотелось именно перепоручить задачу, а не преобразовать ее в задачу длительной настройки и объяснений чего я собственно хочу. Ну что же, настало время поизобретать свой двухколесный транспорт.
С этого момента можно считать, что беременность идет полным ходом.
Итак формализуем требования к будущему детищу:
- Лаконичный и понятный интерфейс (хотелось бы интуитивный, но это в процессе использования только определится)
- Отсутствие сложных сценариев для пользователя. В идеале возможность выполнять основные операции 3–4 нажатиями.
- Минимальный аппетит к ресурсам телефона, а в частности к батарее.
Ну что ж, каким оно будет я уже начинаю понимать, пора придумывать детищу имя.
Ringer mode manager, Sound automate — первые варианты были просто предназначены для отпугивания потенциальных пользователей.
Еще пару дней раздумывания и вот оно! ModeBot. Кратко, ёмко, имеющее предпосылки к Android и субъективно приятно.
Вдохновленный, делаю первые наброски интерфейса и еду к замечательному дизайнеру Алексею для того, чтобы попросить у него иконки. Алексей — веб дизайнер, но давно мечтал порисовать что-нибудь для мобильных приложений. Мобильные устройства для него — это iPhone, iPad и прочие Ай. Прослушав лекцию «Нет телефона, кроме Айфона, а Айпэд верный спутник его» я получил обещание через пару дней получить результат и удалился, чтобы углубиться в разработку.
Часть 2-я: Рождение
Роды были тяжелыми.
Весь процесс был в новинку. На тот момент я имел большой опыт разработки маленьких и больших, десктопных и веб-приложений, системных и бухгалтерско-прикладных программ. Но так получилось, что Java и Eclipse, до этого момента существовали отдельно от меня.
Обладая природным перфекционизмом и любопытством я очень часто в поисках информации (а требовалось мне ее огромное количество) захватывал кучу смежных и не очень областей, касающихся Андроида, Явы, оптимизации алгоритмов, обзоров телефонов и прочего. Лоб был синий от ударов граблей, но энтузиазм не угасал. Каждый участок кода, который в силу неопытности в языке получался некрасивым, нещадно переписывался до полного удовлетворения.
Когда, наконец, «ребенок» родился, я получил эффект, который испытывают все молодые родители — результат оказался милым, своим, но слегка страшненьким, совершенно маленьким и беспомощным.
То что по планам должно было произойти за пару дней, заняло около месяца работы по вечерам и урывками по выходным.
Ну что же — впереди нас ждало тестирование, и развитие приложения до стабильного состояния.
Часть 3-я: Учимся ходить
Ребенок падал.
А когда наконец пошел, то пытался побежать и снова падал.
А когда научился бегать, то мог убежать не в ту сторону.
Но в итоге удалось достичь поставленной цели. В основу программы легла простая концепция одиночных команд. Каждая команда звучит так «В такое-то время установить такой-то режим». В противовес многим похожим программам, которые работают по принципу установки периода перехода телефона в виброрежим, система одиночных команд оказалась более универсальной и простой в использовании. С ее помощью можно комбинировать такие сценарии как «Беззвучный режим -> Виброрежим -> Звуковой режим» и прочие. И интерфейс получается элементарно простым и понятным.
Управление заданиями упрощено и стандартизовано. Область каждого задания разбитта на 3 части. Все действия выполняются кратким, либо долгим нажатием на эти области.
В увлекательном процессе воспитания, я понял что мне необходимы еще несколько функций, которые уже без особых проблем (благодаря выстраданно чистой архитектуре кода) были внедрены — это настраиваемые виджеты, которые позволяют одним нажатием (например перед встречей) переводить телефон в один из режимов, из которого затем через некоторое время он вернется автоматически, благодаря ModeBot.
Прошел примерно месяц с начала разработки и у Алексея как раз истекли его 2 дня. Не успев поиронизировать по этому поводу, я понял, что не стоит.
Подавив стойкую нелюбовь к Android-телефонам он сидел за изучением гайдлайнов на официальном сайте Google и в итоге предоставил мне не концепт, а полный набор графики в различных разрешениях и банер для размещения в Google Play.
На тот момент мой малыш уже крепко стоял на ногах, проворно выполнял порученные задания и в то же время никак не докучал и не проявлял себя, когда он не был нужен.
Теперь путь лежал только в одном направлении — Google play.
Часть 4-я: Растем и развиваемся
Первая встреча с большим миром была циничной.
Сначала я хотел сделать программу бесплатной, но зная по опыту, что энтузиазм сам по себе не вечен, а вместе с его пропажей останавливается и развитие программы принял решение добавить монетизацию. Размещение в приложении рекламы противоречит самой сути ModeBot — незаметно и с минимальным потреблением ресурсов выполнять свои задачи. И я покупаю аккаунт разработчика и делаю публикацию по минимальной цене в 1 доллар.
День, два, три, месяц — скачиваний нет. Хорошо, делаем вывод, что само по себе признание не приходит.
На сайте 4pda в рамках поддержки разработчиков утром публикую обзор приложения. И практически онлайн слежу за комментариями и скачиваниями.
В течение дня — 50 скачиваний. На тот момент для меня это было просто гигантским числом. К концу дня, наметив дорогу в магазин за шампанским, чтобы отпраздновать сие событие, я вижу свежевыложенный apk на форуме того же 4pda.
Поход в магазин отложен.
По итогам этого и следующих дней число скачиваний apk на форуме в 6 раз превысило число скачиваний из Google Play. Покупки приостановились, несмотря на выход на 8-е место в ТОП в категории персонализация. Позднее категория была изменена на Инструменты.
Отзывы в маркете и на форуме практически все очень высокие. Приложение оправдало функциональные ожидания.
На форуме меня заверили, что разместили apk, только для тестирования пользователями, так как я не создал бесплатной версии приложения.
Ну что же, резонно. На основе утекшей версии рождается ModeBot Free. В основную же версию программы добавляется «Белый список» и защита через проверку на серверах лицензирования Google и перевод на английский язык.
Публикация на тематических американских форумах (xda-developers.com, android.net и пр.) практически не принесла результата. На данный момент зарубежных скачиваний около 5%. Публикация Вконтакте набрала лайки, но не переходы, похоже что там люди ставят их автоматически.
На данный момент мой Андроидо-малыш уверенно ходит в «детский сад». Повышается стабильность работы, снижается потребление ресурсов и добавляются новые функции. Однако любые изменения вносятся только если они соответствуют первоначальным принципам — легкость, ясность и стабильность.
Количество скачиваний пока небольшое, но стабильное, аккаунт разработчика окупился.
Есть активные поклонники программы из разных стран, которые дают хорошую обратную связь.
На данный момент рейтинг программы 4,58. Более 80% установок являются активными.
Ну что же, готовимся «пойти в школу» — ведь мы только начали свое развитие.
Автор: TemaAE