описание
Нам нужен опытный разработчик, чтобы усилить команду разработки новых продуктов для нашей видео-стриминговой платформы Facecast для VoD, онлайн-стриминга с задержкой (HLS) и в рилтайме (WebRTC).
Основной стек продукта:
• JavaScript/TypeScript;
• React, Redux, Redux RTK;
• WebRTC/LiveKit;
• WebSocket/gRPC;
• ViteJS.
Обязательно наличие опыта разработки медийной части веб-приложений на базе WebRTC с использованием LiveKit, Janus, mediasoup, Jitsi или аналогичной SFU-платформы, понимание как масштабировать видеоконференцию на 100+ участников. Сделать кнопку «Присоединиться к звонку» к такому опыту не относится.
Конкретно по WebRTC нужно знать:
• различия между Mesh, SFU, MCU и опытом работы хотя бы с одним из подходов (предпочтительно SFU);
• Simulcast/SVC, уметь объяснить разницу, плюсы и ограничения;
• управление потоками: MediaStream/ MediaStreamTrack/replaceTrack, переключение устройств (камеры, микрофоны);
• getUserMedia, screen sharing (getDisplayMedia), обработку ошибок и edge-cases;
• принципы signaling, ICE, STUN/TURN, кандидатов, реконнекта;
• диагностику WebRTC-проблем (bitrate, jitter, packet loss, codec negotiation).
Что требуется:
• знать бо́льшую часть нашего стека;
• уметь писать с фреймворками и без, на чистых JS/TS;
• уметь работать с медиа в браузере;
• плюсом будет, если можете читать код бэкенда, он у нас на Go;
• знать паттерны проектирования, принципы SOLID и ООП, умение применять эти принципы и паттерны для отделения логики приложения от визуализации состояний в React;
• иметь реальный опыт коммерческой разработки с несколькими фреймворками, включая React, последние несколько лет вы работали ведущим разработчиком не на фрилансе;
• глубокое понимание базовых классов и возможностей ES6;
• опыт использования Redux Toolkit или аналогом для управления состоянием приложения;
• хорошо бы знать как устроен бэкенд, понимать как работают реляционные и KV БД;
• базовые знания Linux и CI/CD-инструментов: git, Docker, Docker Compose, Gitlab CI/CD;
• ответственность, организованность и умение работать в команде.
развивать и поддерживать продукты;
проектировать архитектуру и реализацию, защищать свои решения;
организовать разработку, тестирование и поддержку созданного;
писать читаемый и легко поддерживаемый код;
декомпозировать и приоритизировать задачи;
проводить кодревью;
работать с техдолгом;
делиться знаниями.
условия
вы будете частью команды и, вместе с тем, мы постараемся выделить в вашу личную разработку конкретные продукты;
аккредитованная Минцифры, 10 лет успешно работающая продуктовая айти-компания;
пишем для себя, не аутсорсим;
удалёнка, при желании можно работать в офисе в Москве;
зарплата, размер которой зависит от знаний и опыта;
здоровые отношения внутри команды;
удобный график работы, и совам и жаворонкам будет комфортно.