Карьера в IT: кто такой Embedded-разработчик, задачи и обязанности - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

Заказать звонок

Выбери свою IT специальность

Подписка

Заказать звонок

+38 099 757 27 82

Карьера в IT: кто такой Embedded-разработчик, задачи и обязанности

advertisement advertisement
  1. Кто такой Embedded-разработчик?
  2. Сферы применения Embedded-разработки.
  3. Что должен знать Embedded-разработчик.
  4. Как стать Embedded-разработчиком.
    1. Где получить знания.
    2. Мягкие навыки.
  5. Ключевые тренды в Embedded.
  6. Карьерные перспективы и зарплата Embedded Engineer.
    1. Количество вакансий.
    2. Конкуренция.
    3. Заработная плата.
    4. Карьерные возможности.
  7. Выводы.

Подавляющее большинство новичков в Украине выбирают тестирование или разработку с привлечением C#./NET, Java, Python, JavaScript (фронтенд и Node.js). Эти направления имеют наибольшее количество вакансий в IT, низкие требования к высшему образованию, мощную распиаренность почти во всех учебных центрах, а также относительно простой переход в IT с любой не-айтишной профессии.

Специальность, которую мы будем сегодня рассматривать, не является столь популярной, трендовой. Однако она не менее важна, чем другие IT-направления. Герой нашей статьи занимается разработкой встроенных (embedded) систем, и его называют Embedded-разработчик.

Что это за специальность, насколько она важна и где используется, что нужно учить для её овладения, как выглядит день Embedded-ера, какие карьерные перспективы и зарплаты у специалистов этого направления – разбор этих и других интригующих вопросов читайте ниже.

Кто такой Embedded-разработчик?

Начнём с понятия “Embedded система”. Трактовка в разных источниках отличается, но если свести всё под один знаменатель – это компьютеризированная система, которая встроена в механическую или электронную систему и выполняет определенную функциональность. То есть это система, в которой компьютер (как правило микроконтроллер или микропроцессор) является неотъемлемой частью другой системы.

Как пример: микроконтроллер в вашей кофейной машине, микроволновке или стиральной машине; устройство, обеспечивающее срабатывание подушек безопасности в автомобиле, контроллер в самолете, который собирает определенные данные о полёте – даже Bluetooth-наушники содержат свою собственную встроенную систему.

Соответственно, Embedded-разработчик – это специалист, занимающийся разработкой подобных встроенных систем, используя программирование (software) и навыки работы с "железом" (hardware).

Жизненный цикл продукта очень тесно связан с разработчиком встроенных систем. Обязанности Embedded-разработчика могут различаться в зависимости от микроконтроллеров / микросхем / устройств и т. п., с которыми он работает, но основные фазы, где ощутима роль этого специалиста, следующие:

  1. Анализ требований. Коммуникация с клиентами, дизайнерами и инженерными командами для определения функциональных и технических требований к встроенной системе.
  2. Проектирование системы. Разработка архитектуры и дизайна встроенной системы, выбор аппаратных и программных компонентов.
  3. Проверка базовой работоспособности. Перед началом работы Embedded разработчик должен проверить функционирование платы, обновить драйвера при необходимости и убедиться, что “железо” исправно.
  4. Программирование. Написание программного кода, встроенных программ и системных протоколов.
  5. Тестирование и отладка. Проведение тестов для проверки работоспособности embedded-системы.
  6. Интеграция. Обеспечение взаимодействия встроенной системы с аппаратурой, внешними устройствами и другими составляющими системы.
  7. Оптимизация производительности. Усовершенствование эффективности и производительности встроенной системы, учитывая ограниченные ресурсы.
  8. Документация. Формирование диагностических отчётов, технических инструкций и документации по разработке ПО. Также чтение форумов, статей и инструкций к платам и компонентам, с которыми ведется работа.
  9. Сотрудничество с другими командами. Взаимодействие с hardware и software разработчиками, участие в различных митингах, обсуждениях, коммуникациях с заказчиком и т. д.
  10. Безопасность и надежность. Обеспечение высокого уровня безопасности, надежности и работоспособности встроенной системы.

