embedder: шляхи розвитку?

Вирішив змінити все. Самостійно займаюсь кастомними приладами на мікроконтролерах, охопив все необхідне Altium Designer, Keil, IAR C, (C++ теж було але закинув через надмірність), SolidWorks. Роблю це для місцевого ринку з 2003 року, мені 42 роки, можна продовжувати але з багатьох причин хочу знайти роботу в серйозній іноземній компанії, щоб з рештою окрім роботи змінити і країну. Три роки вивчаю англійську вже рівень B1-B2. Продивляюсь вакансії переважні вимоги на додачу до моїх навиків — RTOS, Linux, Linux Kernel, цього я у практиці не охопив. Можливо хтось проходив подібний шлях і поділиться досвідом. Оскільки компаній з моєю специфікою не багато, розумію, що якщо почну слати резюме, то не пройду за цими критеріями і далі мене будуть ігнорувати. Тож є питання:

1. Достатньо резюме чи треба ще десь викладати свій код?

2. Якщо мова йде про Linux, то може вже й мікроконтролери не доцільні і варто змінити абсолютно все?

👍НравитсяПонравилось1
В избранноеВ избранном1
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ваш досвід виглядає доволі непагано. Я б спробував навіть зараз постукатись в продуктові embedded-компанії:

jobs.dou.ua/companies/samsung
jobs.dou.ua/...​/tov-nominal-inzhiniring
jobs.dou.ua/companies/rnd-center
jobs.dou.ua/...​panies/ubiquiti-networks
jobs.dou.ua/companies/nvidia
jobs.dou.ua/companies/ajax-systems

Або в аутсорсери:
jobs.dou.ua/companies/globallogic
jobs.dou.ua/companies/softserve

В GL навіть прямо зараз є щось схоже на ваш досвід:
www.globallogic.com/...​etal-developer-irc106444

А в Softsrve — ще й з релокацією одразу в Польщу (якщо досвід в DSP дозволить):
career.softserveinc.com/...​p-firmware-engineer-29606

Можна й не мати публічно розміщеного кода. Все одно, якщо роботодавец забажає — дасть якесь тестове завдання.

Коли потрапите в нове середовище — вже зорієнтуєтесь, куди вам більш цікаво рухатись. Чи в залізо й RTOS/BareMetal, чи в Linux/Kernel, Embedded C++ тощо.

Embedded дуже різний. В різних компаніях різні вимоги та інструменти, та й різні вакансії мають різні вимоги. Розкажу що ми розробляємо у Львові і які загальні вимоги до кандидатів в нас:

Що ми розробляємо:
- Бібліотеки периферійних пристроїв (PDL) для наших мікроконтролерів (PSoC, Traveo, IoT продукти)
- Програмне забезпечення для продуктів USB Type C
- SROM для наших мікроконтролерів, наприклад, PSoC6, TVII
- Власні засоби розробки (ModusToolbox) та програмування (PSoC/Cypress Programmer)
- Фірмвару для ємнісних контролерів дотику та програмні засоби налаштування ємнісних сенсорних панелей
- Драйвери MCAL для автомобільних мікроконтролерів
- Автоматизоване тестування (наші засоби розробки, PDL, MCAL драйвери, BLE)
- Розробка друкованих плат, моделювання в PSPICE, аналіз цілісності сигналів для високошвидкісних схем.
- Прототипи наших нових продуктів на базі FPGA (процесор, пам’ять, периферія реалізовані на FPGA)
- R&D в області сенсорних технологій та безпровідних мереж (ми є авторами понад 200 патентів США)

Вимоги є дуже різними на різні вакансії, короткий підсумок:
- Розуміти роботу мікроконтролера (наприклад, на базі ARM Cortex M0, M4)
- Знання стандартної периферії мікроконтролера (I2C, SPI, UART), CAN — для автомобільних застосунків
- Гарно знати С для тих хто працюватиме над PDL чи QA. Використовуємо Keil, IAR, GCC, Green Hills компілятори та відповідні сумісні апаратні дебагери та програматори
- Знання RTOS, наприклад FreeRTOS для деяких IoT проектів
- С++ — хто працюватиме над засобами розробки, працюємо на Qt, оскільки наші інструменти кросс-платформенні (Windows, Linux, Mac)
- Python — для тих хто займатиметься тестуванням (як фірмвари так і софта)
- Розуміти основи BLE, WiFi — хто працюватиме над IoT продуктами
- Matlab, Comsol — R&D команда
- Розуміти принципові схеми, ми користуємося Cadence Allegro

