blinkevblinkev

Егор Харенко

Android Team Lead · Фронтенд · Разработка ПО · Ведущий (Lead)
От 350 000 ₽ · Не ищу работу
Возраст: 33 года
Опыт работы: 9 лет и 6 месяцев
Регистрация: 30.09.2019
Последний визит: 2 месяца назад
Местоположение: Россия, Москва
Войдите, чтобы посмотреть контакты пользователя

Обо мне

Стараюсь работать так, чтобы продукт предоставлял максимально качественный сервис

Стараюсь придерживаться clean code и SOLID принципов; люблю красивый, неизбыточный код и архитектуру ПО.

Люблю добираться до сути проблем, стараюсь не применять решений, принципов работы которых я не понимаю.

Опыт работы

  • Финансовая группа
    Москва · Более 5000 сотрудников
    Android Team Lead
    Февраль 2020 — По настоящее время (1 год)

    Под моим руководством осуществлялась замена старого приложения в маркете на новое (процесс проходил с конца марта по май)
    https://play.google.com/store/apps/details?id=ru.broker.my&hl=en

    Процесс был затруднён тем, что изначально замена не планировалась, планировалось отдельное приложение, соответственно пришлось продумывать миграцию и переводить все сервисы (firebase, аналитика) на старый application id

    Занимаюсь набором новых android разработчиков (команда увеличилась с 3 до 8 человек), наладил git flow, автоматизировал ci/cd, интеграцию со slack, выстроил процесс код ревью и демо новых фичей, решаю ключевые архитектурные вопросы, пишу продуктовые фичи (если есть свободное время в спринтах)

    Senior Android developer
    Февраль 2019 — Февраль 2020 (1 год и 1 месяц)

    Поддержка и написание нового функционала для продукта Мой Брокер
    https://play.google.com/store/apps/details?id=ru.broker.my&hl=en

    Написание новой версии продукта Мой Брокер Х
    https://play.google.com/store/apps/details?id=ru.bcs.mybroker&hl=en

    Команда - 3 android разработчика.

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

    Разработка на Kotlin.
    Стек - RxJava2, Kodein, Retrofit2.

    Отдельный Gradle модуль для каждой фичи. Разные слои как отдельные Gradle модули для UI и Domain функционала.

    Single activity MVP архитектура.

    Большинство UI компонентов кастомные - через наследование или композицию. У каждого есть дефолтный стиль плюс возможность кастомизации через доп. стили.

    Есть поддержка веб-сокетов на некоторых экранах.

  • Simplifying people's lives through technology and communication
    Москва · От 10 до 100 сотрудников
    Android developer
    Июнь 2017 — Январь 2019 (1 год и 8 месяцев)

    Пишем новую версию банк-клиента для финского банка S-Mobiili на замену старой версии:

    Новая версия:
    https://play.google.com/store/apps/details?id=spankki.mobile.uusi&hl=en

    Старая версия:
    https://play.google.com/store/apps/details?id=fi.spankki&hl=en

    Бек-энд разработчики и scrum мастера из Финляндии. В Москве находится команда из 8-ми android разработчиков. Работаем на локальном гит лабе, каждый мёрдж реквест проходит код ревью. Приложение на Kotlin. Архитектура MVP (passive view) + роутеры и интеракторы. Используем DI (Dagger) начиная с фрагментов и заканчивая запросами на сервер (Retrofit). Cтараемся везде где можно использовать Rx - RxLifecycle, RxPermissions, обновления UI через RxBinding + для кастомных компонентов тоже стараемся реализовать подписки. Пишем кастомные операторы для Rx посредством Kotlin Extensions. Также используем last adapter для всех листов + android data binding. Разбиваем приложение на модули Arch, UI, Domain, Component Library.
    Приложение эволюционирует, появляются новые подходы для решения уже известных задач, поэтому также тратим время на рефакторинг и постепенно пытаемся переписывать legacy куски кода на новый лад.

    Стараемся придерживаться SOLID, поэтому все зависимости (отдельные сетевые команды, презентеры, интеракторы, валидаторы и т.д.) инжектим даггером и мокаем в тестах. Есть отдельный flavor для тестовой работы без сервера бек-энда со своим тестовым деревом зависимостей.

    Пишем unit тесты (mockito + spek) и single screen тесты (для возможности запуска и тестирования отдельно каждого экрана). Стараемся писать тесты на найденные баги перед их исправлением.

  • Москва · От 1000 до 5000 сотрудников
    Android Developer
    Сентябрь 2016 — Май 2017 (9 месяцев)

    Для двух внутренних приложений нужно было обеспечивать поддержку и добавление нового функционала. В приложениях было довольно много библиотек - сеть на Retrofit, база на Active Android, Retro Lambda, Butterknife, EventBus, Lombok, Dagger2.

    Через 3 месяца начальством было принято решение перевести два этих приложения на web-платформу (их переписал другой разработчик на Angular2). Мне же поставили задачу написать новое приложение для логистики. В ТЗ было указано, что оно должно было поддерживать работу в offline и должно быть real-time.

    Это приложение было написано на 80%, но к сожалению back-end разработчик решил покинуть компанию и работу заморозили на неопределённый срок.

    Back-end для приложения логистики писался одновременно с front-end андройда. В качестве языка на back-end'e был выбран Elixir с фреймворком Phoenix для поддержки веб-сокетов с каналами. На java была библиотека на гитхабе, сначала она показала себя хорошо, но в процессе работы выявились некоторые проблемы. Пришлось добавлять её исходники в проект и исправлять ошибки/дописывать недостающий функционал.
    Приложение выполняет синхронизацию в фоновом android сервисе в отдельном процессе. Для синхронизации использовались различные каналы на веб-сокете, через которые шла синхронизация трёх видов таблиц (неизменяемые данные, изменяемые на front-end'е данные, изменяемые данные, для которых можно проследить историю изменений)
    Для достижения real-time была выбрана база данных Realm.
    В качестве архитектуры приложения был выбран паттерн MVP.
    В этом проекте я попытался максимально следовать принципам SOLID, поэтому старался абстрагировать интерфейсами различные модули, такие как база данных, REST-библиотека, Websocket-библиотека. Для их инъекции использовал dagger2.
    Также в приложении реализована работа с кастомизированной картой Google Map и сканнер штрих-кодов используя sdk android.
    Нотификация о новых заказах и статусе синхронизации выполнялась через фоновый сервис и стандартный механизм нотификации андройд.
    Для анимации диалогов и фрагментов использовались готовые и кастомные Transitions.

  • Компания «Домашние деньги» является лидером рынка по оказанию микрофинансовых услуг населению.
    Москва · От 1000 до 5000 сотрудников
    Android Developer
    Май 2016 — Август 2016 (4 месяца)

    Поддержка двух внешних приложений компании

    Первое приложение работало очень нестабильно, были многочисленные ошибки в GUI. В течении 2 месяцев я это исправил, затем работал над улучшением дизайна (анимация листов, меню и т.д., изменение gui'шной логики где это необходимо) и добавлением нового функционала. В качестве базы данных использовался Realm.

    Для второго приложения пришлось полностью зарефакторить сетевой уровень, т.к. там для передачи данных по сети использовался однопоточный сервис + библиотека Apache, которая полностью deprecated начиная с api 23. Я заменил всё это на Retrofit2 + JavaRx. В качестве базы данных использовалась SQLite.

    На некоторых экранах внедрил Android Data Binding.

  • Независимый Android разработчик
    Москва
    Android Developer
    Январь 2016 — Апрель 2016 (4 месяца)

    Проект переноса программы написанной на Delphi на Android платформу. Программа работает через USB, общаясь с активным проприетарным устройством по внутреннему протоколу.

    В проекте активно использовалась работа с двоичными/шестнадцатеричными данными (операторы сдвигов, логические побитовые операторы, проверка на переполнение значений переменных т.к. на делфи все используемые типы в проекте были беззнаковыми). Также на делфи не использовалась многопоточность, пришлось трансформировать однопоточную логику в многопоточную: handlers, runOnUiThread, AsyncTask)

    Внутренний протокол обмена данными, который обрабатывается напрямую в приложении, чем-то похож на ethernet (начало/конец кадра, контрольные суммы, указатели длины данных и т.д.).

  • Глобальный поставщик ИТ-решений и сервисов
    Москва · От 1000 до 5000 сотрудников
    System Engeneer
    Август 2011 — Апрель 2016 (4 года и 9 месяцев)

    Работал инженером виртуализации VMware/Hyper-V, инженером Cisco.
    Писал скрипты автоматизации для настройки оборудования.

Высшее образование

  • МГТУ им. Н.Э. Баумана

    Московский государственный технический университет имени Н.Э. Баумана
    Робототехники и комплексной автоматизации; РК
    Сентябрь 2004 — Июнь 2009 (4 года и 9 месяцев)
    Инженер-программист