Типичный рабочий день разработчика Embedded состоит из всего понемногу:

  • написание и отладка кода, поиск багов;
  • работа с аппаратной начинкой – иногда приходится и паяльником поколдовать, и что-то мультиметром измерить, и осциллограф применить и т.п.;
  • чтение документации, поиск информации на форумах;
  • тестирование встроенных систем и их составляющих;
  • код-ревью;
  • рефакторинг;
  • взаимодействие с командой, руководством: митинги, деловая переписка, созвоны по определенным вопросам (или живое общение) и т. д.

Сферы применения Embedded-разработки

Embedded в XXI веке имеет хороший прирост востребованности в связи с развитием IT-индустрии, в особенности сетевых технологий, операционных систем, языков программирования и в результате модернизации “железа”. В настоящее время область применения встроенных систем достаточно объемна:

  • Бытовая электроника. Встроенные системы являются неотъемлемыми атрибутами уютного жилья: это смарт-телевизоры, холодильники, мультиварки и другая кухонная электроника, устройства безопасности, смарт-девайсы для дома.
  • Машиностроительная промышленность. Embedded технологии являются ключевыми для современных транспортных средств, начиная от гражданского автопрома и заканчивая мощными строительными гулливерами. Они входят в состав двигателей, навигационных систем, климат-контроля, развлекательных блоков и т. д.
  • Медицина. Современная медицина невозможна без комплексного цифрового оборудования, включая устройства мониторинга пациентов, системы визуализации, диагностические инструменты и т. д.
  • Промышленная автоматизация. Встроенные системы используются в промышленных системах управления, программируемых логических контроллерах (PLC) и робототехнике для автоматизации и управления процессами.
  • Телекоммуникации. Встроенные системы – неотъемлемая часть сетевого оборудования, маршрутизаторов, коммутаторов и коммуникационных устройств для эффективной передачи данных.
  • Аэрокосмическая промышленность. Современная авионика использует эмбеддед для управления функциями самолета, системами навигации и связи. Если кто-то хочет терраформировать Марс – без Embedded будет очень трудно.
  • Военное дело. Встроенные системы играют решающую роль в оборонных программах как в мирное время (наблюдение, анализ, прогнозирование, наведение и т. д.), так и во время войны (вспомните те же джавелины, дроны, хаймарсы, пэтриоты и т. д. – там очень много электроники).
  • Умные сети. Развитие интеллектуальных сетей (smart grid) увеличивает эффективность и надежность распределения электроэнергии.
  • IoT (Интернет вещей). Устройства IoT в значительной степени зависят от встроенных систем сбора, обработки и передачи данных для различных программ. Примеры: умный дом, автоматизированные системы полива, умные города и т. д.

Что должен знать Embedded-разработчик

В Embedded-е целая палитра специальностей. Например, приставки “Software”, “Firmware” указывают на фокус именно на создании ПО, а “Hardware” и “Hardware Design” – на аппаратной части. Тайтл вроде "Embedded Systems Engineer" говорит о необходимости иметь одинаково хорошие hardware и software знания. Также надо понимать, что в разных компаниях один и тот же тайтл может иметь под капотом совершенно разные технологии в зависимости от аппаратной начинки, разновидности встроенной системы и т. д.

Наше описание необходимых технологий будет охватывать и аппаратное, и программное крыло требований, что делает его более близким к тайтлу "Embedded Systems Engineer". Если вы хотите больше в software, изучайте глубже технологии, направленные на разработку софта; если же в hardware – больше внимания уделяйте аппаратным навыкам.

Итак, мы проанализировали тематические статьи, мнения популяризаторов эмбеддеда и вакансии украинского рынка, а на выходе получили следующий технологический стек Embedded девелопера.

Математика, физика, электроника

Прежде всего, эмбеддед-разработчики должны хорошо знать математику и физику – особенно темы, связанные с электротехническим направлением, чтобы хорошо понимать принципы функционирования hardware: разбираться в начинке плат, уметь правильно разводить все сигналы на плате, правильно считать все дорожки, перекрытия сигналов, их целостность и т. д. Эти знания важны как при разработке, так и на момент проектирования, тестирования, коммуникации с другими коллегами и не только.

