Kotlin/Java Internal Tools Developer
Команда: Infrastructure
Местоположение: Тбилиси
Тип занятости: Контракт
О нас:
Planner 5D — это глобальный центр дизайна интерьера, объединяющий более 90 миллионов пользователей в 230 регионах нашей планеты (да, у нас есть 2 пользователя, подключающихся из Антарктики каждый месяц!). Наша платформа упрощает процесс ремонта дома от концепции до реализации, и этот процесс никогда не был проще благодаря нашему передовому программному обеспечению. Вам не нужно быть профессиональным дизайнером, чтобы улучшить свой дом или рабочее место. Мы стремимся оптимизировать процесс дизайна, делая настройку домов мечты доступной для всех.
Наше кроссплатформенное присутствие охватывает Web, iOS, Android, Windows и MacOS, обеспечивая бесшовную синхронизацию для наших пользователей. Planner 5D — это больше, чем просто программное обеспечение; это живое сообщество увлеченных и ориентированных на продукт профессионалов. Наша команда, имеющая разнообразный опыт, сотрудничает в разных часовых поясах, движимая общей страстью к революции на рынке дизайна интерьера.
Мы постоянно ищем единомышленников, стремящихся взять на себя ответственность и стимулировать инновации в нашем расширяющемся наборе инструментов. Присоединяйтесь к нам в формировании будущего дизайна интерьера.
Мы ищем Kotlin/Java инженера, который будет разрабатывать инструменты и конвейеры, связанные с ИИ, рендерингом, преобразованием данных и смежными областями.
Наш технологический стек:
- Языки: Kotlin, Python
- Основная разработка: Kotlin/JVM, Java, корутины, сериализация, рефлексия, внедрение зависимостей с Dagger
- 3D и рабочие процессы рендеринга: Python-скриптинг Blender, обработка glTF, преобразование 3D-моделей, инструментарий, связанный с геометрией/математикой, конвейеры подготовки сцен и ассетов
- Данные и хранилище: MongoDB, SQLite, FlatBuffers
- Инфраструктура и наблюдаемость: метрики Prometheus, Sentry, CI/CD, Git, Git LFS, внутренняя система мониторинга и логирования
Обязанности:
- Разработка и поддержка бэкенд-инструментов, консольных приложений, утилит и автоматизированных конвейеров на основе Kotlin/JVM;
- Разработка и поддержка конвейеров рендеринга Blender на основе Python, включая обработку сцен, автоматизацию и рабочие процессы производственного рендеринга;
- Работа над компонентами платформы для подготовки каталогов, запуска конвейеров обработки, преобразования 3D-моделей и поддержки внутренних производственных рабочих процессов;
- Создание и поддержка инструментария, связанного с обработкой 3D-контента, геометрией, подготовкой сцен, генерацией стен, преобразованием моделей и другими математически сложными задачами;
- Исследование и оценка текущих и будущих технологий, связанных с 3D, рендерингом, медиаформатами, обработкой данных и автоматизацией производства;
- Написание поддерживаемого, высокопроизводительного и качественного кода с использованием лучших практик, принципов SOLID, автоматизированных тестов, ревью кода и чистой архитектуры.
Требуемые знания:
- Богатый опыт работы с Java и/или Kotlin на JVM;
- Практический опыт работы с Python, готовность глубоко работать с конвейерами рендеринга Blender на основе Python;
- Хорошее понимание экосистемы 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 (с использованием параллельного, конкурентного программирования, такого как корутины, потоки, Rx, promises, futures и т. д.);
- Создание конвейеров обработки, где несколько потоков используются для максимальной загрузки CPU и выполнения большого количества различных операций обработки на нескольких потоках/корутинах/Rx/java streams/и т. д.
Что мы предлагаем:
- Отличная рабочая атмосфера, сочетающая свободу и ответственность
- Наша команда состоит из дружелюбных и увлеченных энтузиастов, готовых помочь и поделиться своими знаниями
- Мы верим в баланс между работой и личной жизнью, поэтому вы будете получать около 30+ дней оплачиваемого отпуска в год
- Корпоративное компьютерное оборудование по запросу
- Образовательные курсы для членов нашей команды, и мы готовы выделить средства на ваши расходы на обучение
- Уроки английского языка на нашей корпоративной платформе
- Офлайн-мероприятия компании в Литве и онлайн-тимбилдинг
- Неограниченные бесплатные подписки на Planner5D