Backend Software Engineer
Urban Connect
Цюрих, Швейцария
FULL_TIME
Мы ищем инженера-программиста для усиления нашей бэкенд-команды. Мы быстрые, эффективные, сфокусированные, интенсивные и веселые — все что угодно, только не бюрократичные или скучные. Работая с нами, вы сможете научиться создавать финансовые и транспортные сервисы, а также реализовывать интеграции с аппаратным обеспечением.
Вот чем мы занимаемся:
- Мы разрабатываем и поддерживаем полноценные системы бронирования для электровелосипедов, электромобилей, общественного транспорта, парковок, зарядных станций и т.д.
- Мы выпускаем виртуальные банковские карты, управляем распределением бюджетов и обрабатываем финансовые транзакции для наших клиентов, следя за тем, чтобы цифры сходились в конце месяца, квартала и года.
- Мы интегрируем BLE-замки и работаем с телеметрией в реальном времени и GPS-треками от наших транспортных средств.
- Мы тесно сотрудничаем с нашими партнерами из различных брендов (Riese & Müller, Polestar, Tesla, Mercedes, Stromer, SoFlow и др.), чтобы обеспечить наилучшие впечатления от бронирования и совместного использования.
Вот несколько конкретных вещей, которые мы недавно реализовали, чтобы дать вам представление о том, над чем вы будете работать каждый день:
- Завершили сквозную интеграцию с зарядными станциями Zaptec по протоколу OCPP и реализовали систему управления зарядкой в нашем бэкенде.
- Добавили интеграцию по Bluetooth Low Energy (BLE) с замками I-Lock-It.
- Реализовали собственную систему распознавания номерных знаков для обнаружения приближающихся транспортных средств и автоматического открытия шлагбаумов на парковках.
- Развернули интеграцию с автомобилями Tesla по протоколу BLE, обратно спроектированную на основе их официальной, но недокументированной реализации на Go.
- Ввели пакетное списание средств за бронирования парковок для снижения фиксированных расходов на транзакционные сборы при небольших платежах.
Вот некоторые задачи, которые ждут нас впереди и запланированы на выполнение в этом году:
- Разработка комплексной системы управления общественными зарядными станциями с поддержкой роуминга.
- Внедрение системы удаленного мониторинга для наших IoT-устройств, размещенных в полевых условиях.
- Добавление базовых функций управления парком транспортных средств в нашу бэкенд-систему.
Если это звучит как то, в чем вы хотели бы участвовать, вот требования и немного контекста к ним:
- Не менее 4-5 лет опыта работы с Ruby и Ruby-on-Rails. Наше основное сервисное ядро — это HTTP API на основе Rails с фоновыми задачами, обрабатываемыми Sidekiq, полностью покрытое тестами RSpec и развернутое в виде Docker-контейнеров с помощью Nomad. Нашими клиентами являются наши собственные мобильные приложения (iOS, Android) и веб-приложения, созданные на React. Вы должны чувствовать себя уверенно в этой среде.
- Некоторый опыт работы с другими языками программирования. Это может быть Python, Node.js, Elixir, Go, Rust, Java, Kotlin — что угодно. Важно то, что вы создавали реальные системы более чем на одном языке. Часть наших сервисов написана на Go, в то время как задачи, связанные с отчетностью и машинным обучением, решаются на Python.
- Хорошее понимание баз данных. Вы должны разбираться в SQL (в нашем случае PostgreSQL) и иметь некоторый опыт работы с другими системами хранения данных, такими как Redis, S3 или Elasticsearch. Вам не обязательно быть инженером баз данных, но вы должны понимать, как данные ведут себя в реальных системах.
- Хорошее понимание инфраструктуры и готовность узнавать больше. У нас нет отдельной команды SRE или DevOps, и мы не разделяем разработку и эксплуатацию. Это означает, что вы будете вовлечены в то, как все строится, развертывается и работает в продакшене. У вас должно быть базовое понимание CI/CD, того, как выглядит Dockerfile, как оркеструются контейнеры и как обратный прокси-сервер завершает TLS-соединения. Вам не обязательно быть экспертом, но эти вещи не должны быть вам в новинку.
- Готовность много и с умом работать, а также учиться вне своей непосредственной зоны ответственности. Вы будете создавать функции, развертывать их и обеспечивать их поддержку. Команда компактная и географически распределенная, а бизнес конкурентный. К каждому относятся как к взрослому человеку, и у всех есть возможность взять ответственность за части системы и довести их до продакшена. Обязанности со временем растут, как и признание и вознаграждение.