Какие разделы нужно знать:

  • базовая математика и вычисления;
  • дискретная математика;
  • электрические цепи;
  • основы электроники;
  • цифровая и аналоговая микросхемотехника;
  • цифровые и логические схемы;
  • компьютерная архитектура.

Тестовое оборудование

Следующее оборудование вы будете широко использовать для проверки работоспособности микросхем, поиска неисправностей и прочего. Вам понадобятся следующие инструменты:

  • мультиметр;
  • логический анализатор;
  • осциллограф.

Мультиметр является довольно известным прибором среди “электротехнарей” – им измеряют ряд физических величин, таких как сила тока, сопротивление, напряжение и другие.

Логический анализатор используется для работы с цифровыми сигналами в электронных системах, а осциллограф – для визуализации и исследования электрических сигналов, а также отображения их параметров в режиме реального времени.

Микроконтроллеры

Одни из главных объектов заинтересованности разработчиков Embedded. Под них и пишется код на языках C/C++ и не только. МК представляет собой небольшое электронное устройство с большим количеством "ножек", которыми отправляются/принимаются соответствующие электрические сигналы.

Что важно знать по этой теме:

  • GPIO
  • ADC
  • DAC
  • Таймеры
  • PWM
  • Прерывания
  • Сторожевой таймер (watchdog)
  • Управление тактовой системой (clock management)

Каждая модель МК имеет свои особенности, с которыми вам придется знакомиться через соответствующую документацию. Также вам нужно знать периферию выбранного вами микроконтроллера и библиотеки для управления ею.

Самым популярным семейством МК является STM32. Опыт работы с Arduino также приветствуется.

RTOS

Real Time OS – операционная система настоящего времени. Предоставляет среду выполнения для программ, имеющих строгий график выполнения задач. Embedded-разработчики используют RTOS для обработки задач с высокой точностью и низкими задержками.

Linux

Если вы планируете работать со встроенными устройствами на базе Linux (а их сейчас очень много), вам следует знать и эту операционную систему. Она имеет открытый исходный код и является бесплатной.

Примеры проектов – если говорить о них, линукс использует большое количество систем IoT, промышленный, сетевой, автомобильный, медицинский Embedded и т. д.

Паяльник

Да, в данной профессии необходимо иногда и паяльником поработать. Какие-то компоненты могут нуждаться в пайке – где-то удалить/добавить/заменить, поэкспериментировать с макетом, собрать проект и прочее. Может возникнуть любая ситуация на “железе”, и эмбеддед-специалист должен быть готов к этому.

Основы программирования

Фундамент, который сделает ваш процесс программирования эффективным. Сюда отнесём следующие темы:

  • алгоритмы и структуры данных – эмбеддерам нужны сильные знания по алгоритмике;
  • шаблоны проектирования – да, в эмбеддеде есть свои паттерны, облегчающие жизнь девелоперам, например Opaque Pointer pattern;
  • UML (диаграмма состояния, state machine) – для моделирования и анализа поведения системы.

Программирование на C/C++

C/C++ – это мощные мастодонты в мире программирования. По сравнению с другими языками сложнее в изучении, дают возможность писать низкоуровневый код с высокой степенью контроля “железа”.

Также C/C++ позволяют напрямую управлять памятью (а это очень важно при работе с hard-элементами, имеющими достаточно ограниченный ресурс), контролировать большое количество low-level процессов, а также подходят для программирования широкого спектра “железа”. Обязательный инструмент в копилке Embedded-девелопера – можно выучить либо C, либо C++, либо оба языка.

Интерфейсы и протоколы

Обмен информацией между Embedded-элементами и их составляющими осуществляется через специальные интерфейсы и протоколы:

  • UART, I2C, SPI – базовые, их нужно знать обязательно;
  • Ethernet, USB – для работы на высоких скоростях;
  • Bluetooth – очень известная беспроводная технология;
  • TCP/IP, UDP – для работы с сетью;
  • CAN – система, используемая в транспортных средствах;
  • Modbus – для работы в промышленных объектах.

