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

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

    Подписка

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

    Подписка

      Карьера в 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 $
      Оформить подписку
      Весенний
      • Все видеокурсы на 15 месяцев
      • Тестирование по 24 курсам
      • Проверка 20 домашних заданий
      • Консультация с тренером 120 мин
      90.00 $
      219.99 $
      Оформить подписку
      Акция
      Базовый
      • Все видеокурсы на 6 месяцев
      • Тестирование по 16 курсам
      • Проверка 10 домашних заданий
      • Консультация с тренером 60 мин
      72.00 $
      89.99 $
      Оформить подписку
      Акция
      Notification success
      Мы используем cookie-файлы, чтобы сделать взаимодействие с нашими веб-сайтами и услугами простым и значимым.