Опытный iOS-разработчик с более чем 4 годами опыта в разработке мобильных приложений под платформу iOS. Участвовал в создании и развитии крупных проектов, включая приложение "Кинопоиск" для iOS и tvOS.
Мои ключевые компетенции:
Глубокие знания Swift, Objective-C, SwiftUI, UIKit.
Опыт работы с архитектурами MVVM, VIPER, MVC.
Использование современных технологий: Combine, Swift Concurrency, KMM, GraphQL.
Работа с базами данных: Core Data, SQLite.
Настройка CI/CD процессов, внедрение статического анализа кода SwiftLint и Periphery.
Опыт автоматизации с использованием скриптов на Bash и Groovy.
В ходе моей карьеры я:
Мигрировал базу данных SQLite на новую версию с преобразованием данных и структур таблиц.
Оптимизировал процессы разработки, настроив интеграцию GitLab с внутренним трекером задач.
Внедрил инструменты статического анализа кода.
Реализовал ключевые функции в высоконагруженных приложениях, улучшив пользовательский опыт и производительность.
Мне нравится работать в командах, где ценится открытость к новым идеям и постоянное развитие. Имею опыт работы по методологиям Agile в кросс-функциональных командах, активно взаимодействую с коллегами и заинтересованными сторонами для достижения общих целей.
В свободное время изучаю новые технологии и фреймворки.
Разработка мобильного приложения SMP и SDK для чата поддержки.
- Мигрировал SQLite БД на новую версию, преобразовал данные в новый формат, изменил структуры таблиц. Написал юнит-тесты для проверки изменений и миграции.
- Настроил интеграцию GitLab с внутренним трекером задач: реализовал автоматическую отправку сообщений о собранной версии приложения для тестирования в TestFlight в комментарии к задаче.
-Настроил запуск pipeline'ов из трекера и уведомления о неуспешных сборках через скрипты на Groovy.
- Внедрил статический анализ кода: настроил запуск SwiftLint в GitLab CI/CD, собрал codestyle команды, использовал фичу remote config для переиспользования линтера на нескольких проектах.
- Настроил инструмент Periphery для выявления неиспользуемого кода с выводом в формате GitLab CodeClimate.
- Добавил отображение в Merge Request процента покрытия кода тестами и визуализацию строк кода, покрытых тестами.
Работа в аутсорсинге и аутстафинге.
Проекты:
Участие в разработке приложения "Кинопоиск" для iOS и tvOS:
Работа в аутсорсинге и аутстафинге.
Проекты:
Участие в разработке приложения "Кинопоиск" для iOS и tvOS:
- Реализовывал новые экраны и функциональность приложения, занимался инфраструктурными задачами, взаимодействовал с другими командами.
- Реализовал функцию предотвращения блокировки телефона при активной загрузке контента и автоматическое выключение просмотра ТВ-канала при неактивности пользователя. Решение требовало продуманной обработки различных событий (нажатия на экран, использование пульта Apple TV, смена ориентации) для надежной работы.
- Внедрил Tuist и перенес главный таргет на новую систему сборки.
- Писал скрипты автоматизации на Bash для обновления версий Tuist с последующим созданием веток и коммитов.
- Работал с KMM и GraphQL, успешно реализовал несколько сетевых запросов.
- Разрабатывал интерфейсы для iPhone, iPad и Apple TV, используя SwiftUI, XIB и Storyboard и через код.
- Исправлял легаси-код на Objective-C.
- Реализовал фичу "Мое" для iOS и tvOS: создавал список загрузок, настроил сетевое взаимодействие, получил опыт работы с фокусом на tvOS.
- Активно использовал Combine для сетевых запросов и наблюдения за состояниями приложения.
- Внедрял фича-флаги и удаленное управление функциями через Firebase Remote Config.
- Работал с WebView, реализовал обработку действий и интеграцию с JavaScript-кодом страницы.
- Оптимизировал модуль загрузок контента, исправил ошибки, добавил новые поля в Core Data, улучшил логи загрузок, что привело к достоверной аналитике и повышению успешности загрузок.
- Работал с многопоточностью с помощью GCD и Swift Concurrency.
- Перешли на использование SPM как основного менеджера зависимостей, для старых модулей использовался CocoaPods.
- Работал по методологии Agile в командах по 10 человек с двухнедельными спринтами, активно взаимодействовал с другими командами и бизнес-юнитами.
- Перешли с Git на Arcadia (собственная VCS), использовали подход Trunk Based Development, перенес часть веток, приобрел новые знания и умения в работе с системами контроля версий.
Стек: swift, objc, SwiftUI, MVVM, VIPER, Combine, Kingfisher, Alamofire, URLSession, KMM, GraphQL, Swift Concurrency, Firebase, Remote configs, Core Data
Разработка MVP-приложения двухфакторной авторизации для геоинформационного сервиса (NDA):
Написал приложение из 4 экранов с архитектурой MVP. Главное ограничение проекта - это не использовать сторонние библиотеки.
- Верстка экранов кодом. Хранение токенов в keychain, уведомления имели возможность выбора действий и их обработки, не входя в приложение. Использовал AVFoundation для считывания QR-кодов.
- В качестве менеджера зависимостей использовался cocoapods.
Стек: AVFoundation, swift, URLSession, Swift Concurrency, Rich Notification, UserDefaults, Keychain, MVP
White Label приложение (NDA):
Внутренний проект, таргет ios 16+
Реализация пары экранов, для демонстрации концепции.
- Интерфейс и навигация полностью на SwiftUI, архитектура MVVM с добавлением концепций UDF, вью получает от модели состояние, а вью может вызвать у вью модели одну единственную функцию по обработке действий, которые определены во вью модели, больше взаимосвязей между ними нет.
Стек: swiftUI, Swift Concurrency, MVVM
GreyWebs VPN:
Работа над приложением для создания VPN соединения.
Также занимался выкладкой приложения в AppStore и отвечал на вопросы при проверке приложения и исправлял замечания.
- Внедрил Crashlytics и снизил количество сбоев приложения, увеличив показатель Crash Free с 60% до 94,7%.
- Добавил remote configs
- Переделал экраны под новый дизайн
Стек: swift, MVC, NetworkExtension, Firebase, Remote Configs
Rick and Morty pet-project:
Это учебный проект, для закрепления теоретической информации. Делал его во время прохождения курса "ios разработчик" в учебном центре Девелоники. В результате меня взяли на стажировку. Код можно найти в моем гитхабе.
Реализация приложения для просмотра информации о сериале RickAndMorty. Данные берутся по REST API из rickandmortyapi.com
Использую карту для проставления отметок мест где было запущенно приложение, сделал для того, чтобы попробовать интегрировать карты в приложение.
Стек: Storyboard, MVC, Core Location, Core Data, Google Maps, SPM
Обучался проектированию систем телекоммуникации, построению легко масштабируемых систем коммуникаций, выделению адресов, настройке роутеров и маршрутизаторов, а также администрированию рабочих мест, на базе windows и linux. В этот период написал простенькое приложение для обмена сообщениями, в качестве бекэнда использовал firebase.
Нас обучали написанию ПО, взаимодействию с операционными системами, работы с базами данных на примере MySQL. Но также нас обучали устройству Компьютера, процессора, его элементной базы. Как процессор производит вычисления и исполняет команды. Обучали проектированию плат, а также способам их изготовления. В процессе обучения я впервые познакомился с языком swift, и IDE Xcode, в тот момент как раз вышел фремворк ARKit, и я попробовал с его помощью написать простое приложение, которое в поле зрения находит специальные метки и на эту плоскость рисует трех-мерный объект.
Обучение было базовым навыкам для iOS разработки, в основами по git и xcode, также затрагивались темы про публикацию приложений. В течении всего обучения, у нас был проект. Для проекта дизайнером были нарисованы экраны в figma, которые мы реализовывали. Бекендом выступал бесплатный сайт по сериалу рик и морти. Взаимодействие с ним было через REST API. В конце обучения было готовое приложение в которм можно было посомтреть персонажей, места и серии, сериала рик и морти.