Git

Git – система управления версиями проекта, очень популярный инструмент при написании любого кода, поскольку позволяет отслеживать изменения в коде, создавать ветки для работы над разными функциями, делиться своим кодом с другими коллегами и наоборот.

Agile/Scrum

Agile – это семейство гибких методологий разработки ПО, которое способствует выпуску продукта порциями, шаг за шагом расширяя и улучшая его. Как результат – команда осуществляет разработку относительно небольшими интервалами, сам продукт постоянно улучшается, качество кода – повышается. Познакомиться с Agile вам поможет подходящий манифест с подробным описанием основных принципов.

Scrum является одной из самых популярных реализаций данного подхода, часто используемого во многих IT-командах, в том числе и во время работы со встроенными устройствами.

Английский язык

English на уровне свободного чтения документации должен быть у каждого Embedder-а, поскольку львиная доля работы приходится именно на считывание материалов к тем или иным микроконтроллерам и сопутствующим устройствам. Если же вы будете работать в команде с иностранцами, нужно подтянуть ещё и разговорный английский.

Как стать Embedded-разработчиком

Где получить знания

Есть несколько опций для изучения разработки встроенных устройств:

  1. Можно учиться самостоятельно с помощью бесплатных ресурсов в свободном доступе: YouTube, roadmap со ссылками на GitHub, статьи, тематические форумы, бесплатные курсы и материалы (MIT OpenCourseWare, embedded.com) и т.д. На платы Arduino, паяльник, мультиметр и т.д., конечно, придется раскошелиться.
  2. Прохождение видео курсов (платно) на Udemy, Coursera, edX, Pluralsight и других платформах, покупка специализированных книг.
  3. Менторинг со стороны действующего разработчика – самый эффективный способ обучения, поскольку у вас всегда будет помощь, наставничество, советы, четкое направление движения и необходимые учебные материалы.
  4. Прохождение онлайн/офлайн обучения при компаниях. Такой формат предлагают, например, GlobalLogic, Ajax Systems и другие. Минусы: нужна база знаний перед стартом обучения, а главный плюс – возможность стажировки и полноценного трудоустройства в компании.

Высшее образование в этой специальности не помешает, хотя и не есть обязательным. Нужную базу вы можете получить в школе и высших учебных заведениях на соответствующих технических специальностях – там же есть возможность попасть на стажировку, если кафедра такое практикует или имеет соответствующие связи с компаниями.

Soft skills

Требования к Embedded-разработчикам могут различаться в плане стека, но что 100% понадобится каждому, это следующие “мягкие” навыки:

  • критическое, алгоритмическое, аналитическое мышление;
  • навыки problem-solving;
  • коммуникативность, умение работать в команде;
  • организованность, собранность, умение эффективно распоряжаться временем;
  • самомотивация;
  • внимание к деталям;
  • терпение и адаптивность;
  • страсть к Embedded;
  • желание постоянно развиваться и совершенствоваться.

Последние три пункта очень важны в профессии, поскольку эмбеддед – это непростая отрасль, и за 3-6 месяцев "войти в IT" не получится. Требуется больше усилий, времени и выдержки.

Ключевые тренды в Embedded

