Наш клиент — ведущий поставщик технологических решений для розничной торговли, предоставляющий современные решения для точек продаж (POS) и управления операциями в магазинах ритейлерам на различных рынках. В рамках текущей инициативы по модернизации платформы они развивают клиентскую архитектуру, отказываясь от устаревшего POS-клиента на базе Java 8 Swing в пользу модульной, ориентированной на работу в офлайн-режиме, мультиплатформенной модели, поддерживающей стационарные POS-терминалы, киоски самообслуживания и устройства самосканирования в различных розничных средах.
Общий слой бизнес-логики построен с использованием Kotlin Multiplatform (KMP) и ориентирован как на JVM/Desktop, так и на Android-клиенты. Этот слой — сердце платформы: он отвечает за доменные правила, варианты использования и потоки данных для критически важных розничных операций — регистрация товаров, оформление покупки, оплата, управление клиентами и обработка акций — при этом оставаясь полностью отделенным от платформенно-специфических задач и пользовательского интерфейса. Непрерывность бизнеса за счет офлайн-работы, высокая тестируемость и производительность в реальных условиях розничной торговли являются не подлежащими обсуждению приоритетами.
Обязанности:
- Владение архитектурой: Определение контрактов репозиториев, сервисов, фасадов, DTO и мостов между Kotlin, платформенно-специфическим кодом и слоем пользовательского интерфейса VueJS/TypeScript.
- Техническая реализация: Проектирование, внедрение и поддержка общих KMP-модулей для бизнес-возможностей POS, обеспечение высокого качества, поддерживаемости и производительности кода на платформах JVM/Desktop и Android.
- Интеграция с платформой: Реализация платформенно-специфического кода для настольных и Android-платформ с использованием шаблонов expect/actual, без утечки платформенных аспектов в общую бизнес-логику.
- Реализация офлайн-режима: Создание потоков с поддержкой офлайн-режима, локальным хранением данных, кэшированием, готовностью к синхронизации и явной обработкой ошибок.
- Качество кода: Написание чистого, хорошо структурированного кода, участие в ревью и улучшение существующих модулей путем рефакторинга при необходимости.
- Тестирование: Написание автоматизированных тестов для доменных правил, вариантов использования, репозиториев, контрактов мостов и потоков на основе корутин.
- Сотрудничество: Тесная работа с frontend-инженерами, QA, владельцами продуктов и архитекторами для согласования контрактов, требований и реализации функций.
- Обмен знаниями: Поддержка коллег путем обмена знаниями и наставничества менее опытных Kotlin-разработчиков при необходимости.
- Командная работа: Соблюдение командных соглашений и процессов, а также предоставление регулярных обновлений о прогрессе, компромиссах и технических решениях.
Квалификация:
Обязательно
- 8+ лет опыта работы с Kotlin, включая принятие архитектурных решений с KMP в масштабе платформы, а не только в рамках отдельных приложений или доменных уровней.
- Глубокий опыт работы с Android на системном уровне (не только на уровне приложений).
- Значительный практический опыт в реализации KMP как минимум для двух платформ (предпочтительно Android и JVM/Desktop) и знание взаимодействия KMP-Swift/iOS (XCFramework, шаблоны expect/actual, мосты Flow — успешный кандидат должен принимать кросс-платформенные решения, с которыми смогут работать iOS-разработчики).
- Миграция Java-Kotlin/KMP в масштабе платформы.
- Архитектурное лидерство и видение — кандидат должен быть готов работать в условиях неопределенности и предлагать конкретные решения.
- Модульная архитектура продукта с точками расширения, специфичными для клиента — опыт проектирования мультиарендных или мультиклиентских продуктовых платформ имеет решающее значение.
- Передача знаний и наставничество — должен уметь обучать инженеров современным паттернам KMP и архитектурному мышлению.
- Коммуникация с высшим руководством — будет взаимодействовать с техническим руководством; должен четко излагать компромиссы и укреплять уверенность в выбранном подходе.
- Прочное понимание Clean Architecture: доменные, варианты использования, инфраструктурные и платформенные слои с инверсией зависимостей и абстракциями репозиториев.
- Практический опыт работы с Kotlin Coroutines и Flow: структурированная конкурентность, suspend API, состояния и события на основе Flow, отмена и распространение ошибок.
- Опыт работы с клиентской архитектурой offline-first или local-first: локальное хранение данных, кэширование, концепции синхронизации и обработка конфликтов.
- Знание паттернов внедрения зависимостей, предпочтительно Koin: инъекция конструктора, композиция модулей и тестовые переопределения.
- Высокая дисциплина тестирования: модульные и интеграционные тесты с использованием Kotlin Test или аналогичных инструментов, тестовые двойники и утилиты для тестирования корутин.
- Опыт интеграции сервисов в стиле REST/OpenAPI: типизированное сопоставление DTO, сериализация и надежная клиентская связь.
- Уверенное владение Gradle Kotlin DSL, модульными сборками и структурами проектов, удобными для CI.
- Эффективные коммуникативные навыки для сотрудничества с frontend-разработчиками, QA и владельцами продуктов.
Приветствуется
- Опыт работы с Compose Multiplatform.
- POS / встраиваемые системы для розничной торговли (кассы, платежные терминалы, интеграция с весами, ESL), прямой опыт работы в домене будет преимуществом.
- Опыт работы с настольными JVM-клиентами, особенно с использованием Electron sidecar или паттернов интеграции локальных сервисов.
- Понимание VueJS 3 и TypeScript для эффективного сотрудничества при проектировании контрактов мостов Kotlin-UI.
- Опыт работы с архитектурой плагинов или расширений: точки расширения, управление жизненным циклом и изоляция.
- Опыт инжиниринга производительности для чувствительных к задержкам клиентских операций (например, быстрое сканирование товаров, платежные операции).
- Опыт работы с POS, розничной торговлей, платежами, акциями или интеграцией с периферийными устройствами.
Будучи организацией, ориентированной в первую очередь на людей, мы верим, что разнообразие укрепляет наши команды и стимулирует инновации. Все решения о трудоустройстве основаны на заслугах, навыках и производительности, без дискриминации по каким-либо личным характеристикам. Это подтверждает наше стремление обеспечить инклюзивную и уважительную рабочую среду.
В Accesa вы можете
- Воспользоваться нашей комплексной программой льгот, охватывающей четыре столпа, которые, по нашему мнению, вместе поддерживают наше благополучие, включая социальное, физическое, эмоциональное благополучие, а также интеграцию работы и личной жизни.
- Физическое благополучие: Наша программа благополучия включает медицинские льготы, поддержку спортзала и индивидуальные фитнес-опции для активного образа жизни, дополненные командными мероприятиями и клубом здоровых привычек.
- Интеграция работы и личной жизни: В очень динамичных отраслях, таких как ИТ, грань между профессиональной и личной жизнью может быстро стираться. Наш индивидуальный подход дает нам гибкость в определении динамики работы и личной жизни, которая подходит нам.
- Эмоциональное благополучие: Мы верим, что для поддержания нашего общего здоровья нам необходимо инвестировать в наше психическое благополучие так же, как и в наше физическое здоровье, социальные связи или в достижение баланса между работой и личной жизнью.
- Социальное благополучие: Как растущее сообщество в гибридной среде, мы хотим оставаться на связи не только благодаря нашей превосходной повседневной работе, но и благодаря нашим увлечениям и интересам.
Accesa — ведущая технологическая компания со штаб-квартирой в Клуж-Напоке, с офисами в Ораде и 20-летним опытом преобразования бизнес-задач в возможности и рост.
Будучи компанией, основанной на ценностях, она зарекомендовала себя как предпочтительный партнер для крупных брендов в сферах розничной торговли, производства, финансов и банковского дела. Она охватывает полный цикл цифровой эволюции своих клиентов, от идеи и определения требований до разработки программного обеспечения и управляемых услуг.
Имея более 1200 ИТ-специалистов, Accesa также быстро расширяет свое присутствие, становясь предпочтительным работодателем для ИТ-профессионалов, увлеченных решением проблем с помощью технологий. Объединяясь в сильные технические команды с клиентоориентированным подходом, они помогают бизнесу расти, обеспечивая ценность для наших клиентов, партнеров, отрасли и сообщества.