По этой профессии сейчас мало активных вакансий, поэтому рыночные цифры на странице ориентировочны. Путь входа, навыки и типовые ошибки от объёма выборки не зависят.
Как стать разработчиком встраиваемых систем: путь от нуля до первого оффера
Не «стань разработчиком за 3 месяца» — реальный путь входа на основе данных по 45 вакансий.
Можно ли стать разработчиком встраиваемых систем с нуля
Да. По данным SkillStat, 4% вакансий разработчика встраиваемых систем — уровня junior или стажёр. Это 2 вакансии прямо сейчас.
«С нуля» для разработчика встраиваемых систем — это без коммерческого опыта, но с платой на столе. К первому отклику нужны: C и C++ (26.7%), Linux (73.3%) — не «поставил дистрибутив», а терминал, кросс-сборка и работа с устройствами, умение читать datasheet, обмен по UART, SPI или I2C, отладка через JTAG или SWD и хотя бы одно устройство, которое ты сам довёл до работающего состояния. В вакансии в среднем 5 требований, и обманывает не длина списка, а его содержание: за строкой «C/C++, Linux» стоит железо, которое ведёт себя не так, как написано в книге.
Трудность в том, что программа перестаёт быть только программой. Код выглядит правильным, компилируется, проходит ревью — и не работает: датчик не успевает ответить за отведённое время, при включении передатчика проседает питание, прерывание пришло между двумя строчками. Такую ошибку не показывает отладчик, её показывает осциллограф. Плюс структура рынка: на одного junior приходится 10 senior-вакансии — устройство не откатишь деплоем, партию железа уже увезли к заказчику.
Как стать разработчиком встраиваемых систем: короткий план
Пять шагов от первой прошивки на живой плате до устройства, которое переживает сбой питания.
Что учить разработчику встраиваемых систем первым
Не всё сразу. Вот очерёдность по частотности в вакансиях — от самого нужного к менее срочному.
Полный список навыков с частотностью, связками и зарплатной премией — навыки разработчика встраиваемых систем →
Roadmap разработчика встраиваемых систем: от нуля до junior
Порядок опирается на частотность навыков по данным вакансий. Первые 4–5 этапов — минимум для первого оффера.
- 01C/C++ и системное программирование 26.7% вакансий
Указатели, управление памятью, bare-metal программирование, основы RTOS.
Подробнее → - 02Платформы и микроконтроллеры 20% вакансий
STM32, ESP32, Raspberry Pi, Linux Embedded — настройка периферии, HAL/BSP.
Подробнее → - 03Linux и скриптинг 73.3% вакансий
Embedded Linux, кросс-компиляция, Bash/Python для автоматизации тестирования и сборки.
Подробнее → - 04Протоколы и интерфейсы
UART, SPI, I2C, CAN, TCP/IP — конфигурация, отладка, анализаторы протоколов.
- 05CI/CD и тестирование 53.3% вакансий
GitLab CI, unit-тесты на C++ (Google Test), статический анализ, сборка в Docker.
Подробнее →
Junior-вакансии разработчика встраиваемых систем: что реально требуют работодатели
Срез построен на 45 активных вакансий.
Какие проекты сделать для портфолио
Портфолио embedded-разработчика — это не репозиторий, а устройство. Работодателю нужно увидеть, что код доехал до железа: плата, подключённая периферия, лог отладки и история ошибки, которую ты поймал не в отладчике, а на осциллографе. Веб-приложение или сервис с базой тут не считаются вообще — они не отвечают ни на один вопрос, который задаст этот работодатель.
Как оформить GitHub и резюме
- GitHub тут не единственная витрина: репозиторий с прошивкой, а рядом — фото стенда, схема подключения и видео работающего устройства
- В README: плата и микроконтроллер, распиновка, чем собрать прошивку и чем прошить. Без этого код невоспроизводим в принципе
- Логи и осциллограммы прямо в репозитории — по ним видно, что ты отлаживал железо, а не только писал код
- Скрипты стенда на Python (28.9%) и Bash (8.9%): показывают, что умеешь проверять устройство автоматически, а не тыкать кнопку руками
- Если проект закрытый — опиши словами: что за устройство, какая была проблема, чем поймал, что изменил. В embedded это нормальная практика, и её понимают
- Раздел «Проекты» вместо «Опыт работы»: устройство, микроконтроллер, периферия, что в итоге заработало
- Называй железо конкретно: плата, микроконтроллер, датчики, интерфейсы, протоколы. Embedded нанимают под платформу, а не «вообще на C++»
- Опиши хотя бы одну найденную ошибку железа: что наблюдал, какая была гипотеза, чем проверил, что оказалось на самом деле. Это самая читаемая строчка твоего резюме
- Навыки — только те, что трогал руками: Linux, Git
- Профильное образование или опыт с приборами выноси наверх: в embedded это читают внимательнее, чем в вебе
«Знаю C и C++, изучал микроконтроллеры, читал про RTOS, собирал схемы по урокам»
«Собрал устройство на STM32: опрос датчика по I2C, передача на хост по UART, разбор ошибок связи и повторная отправка. Поймал сбой, который повторялся примерно раз в час: при включении передатчика проседало питание и шина зависала — нашёл осциллографом, вылечил развязкой и повторной инициализацией. Добавил сторожевой таймер и режим восстановления. Прошивка, схема подключения, фото стенда, логи и видео: [ссылка]»
Самостоятельно, курсы или вуз — какой путь выбрать
Когда начинать искать первую работу
Готов, когда твоя прошивка работает на живой плате, а ты можешь показать, как ловил ошибку железа: что наблюдал, какая была гипотеза, чем проверил — осциллограмма, лог анализатора, вывод. Junior-позиций 2 вакансии — параллельно смотри тестирование устройств, стенды и производство: оттуда внутрь заметно ближе, чем снаружи по отклику.
- → hh.ru: запросы «embedded», «программист микроконтроллеров», «разработчик прошивок», «STM32»
- → Производители оборудования: приборостроение, промышленная автоматика, телеком-железо, медтехника, счётчики, датчики, системы связи — вакансия часто висит на сайте компании, а не только на hh.ru
- → Конструкторские бюро и контрактные производства: вакансия может называться «инженер-программист», а работа та же
- → Смежный вход: тестирование устройств, стенды, техподдержка железа, аппаратная команда — оттуда переход внутрь короче, чем отклик снаружи
- → Название обманчиво: «инженер-программист», «разработчик ПО» и «программист микроконтроллеров» часто одна и та же работа. Читай задачи, а не заголовок
- → «Знание схемотехники» обычно значит «читаешь схему и datasheet», а не «разводишь плату сам»
- → Список конкретных микросхем — это описание текущего проекта, а не входной барьер. Работал с похожей периферией — откликайся
- → «Опыт с RTOS» (8.9%) — спросят про задачи, приоритеты и прерывания, а не про конкретную систему: их несколько, принципы общие
- → Linux (73.3%) в требованиях может значить две разные вещи: рабочая среда с кросс-сборкой или embedded Linux на самом устройстве. Это стоит уточнить на первом созвоне
Что спрашивают на собеседовании
Железо и периферия
- ·UART, SPI, I2C: чем отличаются и что выбрать под задачу
- ·Датчик не отвечает — твои действия по шагам
- ·Прерывание: что можно делать внутри обработчика, а что нельзя
- ·Как тактируется твой микроконтроллер и что будет, если ошибиться
Покажи драйвер, который писал по datasheet: какие регистры и почему
Память и ограничения
- ·Стек и куча на микроконтроллере: почему динамическое выделение опасно
- ·Как узнать, сколько памяти реально осталось
- ·volatile: зачем и когда обязателен
- ·Что произойдёт при переполнении стека и как это заметить
Покажи, где в прошивке ты считал память и как убедился, что её хватает
Отладка на плате
- ·Как искать ошибку, когда отладчик подключить некуда
- ·JTAG и SWD: что дают и чем отличаются
- ·Как отличить программный сбой от проблемы с питанием
- ·Что покажет логический анализатор, чего не покажет лог
Расскажи про ошибку, которую поймал осциллографом: гипотеза, проверка, вывод
RTOS и живучесть
- ·Зачем RTOS, если есть цикл с опросом
- ·Задачи, приоритеты, инверсия приоритетов
- ·Сторожевой таймер: зачем и как его правильно кормить
- ·Сбой питания в момент записи — что станет с устройством
Покажи режим восстановления в своей прошивке и объясни, что его запускает
Linux и инструменты
- ·Embedded Linux и микроконтроллер: когда что выбирают
- ·Кросс-сборка: как собрать под ARM на своей машине
- ·Зачем Python в embedded и где проходит граница
- ·Git и версии прошивки: как понять, что залито в устройство на столе
Скрипт стенда: как ты проверяешь прошивку автоматически
Сколько времени нужно, чтобы стать разработчиком встраиваемых систем
Почему embedded дольше остальной разработки. Тут два предмета вместо одного. Язык можно закрыть за год, но чтение datasheet, тайминги, питание, прерывания и отладка на плате набираются только через устройства, которые ты сам заставил работать. Каждое такое устройство — это недели, а не вечера, и пропустить их нечем: симулятор не воспроизводит физику.
Скорость решают три вещи: есть ли профильная база (радиотехника, приборостроение, автоматика), есть ли доступ к железу — плата, отладчик, логический анализатор, нормальное питание, — и сколько раз ты уже находил ошибку, которой в коде нет.
Ошибки новичков
Учат C и C++ без платы
Почему мешает: Симулятор не воспроизводит просадку питания, дребезг, шум на линии и тайминги. Человек год учит язык и на первой же плате обнаруживает, что не умеет ничего из нужного
Как исправить: Плата на столе с первой недели. Она дешевле курса, а мигание светодиодом — это первый пройденный путь от кода до железа
Отлаживают выводом в лог вместо отладчика
Почему мешает: Вывод меняет тайминги и прячет ровно ту ошибку, которую ищешь. А на боевой плате часто и выводить некуда: свободного интерфейса нет
Как исправить: JTAG или SWD, логический анализатор, осциллограф. Сначала посмотри, что на линии физически, потом ищи ошибку в коде
Забывают про питание
Почему мешает: Заметная часть «программных» сбоев — это просадка при включении нагрузки, помеха или плохая земля. Код при этом переписывают неделями и ничего не находят
Как исправить: Правило простое: сбой невоспроизводим и «плавает» — сначала смотри питание и землю осциллографом, потом всё остальное
Пишут так, будто памяти много
Почему мешает: Привычка из большого софта: динамическое выделение везде, буферы с запасом. На микроконтроллере это фрагментация кучи и переполнение стека, которое проявится у заказчика через месяц
Как исправить: Считай память заранее, обходись статическим выделением, проверяй остаток стека. На плате нет того, кто добавит памяти
Считают Python заменой C
Почему мешает: Python стоит в 28.9% вакансий разработчика встраиваемых систем, и это сбивает с толку. Но он там для стендов, автотестов, генерации данных и разбора логов, а прошивку пишут на C и C++ (26.7%)
Как исправить: Python учи как инструмент вокруг устройства. Ядро профессии — язык, регистры, периферия, память и отладка на плате
Игнорируют Linux
Почему мешает: Linux — самый частый навык профессии: 73.3% вакансий. Он тут и рабочая среда с кросс-сборкой, и целевая система на устройствах помощнее микроконтроллера
Как исправить: Терминал, сборка, права, работа с устройствами, Bash (8.9%). Дальше — кросс-сборка под ARM (15.6%)
Читают уроки вместо технического описания
Почему мешает: Урок даёт готовый ответ для одной платы. На работе платы другие, а вопрос всегда один: что написано в datasheet про этот регистр и этот тайминг
Как исправить: Возьми любой датчик и подключи его только по техническому описанию, без чужой библиотеки. Один раз больно, дальше — навык на всю карьеру
Рассчитывают на удалёнку
Почему мешает: Плата, отладчик, анализатор и осциллограф лежат на столе, а стенд и заказчик — в лаборатории. Часть работодателей ещё и с закрытым контуром, куда удалённо не пускают
Как исправить: Считай офис нормой на входе. Доли форматов работы и вилки — на странице зарплат разработчика встраиваемых систем
Как SkillStat считает данные
Источник: 45 вакансий в московском сегменте. Навыки и грейды извлекаются автоматически из текста каждой вакансии.
Грейды: определяются по требованиям вакансии — уровню опыта, упоминанию «junior», «intern», «стажёр». Это рыночная оценка объявления.
Сложность входа: рассчитывается по доле junior-вакансий и медиане навыков на junior-уровне. Это индикатор, а не гарантия.
Обновление: данные пересчитываются регулярно. Текущий срез — 12 августа 2026.