Всем здравствуйте! Давно уже собирался написать историю своего проекта на Хабр, более того, даже обещал. И тем не менее, этот момент откладывался на потом: когда выйдет новый релиз, когда закончится обновление дизайна, когда все заработает, как задумано. Причина одна – лень, прикрывающаяся отсутствием времени.

image

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



Запаситесь кружкой горячего молока и печеньем. Ну или пивом с крекерами, что вам ближе.

image

Этот пост о моем опыте мобильной разработки. Я новичок в этом деле (и как разработчик и как писатель) и, возможно, кому-нибудь мой опыт покажется смешным или незначительным. Обычно обозревают свои результаты или инди-разработчики игр, или матерые разработчики кроссплатформенных приложений для своих сервисов. У меня все проще – небольшое мобильное приложение под Android, изначально задуманное в помощь себе, оказалось востребованным несколько большей аудиторией, нежели ожидалось.

Дисклеймер
Здесь вы не увидите хитрого велосипедостроения или забивания гвоздей микроскопом. Я не переоткрывал очевидные вещи и не ставил задачи написать сугубо-техническую статью. Я хочу показать, как можно разработать самостоятельно востребованное приложение (500К+ установок) и при этом получить чуть больше, чем просто удовольствие.


В своей категории приложений приложение уверенно держится во второй десятке платных, получило бесплатное упоминание на 4PDA в подборке лучших и текущее суточное количество установок 300-900 в сутки. Иногда до 2500. И кстати, я не прибегал ни к какому продвижению – ни рекламы, не обзоров на тематических ресурсах — нигде, никак, вообще. Считайте, что срываю покрова.

Я не думаю, что можно отнести мои результаты к success-story – но, когда хобби-проект начинает приносить месячный доход больше основного, есть повод задуматься.

Предыстория

Смеркалось… нет, ну если честно, был уже поздний вечер. Начитавшись на Хабре успешных историй по мобильной разработке, задумался — чем я хуже? У меня есть свободное время (по поздним вечерам и иногда выходным), есть ноутбук, есть доступ к сети. Даже несколько Android девайсов найдется.

Верно говорят, что вновь создаваемый софт должен решать существующие проблемы, а не надуманные. Мое желание «написать что-то» укрепилось и детально сформировалось, когда взгляд упал на стопку чеков с автозаправки. Ну есть у меня некоторая слабость — следить за авто в том числе и через уровень его расхода топлива. Эти чеки собирались в бардачке, а чуть позже, набрав критической массы, перебирались в дом и неспешно вбивались в Excel. В общем я решил написать программу по расчету расхода топлива. Как показал беглый поиск в Google Play (кончалась холодная зима 2013-го), конкуренты присутствуют. Ну как конкуренты, не такие, на результат которых смотришь и опускаются руки, понимая, что невозможно тягаться в одиночку. Сразу возникло желание сделать лучше, со своими… (здесь обычно любят писать что-то про куртизанок и карточные игры) преимуществами, вот.

Вопросов под какую платформу писать не было — только Android, только native. К моему удовольствию в сети ну до безобразия множество уроков по установке, настройке и использованию средств ADT (тогда Eclipse – наше все). Многие из них повторяются, но несколько ресурсов с количеством уроков, переваливающим за сотню, мне очень помогли.

Я — недавний выпускник-инженер без опыта коммерческого программирования. Мои познания ограничивались Pascal/Delphi из первых общеобразовательных курсов университета и… все. К чему я это — если задаться целью научиться писать под Android, это легко достижимо. Никому не верьте. Иногда даже кажется, что моя кошка может проводить code-review моей писанины. Ее попытки предотвратить охлаждение ноутбука холодными вечерами своей тушей вряд ли прошли для нее впустую.

image

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

Спустя два месяца у меня был прототип.

Alpha-тест

