Team Lead (Android)/Руководитель мобильной разработки
Опыт работы 22 года 5 месяцев
В активном поиске новой работы
Опыт работы
- Hoff Tech Android tech lead
- Nexign Android team lead
- e-Legion Программист Android
- Argus-Spectr Руководитель проекта, C# программист
Hoff Tech Android tech lead
Август 2021 — настоящее вреся (2 года 6 мес.)
Москва, Hoff Tech
Отвечаю за Android разработку в отделе. Принимаю участие во всех этапах разработки от аналитики до сопровождения.
1. Планшет продавца
Основной инструмент продаж продавца розничного магазина.
Позволяет:
- Осуществлять поиск товара, работа с каталогом, расширенный поиск
- Формировать корзину, работать с резервами/остатками, подбирать аналоги и обязательные товары
- Оформлять заказ и добавлять к заказу дополнительные услуги (доставка, сборка…)
- Создавать пользователей и регистрировать их в программе лояльности
- Оплачивать заказы или по ссылке, или по SBP
- Прерывать(сохранять) и возобновлять консультацию если покупатель вернулся
- Выполнять поиск покупателя в системе лояльности и привязывать заказ к покупателю для начисления/списания бонусов
Достижения на проекте
- решил проблему “бутылочного горлышка”, раньше таким местом была android разработка, теперь нет
- спланировал и выполнил переезд проекта от подрядчика в in-house команду, теперь проект развивается без участия подрядчика
- настроил GitLab для сборки и публикации релизов
- задокументировал и внедрил регламенты разработки
- значительно повысил скорость разработки
- код стал проще, порог вхождения в проект снизился
- разработчики стали попадать в заявленные сроки, повысилась точность оценки работ
- внедрил планирование релизов в Jira и интегрировал с GitLab
- организовал работу с крешами, поднял Crash-free с ~60% до 99.6%
- внедрил и настроил запуск UI тестов, все новые доработки обязательно покрываются UI тестами
- убедил коллег нанять тестировщика и помог в найме
- теперь постановки(ТЗ) аналитиками вместо Jira оформляются в Confluence
- все постановки проходят ревью и согласование с разработчиками
- декомпозицией и оценкой трудозатрат занимаются разработчики
- уменьшил техническое отставание проекта от современных тенденций
- внедрил библиотеку Tinker для применения хотфиксов без переустановки приложения
2. Ktor микросервис для отправки PUSH уведомлений
Вспомогательный сервис для отправки PUSH команд на планшет по разным критериям фильтрации (адресно, ну группу, широковещательно)
Достижения на проекте
- изучил новое направление разработки
- адаптировал систему деплоя C# микросервисов для микросервиса написанного на Kotlin
- выполнил все требования предъявляемые к C# микросервисам (health check, логирование, мониторинг)
- внедрил автоматическое документирование API с помощью Swagger UI
- внедрил ORM Exposed для выполнения запросов к БД PostgreSQL
3. Ktor микросервис для хранения релизов и патчей
Вспомогательный сервис для хранения apk файлов релизов и патчей.
Для организации тестирования и деплоя релизов в магазины необходимо было организовать систему хранения apk файлов. Также в проект планшета была внедрена библиотека позволяющая применять хотфикс приложения без переустановки. Для доставки таких патчей тоже нужен был отдельный сервис.
Достижения на проекте
- научил коллегу разрабатывать микросервисы на Kotlin
- помог внедрить DI и разделение по слоям (подобие архитектуры) для покрытия кода тестами
- внедрили unit тесты и настроили их запуск
- переписал систему сборки в GitLab для сохранения APK файлов в новый сервис
4. Платформа для сборщиков мебели
Платформа включает в себя мобильное приложение Android (для сборщика на адресе у клиента), а также веб-приложение (веб-кабинет) для координаторов исполнителей услуг и сотрудников Hoff.
На проекте выполняю роль тех. лида по трем направлениям:
- разработка двух микросервисов на C#
- разработка Web портала
- разработка Android приложения
Обязанности:
- формирую регламенты разработки и контролирую их соблюдение
- участвую в ревью постановок
- выполняю настройку инфраструктуры GitLab
- выполняю ревю кода Android приложения
- выполняю релизы (продвижение по релизному циклу dev -> stage -> prod)
Достижения на проекте
- задокументировал и внедрил регламенты разработки
- настроил GitLab для сборки и публикации релизов
- внедрил процесс планирования релизов
- организовал общий релизный цикл по четырем компонентам
- разработка бекенда и android приложения полностью перешла в in-house команду
5. Клиентское приложение
Android приложение для покупателей (то что в Google Play)
Подключался к проекту пару раз для перевода разработки в in-house команду и нужна была помощь в разработке из-за сжатых сроков.
Достижения на проекте
- настроил GitLab для сборки и публикации релизов
- помог нанять in-house команду (трех разработчиков)
- реализовал библиотеку для генерации экранов в рантайме по описанию полученному с бекенда (что-то похожее на Server-Driven UI)
Nexign Android team lead
Август 2018 — Август 2021 (3 года)
Санкт-Петербург, Nexign
Разработка Android приложения для сотрудников точек продаж сотового оператора. Приложение позволяет регистрировать новых пользователей без использования бумажных договоров, а также позволяет обслуживать абонентов оператора.
Руковожу командой Android разработчиков от двух до четырех человек (до двух звеньев outsource команд)
Взаимодействую с заказчиком, продакт овнером, аналитиками, дизайнерами, бекенд разработчиками и QA инженерами.
Участвую в полном цикле разработки от аналитики до сопровождения.
До меня приложение несколько лет разрабатывалось на Xamarin. С моим приходом проект был полностью переписан на kotlin.
Достижения на проекте:
- значительно выросла скорость разработки
- код стал проще, порог вхождения в проект снизился
- команда стала попадать в заявленные сроки
- повысилась точность оценки работ
- улучшена стабильность приложения, crashfree 98%
- реализовано около десяти новых кейсов
- руководил двумя outsource звеньями, занимался поиском, наймом и организацией работы
- задокументировал процессы на проекте
- уменьшил техническое отставание проекта от современных тенденций
Архитектурные изменения на проекте после перехода на kotlin:
- внедрил MVP и клин архитектуру
- сделал приложение тестируемым, весь новый код обязательно покрывается unit тестами
- настроил на CI сборку проекта, запуск статических анализаторов и unit тестов
- организовал практику вливания кода через создание пул реквестов и ревью кода, как результат код не может быть влит если не прошли тесты или проверки анализатора
- внедрил UI тесты
- настроил запуск UI тестов на CI в docker контейнере
- внедрил технику тестирования State-Transition Testing
- реализовал компонентный подход для виджетов и вынес компоненты в отдельный модуль
- реализовал тестовое семпл приложение для демонстрации работы компонентов
Также принимал участие в разработке iOS приложения:
- ставил задачи outsource звену
- настроил сборку и выкладку приложения в AppStore
e-Legion Программист Android
Санкт-Петербург, www.e-legion.ru
Заказная (outsource) разработка Android приложений. Поддержка и создание с нуля.
Принимал участие в проектах:
-
Альфа-Директ — проект Альфа-Банка, который позволяет инвесторам контролировать и управлять своими финансовыми активами в режиме реального времени.
-
Tele2 — мобильное приложение для абонентов
-
Vesna — это лучший способ найти новых интересных людей рядом с собой
-
Microsoft Tech Events — официальное приложение с информацией о мероприятиях Microsoft Россия
-
Мастерская подарков — поможет вам создавать оригинальные подарки для ваших друзей на Одноклассниках
-
Yota — Мобильное приложение для абонентов Yota
Argus-Spectr Руководитель проекта, C# программист
Ноябрь 2008 — Август 2015 (6 лет 10 месяцев) Санкт-Петербург, Argus-Spectr
Руководитель проекта
1. Руководство проектом ПО “Стрелец-Мастер” и “АРМ Стрелец-Интеграл”
Обязанности:
- определение требований к ПО
- согласование списка задач на релиз
- определение срока релиза
- составление плана релиза
- декомпозиция задач
- распределение задач между разработчиками
- занесение задач в систему управления задачами Redmine
- контроль выполнения задач и сроков
- проведение промежуточных демонстраций проделанной работы
- подготовка ПО к релизу (проведение испытаний, подготовка документации)
- защита релиза/закрытие проекта
Наиболее существенные результаты:
- изменил процесс разработки, тестирования и публикации ПО (за основу взял процесс разработки браузера Firefox)
- за год выпустил две minor-ные версии ПО
- руковожу выпуском major-ной
- успешно заменил уволившегося руководителя проекта
- ввел в проект двух новых разработчиков
- сократил интервалы между релизами
- значительно уменьшил разброс по времени между ожидаемым сроком релиза и фактическим
- улучшил процесс управления задачами в Redmine
- организовал систему непрерывной интеграции (Continuous Integration) с помощью билд-сервера TeamCity
- развернул Git сервер
- обосновал и выбил время для всей команды на написание Unit тестов
- разработал инфраструктуру для возможности написания и запуска Unit тестов без наличия оборудования
- в разы поднял покрытие тестами
- для некоторых задач ввел практику исправления ошибок через написание Unit тестов
- развернул автоматическое тестирование с использованием TestComplete (запуск тестов по расписанию, по изменению кода тестов в SVN, после сбора новой альфа версии ПО в TeamCity, формирование отчета по успешным и не-успешным тестам, автоматическое закрытие или пере открытие задач в Redmine по результатам прохождения тестов)
2. Разработка ПО для прибора “ПС-И2” под Android
ПС-И2 представляет из себя пульт сегмента выполненный на базе 7’ Android планшета размещенного в специальном корпусе в котором расположены:
- аппаратные кнопки для реализации “быстрых” команд
- светодиодные индикаторы для индикации тревог, неисправностей и состояния пожарной автоматики
- звуковой элемент для звуковой индикации о нарушениях
- считыватель бесконтактных карт для авторизации в ПО
- сетевой интерфейс для доступа к среде передачи данных LonWorks.
Плата с кнопками, светодиодами, считывателем и сетевым интерфейсом присоединяются к планшету через USB порт, а взаимодействие ПО с ними происходит по интерфейсу RS232.
Программная часть представляет из себя нативное приложение написанное на C# c помощью кроссплатформенного инструмента разработки MonoDroid от компании Xamarin. Разработка велась в Microsoft Visual Studio 2010.
Бизнес логика приложения реализована на базе исходников ПО “Стрелец-Мастер”. Графический интерфейс написан с нуля и находится в одном проекте, все платформо-зависимые типы используются только в этом проекте. Для реализации ПО под iOS и Windows Phone достаточно только реализовать графический интерфейс для каждой из ОС.
Наиболее существенные результаты:
- разработал новый подход взаимодействия пользователя с пультом через графический интерфейс (домашний экран с отображением всей необходимой информации)
- успешно портировал код десктопного ПО “Стрелец-Мастер” под Android
- реализовал сетевой адаптер для взаимодействия с платой расширения по интерфейсу RS232
- реализовал кросс-платформенный механизм хранения конфигурации и событий в базе данных SQLite с использование ORM sqlite-net
- реализовал с нуля графический интерфейс
- при разработке графического участвовал в постановке задач и согласовании макетов окон с дизайнером
- реализовал “kiosk mode”
- реализовал системные настройки (яркость экрана, громкость…) так как программа запускается в режиме “kiosk mode”
- реализовал автоматическое обновление ПО без маркета для распространения релизных версий на проданных пультах и бета версий для тестовых пультов на производстве
- реализовал встроенный менеджер WI-FI
- реализовал программу-загрузчик для автоматического запуска ПО пульта, восстановления резервной копии пульта, проверки/скачивания/установки новых версий ПО пульта
- реализовал автоматическую сборку apk с помощью инструмента непрерывной интеграции Jenkins
3. Разработка ПО “Sagittarius” под Android
Комплект “Sagittarius” представляет собой запрограммированный набор радиоканальных устройств Стрелец® Управление этими приборами возможно как через пульты так и при помощи SMS команд.
ПО “Sagittarius” под Android представляет из себя нативное приложение написанное на java в Eclipse и служит для:
- отправки команд в комплект “Sagittarius” по средством SMC
- получения состояния приборов через SMS запросы
- отображения состояния разделов
- отображения состояния нескольких объектов (для каждого объекта свой номер телефона)
Наиболее существенные результаты:
- помогал разработчику в изучении API Android, Eclipse и Java
- после выпуска первого релиза подключился к разработке и реализовал поддержку нескольких объектов (до 10 объектов программное ограничение)
- произвел рефакторинг базы данных с целью обеспечения хранения конфигурации и событий по-объектно
- участвовал в тестировании ПО
4. Разработка ПО “АРМ Стрелец-Интеграл”
Реализация на базе ПО “Стрелец-Мастер” клиент-серверного ПО “АРМ Стрелец-Интеграл” которое состоит из 6 основных компонентов взаимодействующих между собой по сети:
- “Администратор ПО” для запуска серверных модулей, настройки прав доступа к ним и обслуживания БД
- “Сервер обмена” обеспечивает связи между остальными компонентами и конфигурацией системы которая хранится в БД
- “Сервер аппаратуры” создает сетевые адаптеры для доступа к физической среде LonWorks
- “Конфигуратор” для конфигурирования системы
- “АРМ оператора” для организации рабочих мест охраников
- База данных для хранения конфигурации системы и событий
Наиболее существенные результаты:
- реализовал сервер аппаратуры (Windows Service)
- реализовал сетевое взаимодействие через сервер обмена между ПО “Конфигуратор” и ПО “АРМ оператора” с сервером аппаратуры с использованием фреймворка WCF.
- реализовал сетевое взаимодействие между сервером обмена и сервером аппаратуры для чтения событий из аппаратуры и мониторинга состояния с использованием фреймворка WCF
- произвел рефакторинг кода с целью совместного использования кода в обоих проектах ПО “АРМ Стрелец-Интеграл” и ПО “Стрелец-Мастер”
- реализовал удаленную смену прошивки приборов
5. Разработка ПО “Стрелец-Мастер”
ПО предназначено для конфигурирования, мониторинга состояния и управления интегрированной системы безопасности “Стрелец-Интеграл”
Наиболее существенные результаты:
- реализовал программную прослойку позволяющую разрабатывать и тестировать ПО без наличия аппаратуры (“железа”)
- реализовал протокол конфигурирования, мониторинга и управления оборудованием системы;
- участвовал в разработке плагинов устройств;
- реализовал утилиту смены ПО(прошивки) устройств и автоматического обновления файла прошивок через интернет;
- реализовал импорт и синхронизацию файлов конфигурации ПО WirelEx Tools;
- реализовал протокол промышленной автоматики LonWorks;
- для оптимизации трафика, при конфигурировании системы, реализовал систему контроля блоков памяти контрольными суммами;
- участвовал в разработке графического интерфейса;
- реализовал протокол обмена даными с блок преобразования интерфейсов БПИ RS-И.
Навыки:
- среда исполнения .NET;
- язык программирования C#, Managed C++;
- сетевая платформа для управления аппаратурой LonWorks;
- работа в составе группы из 4 программистов;
- система управления версиями Git, Subversion;
- система отслеживания ошибок Redmine, Mantis.