IT-индустрия двигается вперед, и эмбеддед не отстает. Проанализировав ряд ресурсов, мы определили следующие тренды:

  1. Интеграция искусственного интеллекта и машинного обучения в Embedded-системах становится всё более привлекательней, что способствует использованию встроенными системами интеллектуальных алгоритмов и ML. Эта синергия позволяет системам адаптироваться к изменениям в реальном времени, повышая их эффективность.
  2. Развитие беспроводных технологий открывает новые перспективы для встроенных систем, особенно в областях интернета вещей (IoT) и беспилотных систем, управляемых удалённо или с помощью AI.
  3. System-on-chip решения. Интеграция всех ключевых компонентов системы на одном чипе (SoC) продолжает набирать обороты и использоваться различными бизнесами. Их компактность в совокупности с высокой производительностью, дешевизной, энергоэффективностью и интегральными микросхемами специального назначения (ASIC), например, уже успешно применяется в гаджетах, собирающих и анализирующих различные параметры здоровья.
  4. Больше внимания безопасности. Рост количества встроенных систем, имеющих выход в Интернет, приводит к увеличению количества киберугроз, что подчеркивает важность совершенствования мер безопасности для эмбеддед-устройств.
  5. Оптимизация потребления энергии embedded-системами становится актуальнее – на это влияют идеи устойчивого развития, что способствует распространению более энергоэффективных решений.
  6. Развитие AR и VR (дополненная и виртуальная реальности). Интеграция встроенных систем в AR и VR открывает новые горизонты для интерактивных интерфейсов и развлекательных приложений. Embedded-разработчики активно работают над этими технологиями для создания поразительного опыта и визуальных эффектов.

Отдельно отметим и развитие встроенных устройств в военной сфере. В настоящее время растет спрос на эмбеддеров, способных работать с дронами (воздушными и морскими), БПЛА и т. д. Сегодня именно эти роботизированные системы позволяют эффективно выявлять и ликвидировать врага, разведывать, наводить и корректировать огонь и – что самое важное – беречь жизнь и здоровье личного состава. Сегодня это одно из трендовых направлений именно в нашем государстве.

Карьерные возможности в IT и заработная плата Embedded Engineer

Количество вакансий

Для определения этого параметра используем данные из самых известных украинских ресурсов для поиска работы в IT – DOU и Djinni – и сравним результаты по самым популярным специальностям.

Начнем с DOU:

  • Embedded – 44 вакансии;
  • QA – 167;
  • FrontEnd – 160;
  • DevOps – 158;
  • PHP – 140;
  • Python – 138;
  • Java – 108;
  • .NET – 104;
  • Node.js – 101.

В Djinni поиск работы кандидатами осуществляется анонимно. Количество вакансий следующее:

  • C / C++ / Embedded – 170 вакансий;
  • JavaScript / FrontEnd – 354;
  • PHP – 295;
  • DevOps – 273;
  • Python – 208;
  • Node.js – 191;
  • C#/.NET – 166;
  • Java – 161;
  • QA Automation – 139;
  • QA Manual – 128.

Конкуренция

Для определения конкуренции эмбеддеров на нашем рынке IT воспользуемся соотношением количества отзывов к количеству вакансий на DOU за ноябрь 2023 года (берем наиболее известные специальности). Вот что имеем:

Конкуренция у эмбеддеров (от новичков до профессионалов) очень низкая: на 1 вакансию приходится примерно 5 претендентов, что является хорошим результатом во время нынешней ситуации на рынке IT.

Настоящие "голодные игры" традиционно у QA и FrontEnd: за 1 вакансией охотятся в среднем 120.9 и 100.5 кандидатов соответственно.

Согласно рыночной статистике Djinni, для новичков конкуренция усиливается:

Отметим, что здесь демонстрируется количество кандидатов на вакансию, которые сейчас находятся в "онлайне". На Джине так называются те кандидаты, которые находятся в активном поиске работы.

Видим, что в категории "C / C++ / Embedded" без опыта 27.75 соискателей на вакансию (отдельной категории для Embedded нет). Много, но посмотрите на аналогичную ситуацию в более популярных направлениях:

  • JavaScript / FrontEnd – 426.55
  • C#/.NET – 200.5
  • Python – 185.6
  • Manual QA – 132.83
  • Node.js – 98
  • DevOps и FullStack – 83.5

Заработная плата

Сначала рассмотрим зарплатную статистику на Djinni для “C / C++ / Embedded” (за последние 6 месяцев). Картина следующая:

Зарплатные вилки достаточно высоки – 2300-4700 USD. При этом зарплатные ожидания кандидатов скромнее – от 700 USD до 4500 USD.

А сколько получают Embedded за пределами Украины? Обратимся к аналитике Stack Overflow Developer Survey 2023 (более 90 000 респондентов из США, Индии, Германии, Соединенного Королевства, Канады и других стран).

