Описание
Ищем разработчика для создания приложений на C++ и Qt: интерфейсов управления устройствами, настройки оборудования, отображения данных и диагностики.
Мы предлагаем
•Оплата труда – 150.000 (на руки) + премия за завершенные задачи
•Оформление по ТК РФ
•График работы 5/2 с понедельника по пятницу (начало и конец рабочего дня варьируются при необходимости и обсуждается с каждым кандидатом индивидуально)
•Комфортное место работы в центре города в районе площади Химиков (удаленный формат работы, в том числе гибридный, не возможен)
•Предоставляется парковка и комплексное корпоративное питание
Обязанности
•Разрабатывать и поддерживать приложения на C++/Qt
•Создавать интерфейсы настройки, управления и отображения состояния устройств
•Реализовывать обмен данными с оборудованием и сервисами
•Обрабатывать входящие данные без блокировки пользовательского интерфейса
•Разделять интерфейс, прикладную логику и транспортный уровень
•Писать автоматические тесты, находить и исправлять ошибки. Работать через GitHub, участвовать в code review и поддерживать документацию
Обязательные требования
C++
•Практическое владение C++17 или новее: RAII, время жизни объектов, ссылки, указатели, move-семантика
•Использование STL: контейнеры, алгоритмы, умные указатели
•Понимание причин утечек памяти, висячих ссылок и ошибок многопоточного доступа
Qt
•Опыт разработки законченного приложения на Qt
•Уверенное знание QObject, signals/slots, Q_PROPERTY, механизма событий и таймеров
•Понимание владения объектами через parent–child и корректного удаления объектов
•Практический опыт Qt Widgets либо Qt Quick/QML
•Работа с model/view: модели данных, представления, обновление данных без полной пересборки интерфейса
•Понимание QThread, принадлежности объектов потокам, queued connections и ограничений работы с GUI из фонового потока
Обмен данными
•Опыт использования Qt Network или Qt SerialPort для связи с внешними системами
•Умение обрабатывать частичное получение сообщения, тайм-ауты, потерю соединения и некорректные данные
•Работа с JSON и бинарными форматами; понимание разницы между потоком байтов и отдельным сообщением протокола
Инструменты и качество
•CMake: сборка приложения, подключение модулей Qt и сторонних библиотек
•Linux на уровне среды разработки: терминал, зависимости, запуск и диагностика приложения
•Git: ветки, pull request, разрешение конфликтов
•Отладка в Qt Creator/GDB или аналогичных инструментах
•Опыт автоматических тестов; готовность использовать Qt Test, включая проверку сигналов через QSignalSpy
•Чтение технической документации на английском языке
Будет преимуществом
•Знание обоих подходов: Qt Widgets и Qt Quick/QML
•Интеграция C++ и QML, разработка собственных моделей данных
•Развёртывание Qt-приложений на Linux и Windows
•Python для автоматизации и эмуляции оборудования
•Настройка CI и использование sanitizers
•Опыт приложений для приборов, измерительных систем или промышленного оборудования
Дополнительно
В отклике расскажите о приложении на Qt, которое разрабатывали: за какие части отвечали, как организовали обмен данными и как предотвращали зависания интерфейса. Публичный код необязателен. Github резюме обязательно.