А как еще можно гордо назвать приставание ко всем друзьям и коллегам, имеющим личный автомобиль? Я вкратце обрисовывал, что программа делает и просил ее «попользовать» при мне. Все замечания записывал. Такого количества дельных советов я не получал ни до (кошка со всем была согласна) ни после. Причем большинство замечаний были справедливы и вызывали желание почесать затылок и вопрошать: «И как я сам не додумался?». Отсюда напрашивается еще один капитанский вывод — почаще отдавать свое творение на внешний непредвзятый суд.

Beta-тест

Прошел еще месяц. Как только все указанные косяки были устранены, я задумался о релизе в Google Play. Было несколько тревожно — вот сразу так взять и начать раздавать свое ПО. До конца месяца оставалась почти неделя и я решил вначале выложить свою программу на 4PDA. Не зря. На удивление, первые пользователи были даже тактичнее моих друзей и список доработок/улучшений был небольшим. Я приготовился к релизу.

Здесь следует сделать лирическое отступление и обрисовать те задачи, которые я ставил перед собой, и тезисы, которыми руководствовался:
  • Приложение полнофункционально, бесплатно и без рекламы.
  • В случае успешности (не помню, какие ставил цели) добавляю несколько дополнительных опций и выпускаю параллельно платную версию.
  • Качество приложения на первом месте, стараться решать все проблемы в кратчайшие сроки.

С этими идеями я опубликовал приложение 1 июля 2013 года (черт как же давно это было).

Релиз

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

image image image

Как это выглядит сейчас
image image image


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

В играх есть правила. Правила эти придуманы разработчиком игры, и ему просто отбиться от недовольных, назвав баги своих кривых творений особенностями геймплея. В приложении, имеющем дело с деньгами и точными цифрами, так не прокатит – все должно совпадать до копейки/миллилитра. Мое приложение для автовладельцев, что автоматически добавляет возрастной фильтр к моей аудитории — 18+ (отсылка к КДПВ). Так как желание контролировать финансы говорит о практичности и аккуратности пользователя. Можно сказать, что у меня идеальная аудитория – взрослая, обеспеченная, расчетливая.

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

В Google Play есть деление по категориям, одна их которых — Транспорт, куда я и попал. Внутри категорий есть деление по Топам — Бесплатных/Платных/Новых Бесплатных/Новых платных.

Первые 30 дней после публикации я могу быть в Топе новых бесплатных. На 10-й день я там и оказался. Количество скачиваний в день резко подскочило и держалось так до конца месяца. Согласитесь, для нишевого приложения — для взрослых дядек, которые имеют авто и собирают чеки на заправках — более полутора тысяч скачек в день, хороший показатель. Целый месяц я упивался графиками и показателями. Судите сами:

image

Справедливости ради стоит отметить, что количество удалений тоже подскочило и составляло около 50-80%. Я связываю это опять же с особенностью приложения.

Прошел месяц и количество дневных установок упало. В пять раз. Было 1500, стало 300. Более того, количество удалений еще некоторое время отставало по темпам и вскоре тоже упало, оставив естественный прирост 40-50 пользователей в день. Сказать, что я был удивлен – ничего не сказать. Впрочем, просветление настигло почти сразу – приложение из Топа новых бесплатных уже вылетело-то. Кстати я подметил интересный способ продвижения некоторых трешевых приложений — каждый месяц перезаливаться и висеть в новых. Причем такие находил и в авто-приложениях, и в играх, и в утилитах.

PRO — Релиз

Спустя пару месяцев (ноябрь 2013) я наконец понял, какую функциональность можно вывести в отдельное приложение, ничем не обидев существующих пользователей:

  • добавление более одного автомобиля (если государство собирается вводить дополнительный налог для автовладельцев нескольких авто, чего мне стеснятся)
  • расширенные виджеты.
  • углубленные отчеты по расходу топлива.


Казалось бы, вот оно – есть хорошее приложение с неплохим для приложения органическим трафиком (200-300 установок в сутки). Pro опубликовано, на форуме единомышленников об этом написано, жду. Честно говоря, ночь в ожидании статистики была беспокойной – как минимум раз пять лез проверять, не обновилась ли статистика. И…