Мало хто може показати власні хоббі-проекти, відповідно, ми практикуємо нескладні тестові завдання, де б кандидат зробив нескладний проект, наприклад, на PSoC4 чи PSoC6.

З Linux на мікроконтролерах, практично, не працюємо.

Щодо віддаленої роботи — ми працюємо віддалено з березня, особливих незручностей для переважної більшості проектів (де не потрібно робити специфічні тести, наприклад, в EMC чи температурній камері) не становить. Плати, дебагер, цифровий осцилограф та логічний аналізатор легко поміщаються на столі.

На мою думку дуже конкурентні, оскільки понад 90% тих хто пішов від нас 1-2-3 роки тому (включаючи «класичних» софтварних інженерів) знову повертаються та кажуть що в нас краще.

Чого ж вони тоді пішли?

Хтось, наприклад, пробував себе у власному бізнесі.

дякую, це гарний огляд, багато нового для мене

трактор в Німеччину, на худий кінець до Польщі.

гастарбайтером ембедером, але можеш і трактористом, з.п. може бути і вища

Еще можно обратить внимание на DSP. По ним редко пробегают вакансии, но и специалистов мало.

Город не уточнил, это сильно меняет дело.
Я еще в 30 понял, что достигнув потолка в одной компании в Кременчуге даже на +100 будет сложно перейти. Спустя 5 лет свичнулся на Python с удалёнкой оставив Embedded как хобби.
По скиллам, очень редко кто не требует опыт (прям одна из 100 вакансий) по RTOS, в основном это FreeRTOS или что-то специализированное. При чем обычно размер опыта спрашивают в годах. Тут совет один, придумать себе проект и его пилить, что бы можно было вписать один год в резюме.
В какой-то момент думал, что узкий опыт и софтскиллы дадут преимущество при найме, но заказчики хотят, что бы ты на 70-80% походил к проекту. И если ты не работал с чипом, который используется в проекте, а работал с таким же, но другой серии то общение с тобой могут не продолжить.
По итогу, что посоветую:
1. Забросить всякую конструкторскую работу, всё уметь делать самому круто, но, там где это нужно, мало платят.
2. Настраиваться на переезд в крупный город если "

Роблю це для місцевого ринку з 2003 року

". Для Embedded очень редко есть удалёнка, все очень щепетильно относятся к выносу оборудования из офиса. Особенно смешно, когда это просто демо-плата от ST и тем не менее.
3. Качать опыт по FreeRTOS, можно взять уже готовый свой проект и переписать его.
4. Не останавливаться с английским, активно использовать git/github нарабатывая опыт. Недавно с удивлением узнал, что некоторые разработчики с 20+ лет опыта не умеют пользоваться git.
5. Брать какой-то дополнительный язык, типа Python. Я знакомство с ним начал когда нужно было конвертировать картинки в С массив.

Город не уточнил, это сильно меняет дело.

конечно же я перееду туда где работа будет, в приоритете наверное Киев

Зараз я б вже орієнтувався на Zephyr, а не FreeRTOS. Зефірку просувають великі конорциуми і, схоже, за нею буде найближче майбутнє. Поки вивчить — це вже буде мейнстрім.

Крутий ж профіль маєте — розробляєте самостійно весь девайс. То набагато цікавіше ніж бути гвинтиком на галєрі і робити одне і теж.

Робити все цілком справді захоплююче, але переключення між видами робіт знижує продуктивність і результат, а коли додається ще й підтримка продуктів за десяток років, то голова йде обертом, а зупинитись на чомусь не виходить бо нема стільки продажів. До того ж все змінюється, я розпочинав з асемблера для 51 однокристалок і DSP Analog Devices з таким асемблером що і С не потрібно було, і не зупинявся далі були ARM, Cortex-M3, ще й VHDL охопив, по початках важко було втиснути все у внутрішню пам’ять, акуратно треба було виписувати код щоб зберігати продуктивність а зараз в цьому потреба відпала, зараз можна ні в чому собі не відмовляти, незабаром все буде працювати під якоюсь із операційних систем, зараз набагато дорожчий час розробки ніж обладнання, колись все було навпаки. Все змінилось і не розумно цьому опиратись, тим більше що від цих можливостей дух перехоплює і руки свербять.

DSP Analog Devices

Щотижня дивіться вакансії по DSP. Коли вони пробігають — то часто там є гроші.

по початках важко було втиснути все у внутрішню пам’ять, акуратно треба було виписувати код щоб зберігати продуктивність а зараз в цьому потреба відпала, зараз можна ні в чому собі не відмовляти

от читаю і згадую, як цього року робив unity build щоб останні байти оперативки витягнути з паддінга між файлами (*fill*) та використати під буфера.