Некоторые несущественные для нашей статьи специальности были убраны из диаграммы для большей компактности изображения.

Итак, медианная зарплата Embedded-специалистов из разных стран составляет 77 104 USD в год, а это примерно 6425 USD в месяц. Что интересно, разработчики веба (FrontEnd, BackEnd, FullStack), игр, мобильных и десктопных приложений получают меньшую ЗП, хотя эти специальности более распространены, а веб вообще является самым популярным в IT.

Более высокое вознаграждение получают те, кто специализируется на базах данных, DevOps-процессах, больших данных, аппаратной части, блокчейне, безопасности и т. д.

Карьерные перспективы

Embedded разработчик – понятие достаточно размытое и обширное, поскольку девелопер этой специализации может работать над:

  • созданием робототехнических систем;
  • медицинской аппаратурой;
  • автомобильными системами;
  • аэрокосмическими аппаратами;
  • IoT-экосистемой;
  • AR и VR индустрией;
  • сетевыми системами;
  • гаджетами для гражданских нужд;
  • безопасностью embedded-устройств;
  • промышленными системами;
  • военными разработками;
  • и т. д.

В каждой из этих сфер будут свои технологические стеки, микроконтроллеры, платы, интерфейсы, протоколы и т. д.

Ещё не забывайте об эмбеддерском "фронтенде", "бэкенде" и "фулстеке" - в каждой отрасли вы можете концентрироваться больше на программной части, аппаратной, или же на обоих сразу.

Конечно, каждое направление может иметь собственную “кухню”, и чтобы “отведать блюдо” в каждом из этих “ресторанов” целой жизни может не хватить, но согласитесь – список для самореализации скромным не назвать.

Также вы можете в любой момент углубиться в Software разработку и заниматься написанием программного кода (самые популярные стеки в Embedded – C/C++, Java, Python, Go), а можете пойти в Hardware и больше внимания уделять “железу”. Если немного подкачать знания, можно переквалифицироваться и в тестировщики, и в специалиста по безопасности, сетевого специалиста и т. д. Возможности очень широкие и разнообразные.

Если же говорить о вертикальном потенциале профессии, разработчик встроенных систем стартует со стандартной Intern/Trainee/Junior позиции. Далее – с увеличением опыта, навыков и знаний – получает повышение до Middle и Senior, а выше – руководящие позиции вроде Team/Tech Lead, архитектор и т. д.

Выводы

Embedded – очень интересная, необычная и многогранная IT специализация. Она позволяет почувствовать себя Архитектором, вдыхающим жизнь в устройства, даёт им всё необходимое для их движения, мышления, анализа окружающей среды, общения друг с другом и не только. Да, для этого нужно иметь много знаний, но кто сказал, что быть Творцом – это так просто?)

Это направление даёт очень важный фундамент для других IT-отраслей, которые сегодня в зените популярности. Благодаря встроенным системам мы можем наслаждаться множеством автоматизированных процессов, начиная утренним свежемолотым кофе и осмотром нашего сна в health-трекере, и заканчивая автомобильной и медицинской аппаратурой.

Эмбеддед создан для истинных любителей “железа” и его программирования. При этом он имеет много нишевых разветвлений и ежегодно растущий спрос. Сегодня в Украине разработчики встроенных устройств имеют большие возможности для реализации, а в остальном мире – тем более.

Профессия непростая, но она щедро вознаграждает смелых, терпеливых и целеустремленных, которые не боятся сложностей и препятствий, а также готовы на всё, чтобы добиться желаемого.

Желаем удачи и вдохновения всем, кто стремится к развитию в направлении Embedded!

КОММЕНТАРИИ И ОБСУЖДЕНИЯ
advertisement advertisement

Покупай подпискус доступом ко всем курсам и сервисам

Библиотека современных IT знаний в удобном формате

Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

Стартовый
  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
59.99 $
Оформить подписку
Базовый
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
89.99 $
Оформить подписку
Премиум
  • Все видеокурсы на 1 год
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин
169.99 $
Оформить подписку
Notification success