image

В первые сутки программу установило 14 человек, потом 6, потом 5, спустя 2-3 месяца в лучшем случае через день другой проскакивала покупка. Спустя три месяца на счету Google Play болтались около $95. Казалось бы, чего еще ждать – бросай проект, вставай на лыжи. Пробуй что-то новое. Но мне же обидно, мне же стыдно перед кошкой, которой я рисовал картины счастливого недалекого будущего. Я проанализировал поведение пользователя (ну в смысле крепко задумался при взгляде на диаграммы переходов Google аналитики в приложении), шлепнул себя по лбу и понял очередную прописную истину – пользователь, может и желающий отблагодарить автора приложения, попросту не знает о такой возможности. Я, как очень вежливый разработчик, нигде не досаждал пользователю само-рекламой и это было моей ошибкой. Большей ошибкой было бы только то, если бы я все же досаждал.

Я переделал несколько элементов. Если раньше при обновлении у меня всегда был список изменений «Что нового», то теперь полноценный диалог – похвалить/пожаловаться/посмотреть историю разработки/обновится до про/чай/кофе, если желаете.

Хвастаясь списком того, что сделал, не стыдно, а попутно можно и предложить отблагодарить, поддержав проект.

Ситуация немного выправилась.

image

Количество ежедневных покупок увеличилось до 5-8, а ежемесячный профит увеличился с $20-30 до $140 – 170, вполне подлежащих переводу на карту. Я понял зависимость и стал с новыми силами готовить обновления, чтобы удивлять пользователей не списком излеченных багов, а количеством новых фич.

Поговорку про пришествие аппетита во время еды, наверное, все знают. Мое приложение – универсальный калькулятор расчета расхода. Я смог совместить все известные подходы к расчету расхода топлива, научился прогнозировать выбег и остаток в баке. Со временем пользователи совсем от рук отбились и стали требовать все больше и больше возможностей, которые не могли быть в такой программе концептуально. Учета всех расходов на авто захотели. Я задумался…

Релиз нового проекта – учет всех расходов автомобиля

Умудренный собственным опытом я не кинулся в разработку тут же и с головой. Я начал проводить исследования. Блин, оказывается мою сумбурную подготовительную деятельность можно обозвать так верно и точно. Что я предпринял:
  • Я скачал все приложения схожей тематики, все запустил, настроил, попутно выписывал список минимального функционала и интересных идей, которые не постесняюсь позаимствовать. Выбор между удобством использования и собственными велосипедами к счастью пал на первый вариант.
  • Также я вел (и веду) тесную переписку с активными пользователями (почти последователями) приложения. Я задавал вопросы им – что хотят увидеть, что хотят делать в приложении.
  • В оригинальной теме первого приложения я начал дразнить скриншотами нового, попутно приводя перечень заявляемого функционала и отслеживая мнения.
  • Я даже спрашивал у иностранных пользователей о наиболее подходящем названии.

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

image image image

Однозначно, пришествие Material Design пошло на пользу последним версиям приложения
image image image


Функционал, который я изначально задумал для приложения и который к настоящему моменту реализован на 80% — всеобъемлющая солянка из лучшего, что можно только придумать. Я рискую навлечь на себя гнев НЛО, приведя здесь список фич, но без него моя история была бы неполной:
  • Составление категорий трат и доходов
  • Составление шаблонов (подкатегорий) с различными настройками периодичности и учета в содержании.
  • Учет остатков по списку собственных запчастей.
  • Составные траты (к примеру – ТО, включающее ряд работ)
  • Гибкая настройка учета трат как содержания (ОСАГО размазываем на год вперед, а налог на года назад, ТО на 15 тыс. км после и т.д.)
  • Куча разнообразных графиков (мне повезло подружиться с одной библиотекой).
  • Гибкая настройка интерфейса с просто гигантским набором карточных отчетов.
  • И конечно модуль двух-топливного учета расхода топлива, пришедший из первого приложения с прогнозированием остатков и выбега

