Название: Senior Desktop Engineer (Electron.js)
Компания: Ruby Labs
Местоположение: Украина / Молдова / Албания / Казахстан / Черногория / Европейский Союз / Сербия / Босния / Грузия / Удаленно
О НАС
Ruby Labs — ведущая технологическая компания, создающая и управляющая инновационными потребительскими продуктами. Мы предлагаем разнообразные возможности в сферах здравоохранения, образования и развлечений. Наши инновационные команды формируют будущее потребительских продуктов, и мы всегда ищем увлеченных специалистов, готовых присоединиться к нам. Узнайте больше о нашей истории по адресу:
О РОЛИ
В Ruby Labs мы ищем старшего инженера рабочего стола (Senior Desktop Engineer), который будет отвечать за разработку и внедрение нового кроссплатформенного настольного продукта от первого коммита до продакшена.
Это роль с высокой степенью ответственности и необычно глубокой системной составляющей. Приложение не является оберткой веб-приложения: оно в реальном времени захватывает системный аудиопоток и звук с микрофона, отображает оверлей поверх рабочего пространства пользователя, который всегда находится наверху, регистрирует глобальные сочетания клавиш и интегрируется с операционной системой на уровне, требующем нативного кода как для macOS, так и для Windows.
Наша архитектура использует Electron для приложения и пользовательского интерфейса, с нативными модулями и вспомогательными процессами на Swift и C++, где это требуется платформой. Вы будете управлять этой границей — решая, что относится к TypeScript, что к нативному коду, и делая так, чтобы обе части работали как единый надежный продукт.
Вы также будете отвечать за всё, что происходит после сборки: подписание кода, нотаризацию, предоставление разрешений, онбординг разрешений, автообновление и отчетность о сбоях. В этом продукте это не второстепенные задачи; это значительная часть инженерной работы, и ошибки в них — причина того, что пользователи никогда не запускают приложение.
Вы будете выступать в качестве старшего технического эксперта по настольным платформам в вашей команде, устанавливая инженерные стандарты для платформы.
ОСНОВНЫЕ ОБЯЗАННОСТИ
НАСТОЛЬНОЕ ПРИЛОЖЕНИЕ И КАЧЕСТВО ИНЖЕНЕРИИ
- Полное управление архитектурой Electron — основной, рендеринговый и вспомогательные процессы, дизайн IPC, изоляция контекста, жизненный цикл процесса — и доставка основных функций в установленные сроки.
- Создание прозрачных, безрамочных оверлейных окон, всегда находящихся наверху, которые корректно ведут себя в полноэкранных режимах, на нескольких дисплеях и в конфигурациях со смешанным DPI, наряду с глобальными сочетаниями клавиш, присутствием в трее и низколатентным пользовательским интерфейсом при постоянной фоновой нагрузке.
- Разработка чистого платформенного абстракционного слоя на TypeScript, чтобы реализации для macOS и Windows оставались изолированными и независимо тестируемыми, а также написание идиоматичного Swift и C++ на нативном уровне.
- Обеспечение надежности продукта: защитная обработка нестабильных API платформы, тесты и проверки кода, бюджеты производительности, памяти и энергопотребления, а также устранение уязвимостей, выявленных в ходе проверки безопасности и пентестов, в соответствии с установленными SLA по серьезности.
ИНТЕГРАЦИЯ С НАНОЙ ПЛАТФОРМОЙ
- Создание и поддержка нативного уровня: Node addons (N-API / node-addon-api) и внешние вспомогательные процессы на Swift и C++.
- Реализация захвата системного аудиопотока в реальном времени — Core Audio process taps и ScreenCaptureKit на macOS, WASAPI loopback на Windows — включая обработку изменений устройств, согласование форматов и корректное восстановление после сбоев на уровне драйверов.
- Интеграция с API доступности (AXUIElement) на macOS и UI Automation на Windows для надежного считывания контекста приложения.
- Управление протоколом IPC и жизненным циклом между Electron и нативными вспомогательными программами, а также обеспечение работоспособности приложения при изменении платформ Apple и Microsoft.
РАСПРОСТРАНЕНИЕ, РАЗРЕШЕНИЯ И НАДЕЖНОСТЬ РЕЛИЗОВ
- Управление подписанием кода и нотаризацией на macOS — hardened runtime, разрешения, подписание вложенных бинарных файлов, профили предоставления разрешений — а также подписание Authenticode, репутация SmartScreen и ложные срабатывания антивирусов на Windows.
- Разработка потока онбординга разрешений — микрофон, системный аудиопоток, запись экрана, доступность — для поддержания высокого уровня предоставления разрешений и возможности восстановления после сбоев.
- Создание и поддержка конвейера релизов: матричные сборки CI, подписание из CI с использованием сертификатов, защищенных HSM, автообновление, поэтапное развертывание и откат.
- Управление отчетностью о сбоях и телеметрией продакшена для настольного клиента и принятие мер на основе полученных данных.
КВАЛИФИКАЦИЯ
- 6+ лет опыта разработки программного обеспечения, включая опыт работы с TypeScript/Node.js продакшн-уровня.
- 3+ года опыта создания и выпуска Electron-приложений для реальных конечных пользователей — не для внутренних инструментов или концепций.
- Практический опыт нативной разработки под macOS на Swift и/или Objective-C, с использованием AppKit и как минимум одного системного фреймворка, такого как Core Audio, AVFoundation, ScreenCaptureKit или API доступности.
- Практический опыт написания нативных Node addons (N-API / node-addon-api) или упаковки и взаимодействия с внешними нативными вспомогательными программами.
- Подтвержденный опыт работы с подписанием кода macOS, нотаризацией, разрешениями и моделью разрешений TCC — вы отлаживали отклоненную нотаризацию и знаете, как читать логи.
- Рабочее знание настольной платформы Windows: Win32 API, подписание Authenticode, а также практические аспекты репутации SmartScreen и антивирусов.
- Глубокое понимание многопроцессной архитектуры, IPC и отладки проблем, которые воспроизводятся только на машине пользователя.
ЖЕЛАТЕЛЬНО
- Конвейеры обработки аудио в реальном времени — буферизация, ресемплинг, микширование нескольких источников или потоковая передача в сервисы преобразования речи в текст.
- Подписание из CI с использованием аппаратных сертификатов (Azure Key Vault, DigiCert KeyLocker или аналогичных), а также добавление в белый список антивирусов или построение репутации SmartScreen для нового продукта.
- Инфраструктура автообновления, такая как Squirrel, electron-updater или Sparkle, включая поэтапное развертывание.
- Отчетность о сбоях и символизация для нативного кода (Crashpad, Sentry или аналогичные).
- Предыдущий опыт выпуска потребительского настольного продукта в значительных масштабах.
МЕСТОПОЛОЖЕНИЕ
Ruby Labs работает в зоне CET (Центральноевропейское время). Кандидаты из любой страны могут подать заявку на эту должность, если они находятся в пределах примерно ± 4 часов от CET. Это обеспечивает оптимальное сотрудничество и коммуникацию в рабочее время.
ПРЕИМУЩЕСТВА
Откройте для себя преимущества работы в нашей дружной команде! Мы предлагаем:
- Удаленная рабочая среда: Наслаждайтесь свободой работать где угодно и когда угодно, способствуя здоровому балансу между работой и личной жизнью.
- Неограниченный PTO: Наслаждайтесь неограниченным оплачиваемым отпуском, чтобы восстановить силы и расставить приоритеты в своем благополучии, не считая дней.
- Оплачиваемые национальные праздники: Отмечайте и отдыхайте в национальные праздники, получая оплачиваемый выходной, чтобы расслабиться и восстановиться.
- MacBook от компании: Испытайте бесперебойную продуктивность с первоклассными Apple MacBook, предоставленными всем сотрудникам, которым они необходимы.
- Гибкий договор подряда: Откройте для себя преимущества гибкости, автономии и предпринимательских возможностей. Получите налоговые льготы, возможности для нетворкинга, сниженные обязательства по трудовому законодательству и свободу работать из любого места. Подробнее здесь:
Станьте частью нашей быстрорастущей команды и воспользуйтесь этой прекрасной возможностью для личного и профессионального роста!
ПРОЦЕСС СОБЕСЕДОВАНИЯ
После отправки вашей заявки мы проводим тщательный обзор, который обычно занимает от 3 до 5 дней, но иногда может занять больше времени из-за большого объема полученных заявок. Если мы видим потенциальное соответствие, мы переходим к следующим шагам:
- Скрининг рекрутером (40 минут)
- Техническое интервью (60 минут)
- Финальное интервью (40 минут)
ЖИЗНЬ В RUBY LABS
В Ruby Labs мы движемся быстро, стремимся к высокому и ожидаем того же от нашей команды. Мы здесь не для того, чтобы играть в мелкие игры — мы здесь, чтобы строить, расти и побеждать. Это означает, что мы ищем людей амбициозных, целеустремленных и готовых выкладываться на полную каждый день.
Это место для людей, которые преуспевают под давлением, принимают вызовы и видят возможности в каждом препятствии. Если вы жаждете достижений, мотивированы влиянием и хотите расти со скоростью ваших собственных амбиций, Ruby Labs предлагает платформу, чтобы это произошло.
Здесь усилия вознаграждаются. Мы признаем тех, кто идет ва-банк и добивается результатов, и создаем пространство для людей, которые хотят большего — большей ответственности, большего роста и большего успеха.