Начало

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

А главным минусом я вдруг посчитал тот факт, что постоянно появляется в разработке так много интересного, что хотелось бы не только пощупать, но и куда-нибудь внедрить, а у тебя — тот самый проект, куда вклинивать что-то новое немного страшновато (все же помнят лозунг “Не трогай то, что работает”?), да и не очень нужно (менеджеры как правило не большие любители выделять время разработчиков под такие нужды). Но, минус на минус всегда дает плюс, так что я выгадал время, почитал что самое трендовое и вкусное на Android Weekly и сел писать план. Что я хочу изучить, ну или как-то так, название плану я не придумал, если честно.

Как водится, нереализованных идей в копилке — вагон и маленькая тележка, цена им бросовая (опять же, “Идея без реализации не стоит ничего!”), так что надо выбрать что поинтересней, и вперед, к покорению новых вершин! Самым заманчивым мне показался мотивационный проект для фитнеса. Идея довольно проста — ставишь себе план выполнения каких-либо упражнений (например, те же отжимания по вторникам и четвергам), указываешь дедлайн, и все — успевай только потеть и данные записывать. Круто, садимся и пишем!

Процесс

Начать конечно стоит с дизайна, решил я. Ох, эти потирания ладошек перед началом работы… Я себе представлял что-нибудь четкое, красивое, что люди увидят и сразу захотят пользоваться. Ну и по гайдам Material Design, конечно же. А так как дизайнер из меня не очень (что кстати крайне большой минус, но об этом позже), то искать вдохновение я отправился на Behance, MaterialUp и Dribble. Перебирая рисунок за рисунком, я натолкнулся на темную цветовую гамму в одном из рисованных скриншотов, мне понравилось, и я решил ее взять за основу.

Та-дам! Теперь можно и программировать!

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

Я попробовал все что хотел — Realm, RxJava, FireBase, EventBus и много других библиотек, не таких громких. С чем-то мне работать понравилось, а от чего-то я отплевался с гневом. Так, например, работать с Realm мне не понравилось абсолютно (сначала). Казалось бы, неплохая идея, но на практике все оказалось не так все радужно. Разные потоки, транзакции-коммиты, что-то было еще, постоянно выматывающее… В общем в один прекрасный момент мне все это надоело и я перевел всю базу на старый добрый ORMLite.

В поддержку Realm скажу все же, что это прекрасная библиотека, и в другом проекте я все-таки освоил его — и мне понравилось. Просто ORMLite для меня ближе и роднее, мы вместе не с 1го класса, конечно, но довольно давно. Так что, я в итоге решил — дружба дружбой, но можно и разойтись — но не сейчас.

RxJava тоже мне понравилась, к слову, хотя и немного сложновато было для начала воспринимать всю эту концепцию. На FireBase я пробовал разные штуки — начиная от базы данных (какое-то время хотел синхронизацию сделать через нее, потом вдруг на меня нашло то же чувство, что и до этого с Realm, и я все переделал на хранение данных в облаке в виде обычных файлов), заканчивая авторизацией и Google Smart Lock.

И так далее и так далее.

Экран с упражнениями. Тут многое переломалось в процессе создать идеальный UI

Потом в какой-то момент я осознал, что игры закончились и я достиг следующего этапа моего просветления — желания как можно скорее запустить проект на Google Play. Отсюда и пошли некоторые поспешные решения (например, отказ от базы данных FireBase). Я несколько поспешно стартовал и сам начал активно пользоваться приложением не на тестовом, а реальном устройстве, однако меня еще долго не отпускала тяга дополнять и исправлять. Знаете чем мне нравится быть разработчиком приложений? А в том, что если чего-то мне не хватает на телефоне, я вполне могу это создать сам. И я столкнулся с тем, что в приложении мне не хватало то одной фичи, то другой. Появилась статистика, красивые анимации местами, знаете, когда красиво так прогресс заполняется?

Не обошлось тут без RxJava и элементарной математики

Итоги

Помните, я говорил что в душе я не очень дизайнер (хотя тяга к прекрасному всегда была)? Это вылилось в то, что мои друзья на мой вопрос “Ну что, поставили?” отвечали что да, только не понятно ничего — как пользоваться-то? Услышав это я расстроился, добавил возможность подсказки на некоторых экранах. Больше жалоб не было, что ж, это довольно неплохо.

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

Скачать Fitness Challenge можно в Google Play