На самом деле нет. Куда более круто — это распределить роли в команде так, чтобы можно было бы делать проекты, физически нереализуемые одним человеком в обозримые сроки

робити одне і теж.

«Делать одно и тоже» или «ковырять один и тот же код» — этим обычно страдают продуктовые компании, а на галерах вариантов в разы больше. Аутсорс > продукт

Самое главное — в начале идти в команду на 5+ человек и не в коем случае не в стартап. Еще я бы посоветовал учить основы программирования вообще, т.к. эмбеддед в Украине (и кстати не только) очень сильно страдает от формошлепства («МКшлепства»?) — самый ужасный код который я видел был не похапе, а именно це в эмбеддеде.

А вообще эмбеддед — так себе направление: риски на интеграциях ужасные, возможностей отладки мало

А вообще эмбеддед — так себе направление: риски на интеграциях ужасные, возможностей отладки мало

А денег в индустрии больше всего. Кровавый embedded по прибыльности идёт где-то после торговли наркотиками и оружием. Лидер, кстати, Apple в этой нише.

А денег в индустрии больше всего.

Не в этой стране. В этой стране эмбеддер — это дедушка «30 лет в профессии» из обшарпанного НИИ, который выучил avr assembler и рассказывает как он оптимизировал два байта ценой пробитого стека и повреждения данных («в некоторых случаях, но вот тебе контрольная сумма, обработай на своей стороне»). Самое страшное — такие люди принципиально не учатся перекрестным опылением, т.е. от своих коллег на проекте, потому у них не бывает коллег на проектах

Не в этой стране.

В этой стране его вообще нет. А то, что есть по цене оплаты за микроконтроллерное программирование.

Но если Mikhail Boiko нравится в nVidia, то может уже можно сказать что вместо «вообще нет», появилось «не очень много». Будем надеятся, что немного расшевелят рынок.

В этой стране эмбеддер — это дедушка «30 лет в профессии» из обшарпанного НИИ

Когда-то, если я видел в резюме свежие следы работы с 8051, то мог сказать приблизительно такое же:

Самое страшное — такие люди принципиально не учатся перекрестным опылением, т.е. от своих коллег на проекте, потому у них не бывает коллег на проектах

Замкнутая вещь в себе, без перспектив для развития и прочего. Слезть, конечно удавалось, но единицам, профдеформация была очень сильна.

Не спешите, в этой стране хватает и компаний, и продуктов, и денег, да и дедушки не такие уж и старые. Чего не хватает — кадров. Но отрасль весьма специфическая, это правда.

Ну у вас висят на линке вакансии (видео и система управления устройствами), но рекрутеры говорят, что в Киеве этих проектов нет. Лажа где-то.

Чего не хватает — кадров

Это из-за отсутствия денег. Когда, например, станет известно что платят 5-6К, то туда будут возвращаться и свитчаться много людей. А когда вилка 2-4К, то это заставляет рассматривать другие варианты и не учавствовать в рулетке.

В продуктовых компаниях для Senior/Lead вилка не 2-4. Эти вакансии не единичные. За последние 5 лет все сильно поменялось.

А сколько?

Про контрагента ответить не могу, по понятным причинам. Mellanox и Ring в 2017 свободно брали людей на 5K, некоторым предлагали sign-in bonus. Может был локальный всплеск, но случаи точно не анекдотичные. Знаю анекдотичные случаи подобных ЗП и в аутсорсерах, но там люди уровня Staff/Principal.

уровня Staff/Principal

Кстати, что это такое? Насколько помню, в ГлобалЛоджике были грейды, и вилка зарплат под каждый грейд. То есть, если тимлид 10 грейда, то зп у него 2500-3000, а если синьор 16 или 18 грейда, то зп будет 4500-6000. Условно. И вот если они хотят дорогого синьора, то он автоматом станет Принципом 18 грейда — так как меньшему званию не дадут такой зарплаты.

Это уровни, которые у нас часто принято упрощать до Technical Lead. Честно говоря, не знаю, какой это грейд. Привязка грейда к зарплате наверняка чисто техническая, т.к кастомера билят согласно твоего грейда и рейта в договоре. А вот конкретно твой грейд — предмет индивидуальной договоренности :)

Более чем уверен, что стоящие спецы подымают столько. Другой вопрос, что позиций таких немного,

Ну так вот ты и ответил что такого в этих цифрах. Они не дефолтные.