Вся эта функциональность потребовала почти полтора года постепенной работы и интеграции. Тема на форуме нового приложения исчисляется в 2200+ сообщений. Монетизация приложения необходима хотя бы для того, чтобы иметь оправдания перед женой за истраченное свободное время. Не мудрствуя лукаво, в новом приложении я добавил один восстанавливаемый In-App, разблокировывающий все возможности базового приложения (учет нескольких ТС, виджеты, статистика, шинный калькулятор).

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


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

Хранение и передача данных пользователя

В программах, работающих с данными пользователя всегда стоит вопрос их хранения локально, удаленно на сервере или смешанный режим, производящий синхронизацию между устройством и сервером. Первый способ хорош полной автономностью приложения и независимостью от связи с сетью. Трафик в конце концов тоже денег стоит. Организация хранения и синхронизации на сервере помимо явных преимуществ (платформо-независимость, возможность самостоятельной правки данных пользователя) добавляет кучу задач и проблем, которые не потянуть в одиночку. Как вы уже поняли, я выбрал первый способ, более простой и предсказуемый. С ним я столкнулся со следующими проблемами:
  • Удаленная отладка. Для помощи пользователю с его данными необходимо ему объяснить, как достать и отправить мне данные. С первыми релизами я добавил импорт/экспорт данных в csv файл, и сейчас при написании письма из приложения всегда автоматически прилепляю последний автобэкап.
  • Синхронизация. Со временем я добавил синхронизацию данных посредством Dropbox API. Использовать в обмене между устройствами текстовый файл и каждый раз его разбирать при синхронизации – как-то «попахивает», не так ли? Поэтому я гоняю по сети весь файл SQLite и файл настроек и просто их подменяю при наличии более свежих в облаке.


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

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

1. Отнесись к пользователю так, как хотел бы, чтобы относились к тебе


image
На картинке - пирожок.
Жена открестилась от пирожков такой странной формы и отрицает причастность к таким кулинарным произведениям.
Все картинки нарисованы самолично прям на телефоне и не всегда могут раскрыть изначальный художественный замысел.


Как давний пользователь Android телефонов, я уже заранее знаю, какие приложения могут у меня задержаться — или незаменимые или удобные и красивые (часто это совпадает).

Незаменимых приложений нет – это был удел первопроходцев в далеком 2009 году, когда ОС только обживалась и пыталась потесниться с iOS, WinMobile и Simbian. Остается два взаимодополняющих критерия – удобство и «дизайн» приложения.

2. Сообщество бета-пользователей очень ценно. Дорожите ими.


image

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

4PDA

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

Google+

Осенью 2013 Google представил возможность создания групп бета-пользователей для получения раннего доступа к предрелизным версиям программы. Я разместил ссылку на эту группу на 4PDA и количество подписчиков медленно пополняется. Честно, я этим не пользуюсь.

Тех. поддержке на заметку
Наиболее лояльные пользователи самые привередливые.


3. Не откладывать проект дольше, чем на пару дней


image

Если долго не возвращаться к проекту, он может склеить ласты. Отслеживание новых веяний в мобильном дизайне, грамотная функциональная конкуренция, тех. поддержка

4. Отвечать на письма в течении трех суток


image

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

5. Отвечать на плохие письма в течение одних суток


Тут еще важнее ответить или сразу с решением проблемы, или с планом действий – что предпринять, что пояснить. Часто бывает, что из одного письма «Нихрена ничо не работает! Что вы нагородили?» можно вытащить зацепку к проблеме, проявляющейся только в определенных условиях и у конкретного пользователя.

6. Переводите приложение на как можно больше других языков


image

