- менторил друзей, один стал Android-разработчиком; помогаю людям найти первую работу в IT;
- разрабатывал техническую документацию и схемотехнику СВЧ-приемопередатчиков на оборонном предприятии;
Опыт в ключевых технологиях:
Kotlin - 4 года;
Java - 1 год;
Android Framework/SDK - 4 года;
Kotlin Coroutines - 3 года;
RxJava - 1 год;
Jetpack Compose - 2 года;
Dagger 2, Hilt, dagger-android - 3 года;
OOP, Clean Architecture, SOLID - 4 года;
MVVM/MVI - 3 года
Git (GitHub + GitLab + Bitbucket) - 4 года;
Kotlin Multiplatform, Ktor - 0,5 года;
Unit Testing (Kaspresso) - 1 год;
Yandex MapKit - 1 год;
Нахожусь в РФ, СПб (Москва выше указана, чтобы видеть больше резюме)
Участвовал в разработке мессенджера. В команде было 10 андроид-разработчиков. Развивал, рефакторил экран сообщение и добавлял в него функционал (статусы, реакции, сохранение в БД и т.д.).
Стэк: Kotlin, Coroutines, Decompose, Flow, WebSockets, Hilt, Retrofit 2, ExoPlayer, Room
Архитектура: BLoC/MVVM
Разрабатывал приложение личного кабинета (https://play.google.com/store/apps/details?id=ru.beeline.services&hl=ru&gl=US) по гибким методологиям в составе команд 15-30 человек (бизнес-аналитики, бекенд, ios/андроид, продакт менеджер, скрам-мастер/delivery lead, ручные тестировщики)
Моими зонами ответственности были:
- профиль пользователя: рефакторил экраны блокировки номера, добавления и удаления персональных данных, выгрузки отчета об использовании тарифа за определенный период;
- главная страница: рефакторинг сторис, после чего они стали открываться быстрее на 20%;
- дизайн-система на Jetpack Compose: реализовывал диалоговые окна, плашки уведомлений, панель навигации;
- общие задачи: написание юнит-тестов, исправление багов, корректировка технического задания с продуктовыми менеджерами и аналитиками;
- оптимизация времени сборки проекта (выключение некоторых флагов gradle, удаление неиспользуемых ресурсов и файлов, ускорило сборку на 2%);
- ликвидация технического долга: миграция асинхронных операций с RxJava2 на Flow+Corotines, переписывание архитектуры с UberRIBs на MVI, мигация UI с CustomView на Jetpack Compose, DI с Dagger2 на Hilt;
Стэк: Kotlin, Compose, Flow/RxJava2, Hilt, Coroutines, Room, Kaspresso, WorkManager;
Архитектура: Uber RIBs, переписывается на MVI + Jetpack Compose;
Причина ухода: решил отдохнуть от интенсивных задач и напряженной работы и развиваться вверх
Разработка и поддержка внутреннего приложения для сотрудников. В команде было 14 человек (scrum-master, product owner, 3 QA, 1 back-end, 2 front-end, 2 iOS, 2 android-разработчика), 3 аналитика. Приложением пользуется более 270000 сотрудников, подключено более 50 внешних сервисов. С его помощью можно делать заявки (более 500 форм) на получение различных доступов и разрешений, оборудования, отчетности, имеется внутренняя соцсеть для сотрудников с сообществами и лентой новостей и встроенный голосовой помощник.
Отвечал за взаимодействие с пользователем, то есть:
- глобальный поиск (работников, сообществ, заявок, сервисов);
- экран профиля сотрудника с его контактными и корпоративными данными;
- сбор аналитики;
- отображение подсказок;
- ленту виджетов на главной странице и ленту новостей;
- темную тему и градиентный фон;
Стэк: Kotlin, Compose, Flow, Hilt, Coroutines, Room, Pagination 3.
Архитектура: MVVM, MVI, Clean, Multi-module (70+ шт)
Причина ухода: изначально обговаривался исключительно удаленный режим работы. Когда компания перестала его соблюдать, я ушел.
Разрабатывал Android-клиент системы управления складами (WMS) для терминалов и смартфонов; кастомизировал продукт соответственно требованиям различных заказчиков. В команде было 2 Android-разработчика (лид и мидл), 20 бекендеров, дизайнер, технический директор, 2 проектных менеджера, 5 ручных тестировщиков. Чем занимался:
- помогал исправлять техническое задание, чтобы оно стало понятнее и конкретнее, общаясь с руководством;
- рефакторил архитектуру с MVC на чистую архитектуру с MVVM;
- реализовывал базовые компоненты UI для упрощения кастомизации;
- реализовывал прерывание выполнения любого пользовательского сценария;
- реализовывал работу с базой данных (удаление, поиск, добавление контейнера);
- добавил возможность сканирования штрих-кода контейнера;
- внедрял голосовой ввод и звуковое оповещение, что контейнер найден;
Стэк: Java, Hilt, Retrofit 2, Java Concurrency, Butterknife, Activity/Fragment, RxJava;
Архитектура - MVC, многомодульная -> Clean Arch, MVVM, многомдульная;
Проектировал Android-приложения в scrum-командах от 6 до 20 человек, реализовывал пользовательские сценарии, исправлял баги, ревьюил код. Коллег-андроидов было от 1 до 3 (junior+ уровня)
Приложения, которые разрабатывал:
1. Система для учета заявок на ремонт вагонов для МетроВагонМаша. Отвечал в ней за:
- авторизацию пользователя (OAuth2);
- сканирование QR-кода оборудования для получения информации и технической и нормативно-справочной документации по нему;
- отображение списка заявок на ремонт, создание, назначение исполнителя и отработка заявки;
- также инициировал применить Hilt вместо Dagger для DI.
Стэк: Kotlin, Retrofit, Hilt, Navigation Component, Coroutines, MVVM, Gson.
Архитектура - Single-activity MVVM.
2. Мобильный клиент раздела "Мнения" оф. сайта ПАО "ГПН" с отзывами подрядчиков и поставщиков. Отвечал за:
- авторизацию пользователя в приложении (OAuth2);
- экраны добавления организации, добавления проекта, написания отзыва;
- работу с картами (добавление, удаление, просмотр организации);
- управление подпиской на пользователя и организацию;
- бонусную программу (получение достижений и набор и трата бонусов);
- создание заявки на сотрудничество;
Достижения: предложил использовать RecyclerView-based UI с делегированными адаптерами и успешно внедрил.
Стэк: Kotlin, Retrofit, Dagger 2, Firebase, Glide, Coroutines, Gson, Yandex maps API, Android Jetpack (Data Binding, ViewModel, LiveData, Lifecycle)
Архитектура - Single-activity MVVM
Ссылка в Google Play:
https://play.google.com/store/apps/details?id=ru.gazpromneft.mnenia
3. Android-клиент портала "Закупки" официального сайта ПАО "ГПН" - он помогал компании и ее подразделениям находить поставщиков материалов, работ, услуг, оборудования. В приложении отвечал за:
- создание профиля пользователя, авторизацию (по номеру телефона, e-mail, профилю в соц. сетях)
- экран с анимированной стопкой карточек тендеров и сопутствующей им документации (с помощью MotionLayout)
- поиск карточки тендера в базе данных с фильтрацией запроса по местоположению, стоимости, категории, заказчику, дате проведения;
- экран настройки пользовательских интересов;
- отображение ленты карточек тендеров с сортировкой и фильтрацией списков по различным признакам и добавлением в избранное;
- настройку уведомлений (push, SMS, e-mail);
- экран составления заявки поставщика;
Достижения: проектировал архитектуру, выбрал Single Activity и MVVM с шиной UI-событий для слоя отображения, полностью выбирал стэк.
Стэк: Kotlin Multiplatform, Ktor, Dagger 2, Firebase, Coil, Coroutines, Gson, Kotlin Flow, Voyager, Compose
Ссылка в Google Play: https://play.google.com/store/apps/details?id=ru.gazpromneft.tenders
Изучал основы Java (SE), ходил на лекции, делал домашние задания, готовился к экзамену Oracle Certified Associate. Экзамен успешно сдал, но отказался стажироваться (не платили).
После учебы научился решать алгоритмические задачки (easy-уровень leetcode) и читать Java-код
Изучал разработку небольших мобильных приложений на Android (developers.android, статьи с habr и medium, Github, лекции YouTube),
для компаний Кошелек, T-Systems, Electrolux, LevelOneServers и некоторых других.
Одно из таких приложений, самое крупное, отслеживало активность ребенка на экране для родительского контроля, периодически делая скриншоты экрана в фоне и отправляя информацию на удаленное устройство.
Мои приложения умели:
- ходить в SQLite (CRUD-операции);
- получать и отправлять данные на сервер по HTTP;
- загружать и рендерить фотографии (Glide);
- работать в фоне через WorkManager/Background service (скриншоты);
Стэк: Kotlin, Android SDK, Room API, Coroutines, WorkManager, Yandex MapKit