Описание
Мы ищем Senior Full-Stack Engineer в распределённую инженерную команду. IDT/NRS строит платформу Point of Sale, на которой работают десятки тысяч независимых розничных магазинов в США. Сейчас мы расширяем эту платформу на ресторанный сегмент.
Задачи
•Архитектура и разработка новых сервисов для ресторанов, от модели данных до API и экранов, с которыми работают сами мерчанты.
•Мерчант-ориентированные ресторанные интерфейсы: kitchen display и всё, с чем взаимодействует персонал на протяжении жизни заказа.
•Расширение и укрепление существующих продуктовых сервисов без их дестабилизации.
•Корректность при конкурентном доступе: транзакционная целостность, уровни изоляции, идемпотентность, race conditions, повторные попытки и честные компромиссы там, где идеальные гарантии недостижимы.
•Поведение при обрыве связи: магазин продолжает обслуживать клиентов независимо от наличия сети — офлайн-способные клиенты, локальное состояние, синхронизация при восстановлении связи и примирение событий, произошедших во время разделения системы.
•Очереди и асинхронная обработка, фоновые задачи, event-driven потоки.
•Безопасный rollout релизов, затрагивающих десятки тысяч пользователей.
•Непосредственная работа с продакт-менеджерами и дизайнерами по формированию того, что строится, а не только получение готовых требований.
•Техническое направление и код-ревью для других инженеров, включая умение сказать, что дизайн неверен, и авторитет, чтобы это закрепить.
Требования
•6-8+ лет опыта создания full-stack продуктов, включая опыт в роли самого senior-специалиста на проекте.
•Глубокий опыт работы с Node.js и TypeScript на всём full-stack, с продакшн-сервисами, которые вы спроектировали и за которые до сих пор отвечаете.
•Глубокое понимание дизайна REST API и микросервисов.
•Сильные навыки работы с реляционными базами данных, Postgres или MySQL: дизайн схем, индексация, тюнинг запросов, транзакции и понимание того, что происходит под нагрузкой.
•Уверенное владение нереляционными хранилищами, такими как Redis или MongoDB, а также кэшированием и инвалидацией.
•Опыт работы с очередями и стримингом — Kinesis, Kafka, RabbitMQ, SQS, BullMQ или аналоги, включая режимы отказов: порядок, дубликаты, replay и consumer lag.
•Фронтенд-навыки, соответствующие окружению: экраны используются во время наплыва заказов, на терминале или планшете, без времени на раздумья и без допуска плохих взаимодействий. Используем Vue. Опыт с React или Angular также подходит, если включает компонентную архитектуру, управление состоянием и progressive web apps.
•Опыт работы с real-time интерфейсами на websockets, желательно socket.io. Поток заказов и kitchen display зависят от этого.
•Отличные навыки дебаггинга: умение взять незнакомый продакшн-сбой и логически дойти до корневой причины, а не угадывать.
•Части существующей платформы написаны на PHP. Эффективная работа с незнакомым кодом, с использованием AI, является частью этой работы.
•Опыт деплоя сервисов, масштабируемых горизонтально, устойчивых к падению инстанса или медленной зависимости, с автоматическим добавлением или сбросом ёмкости.
•Уверенное владение Linux, Git и CI/CD-процессами.
•Отличный письменный и устный английский. Ежедневное общение с командами в США и Израиле, часто придётся объяснять техническое решение людям, не присутствовавшим на обсуждении дизайна.
•AI first: использование AI-инструментов как основной части инженерной работы — изучение незнакомой кодовой базы за часы, а не недели, стресс-тестирование собственных решений, ускорение без снижения качества. Применение AI на всём жизненном цикле: формирование дизайна до написания кода, написание и рефакторинг, ревью своей работы, а также автоматизированные PR-ревью.
•Готовность "прыгать в омут": получив большой, сложный, незнакомый репозиторий, инстинктивно начинать его изучать. Сложность и чувствительность — повод быть внимательнее, а не ждать кого-то другого.
•Создание поддерживаемых сервисов: чёткие границы, читаемый код, тесты, которые оправдывают себя, наблюдаемость, делающая продакшн понятным. Следующий инженер должен быть способен работать с построенным вами без экскурсовода.
•Мышление о человеке по другую сторону экрана: во время наплыва заказов запутанный экран или лишнее касание — не косметическая проблема, а более медленная работа и худшая смена для персонала.
•Готовность идти до конца в решении проблемы, включая те части, которые никто не поручал, гордость за свою работу и забота о том, как она отражается на мерчанте по ту сторону экрана.
Условия
•Современный офис с бесплатной парковкой в самом центре Минска.
•Возможность удалённой/гибридной работы!
•Интересная и сложная работа с талантливыми людьми вокруг.
•Конкурентная зарплата и возможности роста.
•Действительно хорошее железо.
•26 дней отпуска и 5 полностью оплачиваемых дней больничного без необходимости предоставления больничного листа в год.
•Компенсация профессионального обучения, семинаров и конференций.
•Компенсация спортивных активностей.
•Медицинская страховка и компенсация занятий спортом.
•Реферальная программа — вознаграждение за помощь в привлечении талантливых людей в команду.
•Корпоративные занятия английским языком для профессионального роста.