После первых релизов я практически сразу добавил самостоятельный английский перевод всех строковых ресурсов на английский язык. Конечно, это был корявый результат Google-переводчика, требующий правок и вычитки. В течение последующего года я получал письма о просьбе перевести программу на их родной язык, некоторые предлагали помощь. Не особо изучая готовые предложения для совместной локализации, я изобрел свой велосипед, подробно описанный в моей статье из песочницы. Если кратко – все строки для всех возможных языков я свел в одну большую Google-таблицу, сделал ее доступной всем, разрешив правки и добавление языков. Перед релизом я просто качаю полученную таблицу, разбираю ее собственным парсером (без велосипеда не обошлось), и на выходе аккуратная папочка с ресурсами, разложенными по языкам. Небольшим разработчикам очень рекомендую дать возможность помочь вам с переводом. Более того многие пользователи будут только рады это сделать и получить программу с качественным переводом, в котором они поучаствовали.

7. Лучший тестер программы – вы сами. После вашей кошки. Потом жена.


Надо об этом помнить всегда. Очень сложно делать продукт, которым не пользуешься, не имеешь собственного опыта работы с ним. Все данные, которые были мне присланы для анализа, те к, которые особенно сложные или большие (история авто за 12 лет, 3000 записей за полгода и т.п.) поселяются на моих тестовых устройствах и при подготовке нового релиза обязательно используются. Кстати кошка действительно нашла мне одну ошибку. Приложение, оставшись в фоне, что-то предприняло (считало, считало, да и похоже, зациклилось). Android медленно, с толком, с расстановкой подъедал батарею лежащего на столе телефона. И только определенная настойчивость кошки уложить свою наглую морду поперек телефона – выдало аппарат, превратившийся в мини-печку.

Бывают после нахождения сложного интерфейсного решения показываешь жене два вида одного и того же экрана. Ответное «И в чем разница?» сразу заставляют задуматься, а тем ли ты занимался предшествующие три часа. И так всегда – без стороннего, незамыленного взгляда и мнения очень сложно потерять фокус и сбиться на пути разработке. А потому показывать свое детище нужно всем. Кто на это легкомысленно согласился.

8. Конкуренты – наше все.


Ничто не вечно под луной. Рынок программного обеспечения привлекает своей кажущейся простой выхода на него. Тысячи новых разработчиков, миллионы новых приложений все время подбадривают, не давая остановится на месте. Если не идти вперед, однозначно кто-то тебя обойдет функционально, интерфейсно, эргономически. Вариться в собственном соку могут позволить себе только те, кто верят в свои позиции. Но история развития того же Windows Phone доказывает обратное. Нужно всегда смотреть по сторонам. Что изобретают, что добавляют конкурирующие предложения. И сделать лучше, или добавить новую доселе невиданную, но исключительно полезную функцию.

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

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


Можно добавить себе седых волос – выпустив релиз с большим количеством нововведений не в мягком поэтапном режиме (где можно управлять количество обновляемых в сутки устройств – 1%, 2%, 5%, 10%...), а сразу и внезапно. Незабываемые часы общения на тонну писем вам обеспечены. Даже если вам повезет, программа будет оттестирована и выверена, однозначно вылезет очень противный баг и все вам испортит, заставляя несколько часов кряду вначале добиваться проявления этого бага, а потом его лечения.

А если нововведения не кардинальные – просто разомнетесь легким чтивом в форме вопросов и ответов. Когда некоторые вопросы стали повторяться, и я уже стал путаться в заготовленных шаблонах для ответов в почте – я создал сайт-FAQ для проекта, куда вывел все подробные инструкции и подсказки. Более того, один пользователь из Германии помог мне перевести основные статьи и на английский, и на немецкий. Побольше б таких пользователей!

Ах да, самые интересные графики и цифры я приберег напоследок.

Общий график установок первого и второго приложения.
image
image

Количество дневных установок
image
image

Снова про каннибализм
По динамике последних месяцев особенно сильно виден отток пользователей от первого приложения ко второму. Как я уже отметил, «продвинутые» пользователи уже выросли из просто учета расхода топлива, им уже этого мало. Да и моя более активная деятельность в тестировании последних бета-сборок именно на базе второго приложения (с меньшей аудиторией) не добавляет мне популярности.


