Как в 19 лет я начал путь разработчика встраиваемого ПО
- суббота, 28 июня 2025 г. в 00:00:12
Привет, Хабр! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.
Всё началось довольно банально — с книги «Электроника для начинающих», которая случайно попалась мне на глаза. Она объясняла простые, но важные вещи, которые я как-то пропустил на школьной физике: что такое резисторы, как работает транзистор, чем отличается последовательное соединение от параллельного и т.д.
Кроме базовой теории, в книге была обзорная часть про популярные электронные компоненты и немного информации по Arduino. Тогда этого мне показалось достаточно, чтобы «заразиться» интересом к железу.
Параллельно с чтением я начал искать статьи и видеоролики — спасибо YouTube за массу бесплатной информации. Погружаться в Arduino было относительно просто, и тут мне очень помогла книга Джереми Блума «Изучаем Arduino». Уверен, многие её знают — она действительно хороша для новичков.
Благодаря Arduino я начал понимать, как программное обеспечение управляет «железом», и начал получать удовольствие от того, что что-то действительно работает. Пара светодиодов, мотор, сенсор — и вот уже можно собрать простейшего робота или домашнюю сигнализацию.
В 18 лет я устроился преподавателем кружка электроники для школьников. Это была моя первая официальная работа. Несмотря на то что я не рассматривал её всерьёз, она дала мне важный опыт: нужно было не только разбираться самому, но и объяснять другим.
В это же время я начал изучать STM32. Контраст с Arduino был ощутим — STM32 не балует новичков, в ней меньше «магии» и больше реального взаимодействия с железом на низком уровне. Многие вещи приходилось гуглить по крупицам. Если Arduino — это детская площадка, то STM32 — уже промышленная стройка.
Особенно не хватало человеческих гайдов: подавляющее большинство источников были написаны профессионалами для профессионалов. Очень помогла другая книга «Освоение STM32» , которая объясняла то, что обычно остаётся за кадром.
В 19 лет я устроился инженером-программистом. Это случилось случайно: наткнулся на вакансию, отправил резюме — и меня позвали. Собеседование было непростым: язык C, схемотехника, измерительное оборудование, вопросы по периферии.
На следующий день после выхода на работу мне выдали первую задачу — написать программу для PLC-модуля, которая проверяет работу I2C, UART, SPI и других интерфейсов. Я тогда с PLC никогда не работал, поэтому пришлось срочно осваивать кучу новых вещей.
Следующим проектом была разработка модуля управления шаговым двигателем через CAN-шину. К счастью, это уже было на знакомой STM32, и всё пошло куда легче.
Проработав полтора года, я ушёл с этого места по личным причинам. Новая должность требовала не только написания прошивок, но и полной разработки устройства: от схемы до сборки.
Такой подход мне пришёлся по душе. Гораздо проще писать ПО для платы, которую ты сам проектировал, понимаешь все связи и знаешь, как именно она должна работать. Сейчас мои обязанности включают:
разработку электрических схем;
трассировку печатных плат
оформление технической документации;
написание прошивок;
тестирование и сборку устройств.
За время работы я сделал несколько ключевых выводов, которые хотел бы донести до тех, кто только начинает путь в встраиваемые системы:
Пожалуй, моя главная ошибка — позднее осознание важности технического английского. Огромное количество информации — статьи, даташиты, обсуждения на форумах — доступны только на нём. Плохо знаешь язык — готовься терять часы на то, что можно было бы понять за 10 минут.
Если вы решили работать с железом, будьте готовы изучать тонны документации. Иногда приходится перелопачивать десятки страниц, чтобы найти одну нужную строчку. Особенно весело, когда документация — на китайском.
Даже если вы «только кодите», понимание базовых принципов схемотехники обязательно. Как минимум, чтобы не делать глупых ошибок при взаимодействии с периферией или при чтении даташитов, для изучения схемотехники могу порекомендовать известное творение - «Искусство схемотехники», однако сразу вынужден предупредить, что перед изучением данной рукописи запаситесь терпением и кофе.
Даже на уровне микроконтроллеров сегодня без сетевого взаимодействия никуда. TCP, UDP, MQTT, HTTP — хотя бы на базовом уровне, но с ними нужно уметь работать. Особенно если хотите создавать свои IoT-проекты.
Пока мой путь не самый длинный, но за эти 2,5 года я получил опыт, которым действительно хочу делиться. Если вы только начинаете — не бойтесь. Встраиваемые системы кажутся сложными только на первый взгляд. А дальше начинается самое интересное.
Если вам понравился пост — буду рад комментариям, вопросам и рекомендациям, что почитать, изучить или куда копать дальше.