Java/Kotlin Internal Tools Developer
Planner 5D ищет Java/Kotlin разработчика внутренних инструментов. Удаленная позиция. Тбилиси / Белград / Лиссабон / Мадрид / Рига / Таллин / Валенсия / Ереван Мы ищем
Компания: Planner 5D
Тип занятости: FULL_TIME
Тбилиси / Белград / Лиссабон / Мадрид / Рига / Таллин / Валенсия / Ереван Мы ищем инженера Java/Kotlin, который будет разрабатывать инструменты и конвейеры, связанные с ИИ, рендерингом, конвертацией данных и смежными областями.
Наш технологический стек:
- Языки: Kotlin, Python
- Основная разработка: Kotlin/JVM, Java, coroutines, serialization, reflection, dependency injection с Dagger
- Рабочие процессы 3D и рендеринга: скриптинг на Python для Blender, обработка glTF, конвертация 3D-моделей, инструменты для работы с геометрией/математикой, конвейеры подготовки сцен и ассетов
- Данные и хранилища: MongoDB, SQLite, FlatBuffers
- Инфраструктура и наблюдаемость: Prometheus metrics, Sentry, CI/CD, Git, Git LFS, внутренний мониторинг и логирование
Обязанности:
- Разработка и поддержка бэкенд-инструментов, консольных приложений, утилит и конвейеров автоматизации на базе Kotlin/JVM;
- Разработка и поддержка конвейеров рендеринга на базе Python для Blender, включая обработку сцен, автоматизацию и рабочие процессы производственного рендеринга;
- Работа над компонентами платформы для подготовки каталогов, запуска конвейеров обработки, конвертации 3D-моделей и поддержки внутренних производственных рабочих процессов;
- Создание и поддержка инструментов, связанных с обработкой 3D-контента, геометрией, подготовкой сцен, генерацией стен, конвертацией моделей и другими математически сложными задачами;
- Исследование и оценка текущих и будущих технологий, связанных с 3D, рендерингом, медиаформатами, обработкой данных и автоматизацией производства;
- Написание поддерживаемого, высокопроизводительного и качественного кода с использованием лучших практик, принципов SOLID, автоматизированных тестов, ревью кода и чистой архитектуры.
Требуемые знания:
- Опыт работы с Java и/или Kotlin на JVM;
- Практический опыт работы с Python, готовность глубоко работать с конвейерами рендеринга на базе Python для Blender;
- Хорошее понимание экосистемы JVM: Gradle, управление зависимостями, модульная структура кода, отладка, профилирование, логирование и оптимизация производительности;
- Уверенное знание SQL (SQLite, MySQL, PostgreSQL);
- Хорошее понимание объектно-ориентированного программирования, принципов SOLID, чистой архитектуры и проектирования поддерживаемого кода;
- Способность работать с математически сложными, ресурсоемкими или алгоритмическими задачами и преобразовывать их в стабильные производственные решения;
- Умение писать чистый, надежный, высокопроизводительный код и покрывать критическую логику тестами;
- Знание Linux, распространенных инструментов и экосистемы Linux;
- Свободное владение английским языком.
Желательно:
- Опыт работы с языками Python, C / C++;
- Опыт работы с популярными библиотеками, такими как Spring, Dagger, JUnit, Apache Commons;
- Понимание 2D / 3D технологий и программного обеспечения (например, OpenGL, WebGL, Raytracing, Blender);
- Понимание математики, геометрии, компьютерного зрения;
- Понимание Kubernetes, Docker и смежных технологий.
Несколько примеров задач, которыми вы будете заниматься:
- Обработка данных из API, баз данных, JSON, XML и других источников;
- Преобразование ассетов (изображений, 3D-моделей, видео и т. д.) в различные форматы;
- Импорт и экспорт 2D/3D данных из форматов .dxf/.dwg/.blend и в них;
- Написание плагина для Blender для загрузки данных и предоставления дополнительной функциональности моделирования;
- Написание высокопроизводительного кода, максимально использующего CPU и GPU (с использованием параллельного, конкурентного программирования, такого как coroutines, threads, Rx, promises, futures и т. д.);
- Создание конвейеров обработки, где используется несколько потоков для максимальной загрузки CPU и выполнения различных операций обработки на нескольких потоках/coroutines/Rx/java streams/и т. д.