Профит, который получил мой сосед за точно такие же приложения (включая 30% комиссии). Вроде тот же сосед, что и у PapaBubaDiop.
image
image

На текущий момент чистый ежемесячный доход соседа около $350-450. С текущим курсом это весьма приятная дополнение к основному заработку, который зачастую ниже. В разработку и продвижение не было вложено ни копейки, более того не использовались никакие даже бесплатные каналы для продвижения. Суммарные 500К установок, 70К активных пользователей, 4К уникальных посещения ежедневно. 400 – 1000 дневных установок.

По мере приближения приложений к идеалам, нарисованным в воспаленном воображении, все больше чешутся руки предпринять более конкретные действия:
  • Вплотную заняться аналитикой, которая сейчас используется не более как для сбора отчетов по ошибкам и статистики наиболее популярных мест приложений.
  • Опубликовать несколько обзоров в тематических блога (видеоблогах?), просмотреть отдачу.
  • Создать несколько мини-приложений на авто-темы для внутренней рекламы основных приложений.

Но это будет совсем другая история…

Дополнение


В комментариях попросили уточнить список полезных ресурсов, которыми руководствовался. Исправляю упущение:
  1. startandroid.ru — огроменный список уроков с возрастающим уровнем погружения.
  2. Asset Studio — очень удобный web инструмент для нарезки иконок, несколько ползунков — и все, папки с drawable-*** готовы.
  3. Набор Material иконок — от самого Google. Удобный предосмотр и всеобъемлющее количество.
  4. Google Material Design — структурированное представление философии материального дизайна от Google. Можно использовать как минимум как шпаргалку цветовой палитры.
  5. Udacity.com — тут можно пройти несколько бесплатных курсов по дизайну, разработке и продвижению Android приложений.

