Привет, Хабр! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.
Случайная книга, которая изменила всё
Всё началось довольно банально — с книги «Электроника для начинающих», которая случайно попалась мне на глаза. Она объясняла простые, но важные вещи, которые я как-то пропустил на школьной физике: что такое резисторы, как работает транзистор, чем отличается последовательное соединение от параллельного и т.д.

Кроме базовой теории, в книге была обзорная часть про популярные электронные компоненты и немного информации по Arduino. Тогда этого мне показалось достаточно, чтобы «заразиться» интересом к железу.
Arduino и первая практика
Параллельно с чтением я начал искать статьи и видеоролики — спасибо YouTube за массу бесплатной информации. Погружаться в Arduino было относительно просто, и тут мне очень помогла книга Джереми Блума «Изучаем Arduino». Уверен, многие её знают — она действительно хороша для новичков.

Благодаря Arduino я начал понимать, как программное обеспечение управляет «железом», и начал получать удовольствие от того, что что-то действительно работает. Пара светодиодов, мотор, сенсор — и вот уже можно собрать простейшего робота или домашнюю сигнализацию.
Первая работа: преподаватель кружка
В 18 лет я устроился преподавателем кружка электроники для школьников. Это была моя первая официальная работа. Несмотря на то что я не рассматривал её всерьёз, она дала мне важный опыт: нужно было не только разбираться самому, но и объяснять другим.
В это же время я начал изучать STM32. Контраст с Arduino был ощутим — STM32 не балует новичков, в ней меньше «магии» и больше реального взаимодействия с железом на низком уровне. Многие вещи приходилось гуглить по крупицам. Если Arduino — это детская площадка, то STM32 — уже промышленная стройка.
Особенно не хватало человеческих гайдов: подавляющее большинство источников были написаны профессионалами для профессионалов. Очень помогла другая книга «Освоение STM32» , которая объясняла то, что обычно остаётся за кадром.

Первая серьёзная работа
В 19 лет я устроился инженером-программистом. Это случилось случайно: наткнулся на вакансию, отправил резюме — и меня позвали. Собеседование было непростым: язык C, схемотехника, измерительное оборудование, вопросы по периферии.
На следующий день после выхода на работу мне выдали первую задачу — написать программу для PLC-модуля, которая проверяет работу I2C, UART, SPI и других интерфейсов. Я тогда с PLC никогда не работал, поэтому пришлось срочно осваивать кучу новых вещей.
Следующим проектом была разработка модуля управления шаговым двигателем через CAN-шину. К счастью, это уже было на знакомой STM32, и всё пошло куда легче.
Работа, где ты делаешь всё
Проработав полтора года, я ушёл с этого места по личным причинам. Новая должность требовала не только написания прошивок, но и полной разработки устройства: от схемы до сборки.
Такой подход мне пришёлся по душе. Гораздо проще писать ПО для платы, которую ты сам проектировал, понимаешь все связи и знаешь, как именно она должна работать. Сейчас мои обязанности включают:
разработку электрических схем;
трассировку печатных плат
оформление технической документации;
написание прошивок;
тестирование и сборку устройств.
Несколько важных выводов
За время работы я сделал несколько ключевых выводов, которые хотел бы донести до тех, кто только начинает путь в встраиваемые системы:
1. Технический английский — не опция, а необходимость
Пожалуй, моя главная ошибка — позднее осознание важности технического английского. Огромное количество информации — статьи, даташиты, обсуждения на форумах — доступны только на нём. Плохо знаешь язык — готовься терять часы на то, что можно было бы понять за 10 минут.
2. Даташиты и документация — ваши лучшие (и худшие) друзья
Если вы решили работать с железом, будьте готовы изучать тонны документации. Иногда приходится перелопачивать десятки страниц, чтобы найти одну нужную строчку. Особенно весело, когда документация — на китайском.
3. Без схемотехники никуда
Даже если вы «только кодите», понимание базовых принципов схемотехники обязательно. Как минимум, чтобы не делать глупых ошибок при взаимодействии с периферией или при чтении даташитов, для изучения схемотехники могу порекомендовать известное творение - «Искусство схемотехники», однако сразу вынужден предупредить, что перед изучением данной рукописи запаситесь терпением и кофе.

4. Протоколы — важнее, чем кажется
Даже на уровне микроконтроллеров сегодня без сетевого взаимодействия никуда. TCP, UDP, MQTT, HTTP — хотя бы на базовом уровне, но с ними нужно уметь работать. Особенно если хотите создавать свои IoT-проекты.
Заключение
Пока мой путь не самый длинный, но за эти 2,5 года я получил опыт, которым действительно хочу делиться. Если вы только начинаете — не бойтесь. Встраиваемые системы кажутся сложными только на первый взгляд. А дальше начинается самое интересное.
Если вам понравился пост — буду рад комментариям, вопросам и рекомендациям, что почитать, изучить или куда копать дальше.
RSG245
как сейчас?