Этот текст написал читатель Т—Ж. Если вы тоже хотите поразмышлять о чем-то вслух и открыть свою дискуссию, заполните эту форму.

Я сделал собственное приложение для контроля за финансами.

Лет десять назад я, как и большинство жителей России, пользовался исключительно наличными. Позже появилась зарплатная карта в том самом банке. Вопросов, на что уходят деньги и сколько их у меня вообще, не возникало, так как денег в виде сбережений особо и не было ¯\_(ツ)_/¯

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

Первые попытки ведения бюджета

Уже не помню, что именно заставило меня начать учитывать траты. Я пользовался парой мобильных приложений по несколько месяцев с разницей в пару лет. Забрасывал их оттого, что не понимал, зачем я трачу на это время, или потому что терял данные при смене телефона или сбросе к заводским настройкам. Спустя некоторое время я снова пытался начать вести учет и пробовал разные приложения. Но то ли лень, то ли их недостатки, а может, и всё вместе мешало появлению привычки записывать траты.

Что мне не нравилось в мобильных приложениях по ведению бюджета:

  1. Обязательная регистрация. Этого никогда не понимал!
  2. Требование дать доступ к конфиденциальной информации смартфона — контактам, файлам, системным настройкам. Особенно актуально для уже устаревших версий Андроида, где приложения запрашивали сразу все необходимые разрешения при установке.
  3. Неприятные нюансы вроде поддержки только одной валюты или наличия рекламы.
  4. Непонятно, как и кем используются мои данные и что вообще с безопасностью удаленного хранения финансовой информации.

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

Таблица в «Экселе»: плюсы, минусы, подводные камни

Возвращаться к мобильным приложениям я не хотел, так как помнил, какие с ними были проблемы. Делать свое веб-приложение — тогда я зарабатывал на жизнь именно этим — было лень. К тому же не хотелось зависеть от наличия интернета и тратить время и деньги на поддержку сервера. И тут на помощь пришел старый добрый «Эксель».

Преимуществ у электронных таблиц масса:

  1. Независимость от платформы. Хочешь — фиксируй траты на телефоне с Андроидом, а хочешь — анализируй сводку на Макбуке или традиционном компьютере с Виндоус.
  2. Функциональность ограничена только фантазией.
  3. Формулы либо элементарны, либо хорошо задокументированы.
  4. Абсолютно бесплатно!

Забегая вперед, скажу, что таблицей я пользовался два года. За все это время структура и функциональность как добавлялись, так и удалялись за ненадобностью. Например, от начала и до конца в моей таблице были списки операций и счетов, а вот лист с бюджетом за пару месяцев превратился просто в список категорий.

В итоге таблица обрела следующую структуру.

Лист 1. Операции. Ключевая часть всего учета. Одна операция — одна строка в таблице. Фиксирую сумму и дату операции, а категорию, счет и валюту выбираю из списков. Опционально можно указать название операции или магазина и заполнить еще пару полей для комментариев.

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

Звучит слишком сложно? Полностью с вами согласен! Наиболее утомительная часть всего учета — переводы между счетами — была реализована в виде пары операций: расходной с одного счета и доходной для другого.

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

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

Лист 3. Банки. Эта таблица складывает строки счетов и группирует данные по валютам. Благодаря автоматическому импорту курсов доллара и евро с сайта Центробанка РФ можно вычислить итоговую сумму в рублях, по которой строится диаграмма с долями финансов в разных банках.

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

Лист 5. Ценные бумаги. На этот лист пришлось потратить больше всего времени: нужно было свести в одном месте данные по акциям, фондам и облигациям у четырех разных брокеров в разных валютах.

Все остальные листы — это эксперименты или сводки по выборкам данных с предыдущих листов. Накопленные данные об операциях по всем счетам позволяют за несколько минут узнать, как повлияла покупка кофемашины в офис на «кофейные» расходы или сколько ушло на свадьбу.

О плюсах таблицы достаточно, теперь расскажу о недостатках. Были мелкие неприятности вроде закончившихся вкладов и категорий расходов, которые утратили актуальность, например «Свадьба». Но самой серьезной проблемой, из-за которой пришлось отказаться от использования таблиц, оказалась низкая производительность ввиду большого количества вычисляемых полей. Приходилось копировать формулы в таблице операций в каждую новую строку.

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

Как сделать свое приложение на самоизоляции

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

Я решил заменить электронную таблицу мобильным приложением на Андроиде. Во-первых, оно позволило бы импортировать мою существующую историю расходов и доходов за два года. Во-вторых, приложение не тормозило бы при таком объеме данных. Кроме того, оно не уступает по основной функциональности электронной таблице, так как в нем можно реализовать:

  1. Управление операциями: расходы, доходы, переводы. Это само собой.
  2. Поддержку категорий и счетов. Обязательно с возможностью архивации, чтобы неактуальная категория или закрытый вклад не мозолили глаза.
  3. Мультивалютность и выделение цветом.
  4. Возможность выгрузить данные обратно в электронную таблицу для бэкапа или детального анализа.

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

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

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

Я с самого начала планировал опубликовать приложение в «Гугл-плее», поэтому добавил пару подсказок для новых пользователей и перевод на английский для мира за пределами РФ. Хотя изначально приложение рассчитано на русскоязычную аудиторию.

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

Итого на онлайн-курсы по мобильной разработке я потратил три недели, на создание базовой версии приложения — четыре. И курсами, и приложением занимался по вечерам после работы, по выходным и праздникам. На публикацию приложения в «Гугл-плее» ушла ровно одна неделя и 25 $. За это время я верифицировал аккаунт разработчика, а приложение прошло проверку сотрудников «Гугла» на соответствие правилам платформы и отсутствие вреда для пользователей.

Пока проверяли документы и приложение, я не сидел сложа руки: выпустил несколько обновлений, подготовил описание и скриншоты для «Гугл-плея» и написал эту статью. Если бы знал, что формальности займут так много времени, то запустил бы процесс раньше. Зато теперь вы это знаете и не повторите мою ошибку.

План развития

Основные функции реализованы, но развитие на этом не останавливается. План следующий.

Отчеты. Все стандартно: сколько ушло денег и куда. По категориям, банкам, временным периодам.

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

Ценные бумаги. Та же проблема, что и с банками: исторически сложилось, что ИИС открыт у одного брокера, ОФЗ-н куплены у другого, а акции иностранных компаний — у третьего. Так что нужен инструмент для мониторинга суммарного баланса, роста и уменьшения стоимости. Это единственная область учета финансов, которая временно продолжит жить в моей электронной таблице. Но, так как от таблицы хочу полностью отказаться, учет ценных бумаг тоже перенесу в приложение.

Выводы

  1. В любой неожиданной и даже неприятной ситуации надо искать возможности! Из-за ограничений на перемещения, введенных по всему миру, у меня сорвались две долгожданные поездки, но взамен появилось свободное время. Мне удалось потратить его с пользой.
  2. Даже самое удобное банковское приложение не защищает клиента от ошибочных списаний его денег со счета. А если банков несколько? Для контроля нужен независимый источник информации об операциях.
  3. Главное в учете финансов — это понимание того, чего вы хотите добиться с его помощью. Единственно верного ответа нет: цели, задачи, потребности у всех разные. И здорово, что нам доступен большой выбор инструментов для решения наших задач.