Комментарии (38)


  1. cry_san
    26.04.2016 09:51

    Профит, который получил мой сосед за точно такие же приложения

    Видимо я не в теме, что за сосед?


    1. kaftanati
      26.04.2016 09:57
      +10

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


      1. cry_san
        26.04.2016 10:48

        Интересное решение по налоговой.
        Благодарю!


  1. lem_prod
    26.04.2016 09:57

    Отличная статья, честно, очень порадовала) Сильно мотивирует, а то я больше полугода пытаюсь переучится с инженера-строителя на программиста, и время от времени кажется, что не потяну, правда уже смог устроится сисадмином) Желаю удачи в будущей разработке)


    1. kaftanati
      26.04.2016 09:59
      +1

      Начать — полдела. Найти задачу — еще четверть. А вот «закончить» как раз подчиняется Закону Парето и требует оставшихся 80% времени и усилий.


  1. Afganec
    26.04.2016 12:23

    Очень круто!
    Я Вам завидую белой завистью — вы и программист и оформитель в одном лице. Лично для меня технические специалисты, которые могут собрать вполне себе очень даже годные интерфейсы, кажутся богами))))))


  1. ordinaryUser
    26.04.2016 12:32

    Отличная статья. В данный момент также готовлю свое первое приложение в Google Play, поэтому очень актуально.


  1. uploadfor
    26.04.2016 13:33

    Отличная статья, спасибо! Одно «но» — отвечать на отрицательные отзывы необходимо не в течение суток, а немедленно. Проверено и доказано на себе.


    1. kaftanati
      26.04.2016 13:36

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


      1. almkhaj
        27.04.2016 12:44

        А как Вы боретесь с троллями? Например, пишут: «отличное приложение, все устраивает, только нет перевода на… язык», и ставят 1. А то и того хуже, просто пишут: «Г...», и 1. Как им отвечать? Или игнорировать?


        1. kaftanati
          27.04.2016 12:50

          Качеством. Я стараюсь ответить на все подобные отзывы или уточнением или предложением разобраться. Там же указываю почту для обратной связи. В 80% отписываются. Если отзыв устарел, деликатно интересуюсь, актуальна ли проблема. Часто тут же исправляют на 5 — просто некоторые забывают о поставленной 1 или 2. Удается удержать рейтинг на вполне сносном уровне — 4.6 для одного, 4.6 для второго и 4.3 для третьего приложения.

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

          По поводов отсутствия переводов — даю ссылку на общественный перевод и прошу помощи. Таким образом 17 переводов добровольных и образовалось. А с редкими троллями или неразобравшимися пользователями типа «Г..., не разобрался, сношу» ничего не поделать. Эти отзывы тоже полезны — настраивают пользователя уровень сложности программы выше дошкольного.


          1. almkhaj
            27.04.2016 12:54

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


  1. inDeepCode
    26.04.2016 13:33

    Годнота. Очень мотивирует, простых смертных программистов-одиночек. Спасибо :)


  1. liverpool67
    26.04.2016 13:38

    Тоже одиночка). Разрабатываю для iOS и Android. Все до боли знакомо).


  1. Apatic
    26.04.2016 13:42

    Отличная статья. А на каких ресурсах обучались разработке под Android?
    Если можно, с ссылками на курсы (или их названиями.


    1. kaftanati
      26.04.2016 14:13
      +1

      Вот тот самый источник, которым я пользовался. Некоторые примеры несколько устарели (времена актуальности Eclipse и версии 4.0.3 Android). Наверное следует в конце статьи дать несколько полезных ссылок на подобные источники или инструменты. Скоро добавлю.


  1. Hramovnik
    27.04.2016 08:35

    Спасибо. Прекрасная и подробная мотивационная статья с графиками и примерами.


  1. zx80
    27.04.2016 08:35

    А как вы решили вопрос с налоговой, башляете им или как?


    1. kaftanati
      27.04.2016 08:37

      Ну, насколько мне известно, сосед никак не решал вопрос с налоговой. В России скоро введут налог на продажи в Google Play (помимо их 30% комиссии) и совесть соседа будет чище. А в остальных странах (Евросоюз, США) и так есть какой-то доп. налог в районе 1-15%, автоматически собираемый Google.


      1. zx80
        27.04.2016 10:54

        А вот мне както боязно на карточку сбербанка получать, хоть и сумма в 3 раза меньше. Может знающие люди подскажут, нужно ли при доходах 100$ в следующем году заполнять 3НДФЛ?


        1. kaftanati
          27.04.2016 11:05
          +1

          Тут можно вспомнить про Неуловимого Джо, неуловимого потому как он никому не нужен. Пока что расчет именно на это, да и карточка тоже от Сбербанка.


        1. KonstantinSamsonov
          27.04.2016 11:52
          +1

          Зарегистрировать ИП и платить 6% с дохода или 15% с дохода минус расходы за год
          Не регистрироваться ИП 13% НДФЛ с суммы за год взять банковскую выписку желательно с отдельного счёта и справку об источнике средств.


          1. kaftanati
            27.04.2016 11:58

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


          1. Apatic
            27.04.2016 12:40
            +2

            Ага. И платить заодно страховые взносы в ПФР в размере около 20к ежегодно (не берем в расчет стоимость всяких 1С, ЭЦП и прочего, считаем, что все декларации в налоговую возим самостоятельно и заполняем ручками).
            При доходах в 100 баксов — самое то.


      1. subprogram
        27.04.2016 23:12

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


  1. kenrube
    27.04.2016 12:46

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

    Не подскажете, что за библиотека? Выглядит заманчиво


    1. kaftanati
      27.04.2016 12:53
      +1

      С удовольствием подскажу — MPAndroidChart


      1. kenrube
        27.04.2016 13:09

        Благодарю


  1. S_unk
    27.04.2016 16:05

    Хорошая статья! :) Вы в ней написали что проект стал приносить доход больший чем основная работа… а можно поинтересоваться, основная работа это работа программиста? И в каком городе? А то вот например Казанский программист в месяц срубает знатно меньше чем Московский, говорю как прогер из Казани =)


    1. kaftanati
      27.04.2016 16:08

      Ростовская область. Московскими зарплатами здесь не пахнет, впрочем как и суетой, и пробками :) Инженер оборонного предприятия (конструктор/программист/испытатель).


  1. Mixim333
    27.04.2016 18:50

    Сколько ни общаюсь со знакомыми коллегами-программистами, которые занимаются одновременно разработкой и под iOS и под Android, вечно слышу от них что-то вроде: «Какой же Android костыльный! Вот в iOS я могу без лишних заморочек сделать то-то то-то, а в Android для этого мне понадобиться накрутить кучу костылей!». Как понял, Вы не занимались разработкой под iOS, но все же подскажите, действительно ли «Android изобилует костылями» и «не логичной архитектурой системы»?

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


    1. kaftanati
      27.04.2016 20:23

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

          compile files('libs/dropbox-sync-sdk-android.jar')
      
          compile 'com.android.support:support-v4:23.3.0'
          compile 'com.android.support:appcompat-v7:23.3.0'
          compile 'com.android.support:cardview-v7:23.3.0'
          compile 'com.android.support:design:23.3.0'
      
          compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar'
          compile 'com.github.woxthebox:draglistview:1.2.3'
          compile 'com.github.PhilJay:MPAndroidChart:v2.2.2'
      
          compile 'com.google.android.gms:play-services-analytics:8.4.0'
      


      Я не использую никакие модели или архитектурные шаблоны (MVP, MVVP, M**), не стремлюсь использовать по первому чиху сторонние библиотеки, если можно использовать сторонние средства. Может быть потому, что я не лезу в глубокие дебри увязки кода NDK, не верстаю с помощью Anko, мне и не приходится подпирать свой код костылями и сбоку прикручивать педали? На моем уровне использования средств разработки Android, мне почти всегда хватает стандартных возможностей.

      Вот Yoto лучше разбирается в подводных камнях и даже делится своими знаниями.


  1. subprogram
    27.04.2016 19:56

    По поводу перевода приложения на другие языки — существуют различные сервисы, позволяющие коллективно переводить ресурсы приложений.
    Могу поделиться опытом работы с transcommu.yasesprox.com Там есть возможность интегрировать их библиотеку в приложение, т.о. пользователи, желающие помочь с переводом могут это сделать прямо с телефона. Из минусов — приходится разгребать очень много шлака от пользователей, которые не понимают для чего это надо (пишут везде «hello», «english» и т.п. белиберду).
    Но, если повезет, найдутся пользователи, которые вам бесплатно полностью переведут приложение на какой-нибудь язык. И при обновлении будут поддерживать перевод в актуальном состоянии :)


    1. kaftanati
      27.04.2016 20:10

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

      Про transcommu знаю — сам помогал с переводом кому-то. Но мне, как разработчику, не понравилось — нет того удобства и простора таблицы. Иногда были случаи, когда перевод не завершили (и сейчас есть такие языки). В таком случае я просто сам доперевожу гугл-переводчиком ресурсы. Чуть позже уже пользователи, чье чувство прекрасного было оскорблено, подправляют перевод.

      А сейчас принцип простой:
      Работает? — Да!
      Работает хорошо? — Да!
      Тогда не трогай!


      1. subprogram
        27.04.2016 22:56

        Ну, это я к тому, что не у всех разработчиков есть время для изобретения своего велосипеда ;)


        1. kaftanati
          28.04.2016 08:49

          Именно потому я и выложил все на Gihub. Почему-то в предыдущем комментарии не сработали ссылки. А вот тут статья из песочницы.


    1. kenrube
      29.04.2016 05:15

      Есть еще oneskyapp.com. Возможности примерно те же: коллективный перевод + возможность скачать итоговый результат в разных форматах, в т.ч. strings.xml. Можно получить и профессиональный перевод от авторов сервиса, но уже платно, от 10 центов за слово


  1. kaftanati
    27.04.2016 20:10

    -