Например, в Оттаве были даже курьёзные случаи с новыми иммигрантами, которые проходили собеседование и просили 80-90К по незнанию и от дезы из гласдора. А им говорили, сорри, у нас нет таких зарплат, всё начинается со 100К. Компании абсолютно нет никакого смысла нанимать на зарплату ниже рынка с такими знаниями, ибо клиент свинтит через пол года, как только разберётся в реалиях. Так вот когда 5-6К станут дефолтовыми для человека с определённым скиллсетом, тогда можно говорить о правильной ориентации рынка.

Чего не хватает — кадров.

якщо дефіцит кадрів, то мали би бути заманювати космічними гонорарами

Денег там тоже нет. Ни денег ни соответственно кадров.

тоді чого плакати та жерти кактус.
«тренд май френд, тіл зе енд»
йдеш туди де хайп і бабки.

в яваскриииипт!
а потом появляются статьи типа: «зачем нам операционные системы? запустим все в кубетрнетсе или на клауде, оно там и так работает»

зачєм ЯС, можна Го / Руст і кріптошиза і шіткоени

Но платят же, native программирование, норм.

Заходить в эту область — не сильно перспективно, есть и получше.
Но если уже тут, то у каждого своя ситуация, тут общего совета дать невозможно.

Так и было, я у такого учился, с ассемблера и начинал для MCS51, но дедушка был продуктивным и очень много всего за свою жизнь сделал и вспоминал о своих успехах только с самоиронией, мы пошли дальше, и он делал малую долю, и основном делил проект на части, и раздавал работу 2-3 уже С-программистам, так что коллективная работа имела успех и обмен опытом присутствовал

не в цій країні,
тю, вже було написано нижче

Ну плюси знати варто, дуже багато що на плюсах зараз. Ну і лінукс, як ви самі написали, часто на співбесіді питають навіть більше по лінуксу ніж власне по програмуванню, якщо говорити про технічну співбесіду.
Мережі, по моєму досвіду, кожна друга Embedded, IoT вакансія вимагає знання мереж.

По компаніям, тим що представлені в Україні та займаються низькорівневою розробкою, найбільш топова це Ring, яка є підрозділом Амазону. Далі я б виділив Аякс, далі йдуть набагато менші, особисто я можу порадити Ezlo jobs.dou.ua/companies/ezlo працював там, було норм. Зараз бачу у них вакансії закриті, але напишіть, періодично відкриваються.

Ну і на великі аутсорсери іноді прилітає щось низькорівневе, треба активно моніторити і пододавати рекрутерок на лінці в друзі.

Embedded не сильно отличается от «обычного» программирования, никаких сакральных знаний он не содержит, но некоторые эмбеддеры считают что знание как настроить периферию по даташиту это что-то архисложное. Особенно если учесть что базовые вещи уже обычно написаны производителем SoC и нужно только всё собрать из кубиков.

Более того, западным компаниям не нужны люди которые могут и платы разводить, и прошивку писать, и корпус делать. Обычно этим занимаются отдельные команды и ротация не практикуется, особенно не практикуется работа сразу в нескольким командах..Безусловно, это не всегда так, но если такой человек и нужен, то его проще найти где-то в Китае, ближе к производству, в этой ситуации вы можете играть только ценой и только если заказчику не горит по срокам. Я это к тому что тащить дешёвого специалиста из Украины не имеет смысла, уникальной экспертизы нет, а платить нужно будет больше.

RTOS, Linux, Linux Kernel,

Это очень разные вещи.
Например знание Linux может означать что вы умеете работать в Linux окружении и вам не нужно объяснять как копировать и почему файлы из /tmp постоянно пропадают.
Или может подразумеваться что вам нужно будет писать какие-то userspace штуки, например ядро через интерфейс что-то выдает, вам это нужно как-то получить, обработать, сохранить в файл либо отправить на сервер. Т.е. нужно понимать какие интерфейсы с ядром бывают, как писать в файл и как работать с сетью.
Если же Linux Kernel, то там может быть совсем хардкор. Например у нас хотят активность в essential open-source kernel related проектах, которых на самом деле не так чтоб и много и куда не так чтоб и легко что-то запушить.

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

1. Достатньо резюме чи треба ще десь викладати свій код?

Если вы как специалист не будете вызывать вопросов, до достаточно резюме. Но будут смотреть всё и чем больше сможете показать, тем больше у вас будет «плюсиков».

Якщо мова йде про Linux, то може вже й мікроконтролери не доцільні і варто змінити абсолютно все?

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

но некоторые эмбеддеры считают что знание как настроить периферию по даташиту это что-то архисложное. Особенно если учесть что базовые вещи уже обычно написаны производителем SoC и нужно только всё собрать из кубиков.

На самом деле — нет. NXP, Renesas, TI делают PoC (Proof-Of-Concept) драйвера, например Renesas реализовал один режим из 4 для отображения разных слоёв картинок просто чтобы показать что так можно, при реальной эксплуатации и загрузкой восемью плейнами начинает появляться snow effects (memory underruns) и тогда ты сидишь со спецами из ренесаса и выворачиваешь железку наизнанку, чтобы удовлетворить запросы кастомера когда плейны надо успевать за 2 микросекунды, иначе опоздаешь к следующей генерации кадра. И таких ньюансов 100500 с каждым SoC. Я бы даже сказал, что это очень повезёт если кастомер удовлетворится дефолтовыми драйверами, обычно нет. Ну и архисложно — это тоже присутствует, например у TI есть внешний кеш контроллер между устройствами и SoC, и чтобы дойти до того, что с ним проблемы нужно потратить месяца в тщетных попытках наладить стабильную работу. Также по поводу кубиков — кубики хороши, но никто никогда не пробовал работать с полностью загруженной системой из кубиков по самые гланды, по факту кубики оказываются не совсем кубиками, а скорее цилиндриками и паралеллепипедиками, которые вместе не хотят работать и постоянно разваливаются.

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

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

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

nVidia в данном случае вообще нетипичный пример и я соглашусь что твой комментарий справедлив для nVidia, например, они не предоставляют даташиты на железо, но с другой стороны, например, для нашей ОС они делают вообще всё сами, что снимает много геморроя с нас, зато перекладывается на кастомера, ибо nVidia работает с кастомерами персонально по значимости кастомеров для бизнеса nVidia. Кто-то получает полную поддержку, а кто-то может только расчитывать на официальные обновления. NXP, Renesas, например, предоставляют всё и разработка идёт над базовой функциональностью совместно с ними, не базовая полностью на наших плечах. Intel даёт только лишь частичные спецификации, но зато они дают работающий образец кода по каждому из поднимаемых вопросов. Моделей много.

Ну либо пытаться додумать что возможно внутри оно устроено как-то вот так

Это однозначно no go. Нести ответственность за unsupportable code никто не хочет.

Зробіть профіль на Джині і побачите чи є інтерес не деанонімізовуючись)
У Львові є Cypress/Infineon, Dialog, Telink і ще трохи, де можна обійтись без лінукса.

3. що можна вивчити за три місяці щоб переключитись

К сожалению фантастика тут не рабоет. Но если перспектива:

хочу знайти роботу в серйозній іноземній компанії, щоб з рештою окрім роботи змінити і країну.

То придётся в себя инвестировать и не один год. Иначе будет тоже самое — с пяток компаний и тяжелый выбор между ними.

это понятно, да и глупо было бы вот так сразу, поэтому и спрашиваю, раньше я и знать не знал, что есть разница в оплате за программы для микроконтроллеров и другое ПО, делал устройства для заводов, не плохо получалось зарабатывать, — я так думал, только после регистрации на Linkedin, когда меня рекрутеры три года назад сразу собрались перевозить в Болгарию, оказалось, что мне английского не хватает, взялся за английский, кормился со старых проектов, а теперь смотрю шире и спрашиваю других что делать

user space linux:
* multithreading (pthread + theory)
* network (sockets, L3)
* IPC (shared memory, pipes, named mutexes)
* shell (basics, tools)
* gdb
* С++ (C with classes)
* Python
потом можно пробовать подаваться куда подряд на вакансии.
Вот есть чатик в телеграмме, там человек 40, можно поспрашивать детали t.me/embeddedkyiv

а DSP забув, той що ЦОС
а ще літкод подрочити півроку, так щоб від зубів відскакувало.
думаю план є на 5 років, щоб закритися в підвалі та те все осилити, щоб врешті решт отримати 3К5

Якщо безвідносно до специфіки ринку в Україні, то Python. Для тестів тих же embedded девайсів. Все інше вимагає більше часу.

За микроконтроллеры никогда не платили много. Поэтому да, самое прибыльное будущее в профессии за SoC системами. В отличии от микроконтроллеров периферия гораздо сложнее плюс необходимо досконально знать Linux, QNX или даже Андроид, не только ядра, но и сами системы. Порог вхождения чудовищен. В свое время я вернулся назад в embedded из линукс серверов и десктопа, где делал драйвера, поэтому было намного легче.

В отличии от микроконтроллеров периферия гораздо сложнее плюс необходимо досконально знать Linux, QNX или даже Андроид, не только ядра, но и сами системы. Порог вхождения чудовищен

Затраченные усилия хоть как-то отбиваются?

В Украине сейчас — не знаю, раньше не отбивалось. В Северной Америке — да

Подписаться на комментарии