Pull to refresh

Comments 57

Отчасти также играют роль стереотипы о перспективах и зарплатах в данной отрасли в России (особенно по сравнению с другими IT отраслями).

Так развенчайте эти стереотипы. Иначе, получается, это не стереотипы?

Так и не увидел, как именно вы "снижаете порог".

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

А судя по статье, вы просто проводили занятия. Причем с людьми, которые, как вы пишете, уже знакомы со схемотехникой.

экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще. Главное, чтобы глючные либы от других таких же энтузиастов, не пересекались по таймерам и прерываниям. Вы посмотрите форумы ардуинщиков - там большинство советов по решению проблем в виде "возьми вот эту либу, у меня норм работает". Там не бывает так, чтобы люди обсуждали как линию задержки встроить на резисторах и кондерах, они обсуждают как бы при модифицированном таймере встроенную функцию delay() заюзать, с той же целью.

В итоге, в дополнение к куче людей, не знающих математику и javascript, но при этом успешно кодящих на Vue за полтос в месяц, теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа. Просто люди в 40 лет научились управлять электричеством в микросхемах в одну строчку, и пришли от этого в восторг, и почитали еще форумы, и поняли еще что-то сакральное, и пошли на хабр. фриланс, ну вы понимаете ага)

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

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

экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще.

Для мигания лампочкой - да. А если захочется накодить полётный контроллер для квадрокоптера или управление для ЧПУ - ну-ну.

теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа

Если они успешно решают свои задачи - в чем проблема?

Если они успешно решают свои задачи - в чем проблема?

Прошу прощения, что влез. Надеюсь не помешаю.

Проблема в том, что они не решают свои задачи УСПЕШНО. Они их решают КАК МОГУТ. А людей, способных понять разницу между этими двумя решениями становится все меньше и меньше. Как результат падающая надежность изделия в целом. Которая компенсируется быстрой сменой моделей. И если для софтового мира это более или менее приемлемо - вопрос наличия администратора, который "накатит" свежий патчик или поставит самую современную версию ПО, то для мира железок (особенно промышленных с реально большим сроком эксплуатации) это прямой путь к гибели. На который (вынужденно?) вступает все больше и больше организаций-разработчиков.

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

Если железка успешно проработала 1 год - как Arduino сможет ей помешать проработать ещё 10 лет?

То самое "запланированное устаревание". Просто оно заложено не специально по научению маркетологов, а случайно - по причине недостаточности навыков правильного проектирования.

Ну то есть лампочка мигала себе 1 год, а на 2-й перестала, потому что внутри loop() ? O_o

Ну одного сдеградировавшего триггера может быть вполне достаточно

С чего ему деградировать? Не перегревайте и питание давайте согласно даташиту. То что деградирует (eeprom) - про это есть в даташите. Ну, не пишите туда без необходимости.

Да, потому как "для танго нужны двое". Ваш loop за год не поломается, а вот неправильно подобранный гасящий резистор вполне может "поломать" светодиод или даже выходной буфер порта, и как следствие изделие в целом. Статья ведь скорее про схемотехнику. Но все сказанное в отношении схемотехников ровно так же справедливо и к программистам. А уж если "косячат" оба...

А главное - а зачем для мигания лампочкой loop и вообще контроллер? Вам не кажется, что крайне удобно подбирать такие вот примеры. Давайте брать другое - когда надо что-то сделать и дождаться установки статус-бита. Куда как более типовая задача. Да не одна такая история, а несколько - что тоже типовая задача для контроллера. И в едином loop'е - все как вы любите... Тогда ситуация сразу разительно меняется...

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

Проблема в том, что они не решают свои задачи УСПЕШНО. Они их решают КАК МОГУТ. 

Природа так миллиарды лет делает, и всё вроде еще не развалилось /s

Все "тупиковые ветви эволюции" передают вам пламенный привет!

Тупиковые ветви эволюции - это чрезвычайно специализированные организмы, которые не смогли приспособиться к изменению условий. А в правильных условиях они весьма успешные.

Неверная аналогия подобна саблезубому тигру с дверцей.

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

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

Вот ардуино снижает порог.

Вот на самом деле очень хороший пример того, как очень классная идея превратилась в страшный яд для индустрии. Привет ДДТ - прямо вот один в один история. Изначально обучающий проект для школьников, оказавшийся настолько простым и понятным, что зацепил взрослых дядек, позволил им без специальной подготовки плодить заказные изделия, но при этом наглухо поломал все каноны, которые были в этой индустрии и породил "гонку вооружений" - т.е. погоню за частотой, объемами памяти и прочими делами. И ровно так же ситуация патовая - запретить нельзя (разработка встанет), продолжать можно - но граница уже очень четко видна и мы в нее так или иначе упремся.

Не мне судить что тут хорошо, что плохо. Я предпочту посмотреть как индустрия будет выходить из этой ситуации. Актуальное решение с HAL и RTOS вроде бы позволяет перевести острую фазу в хроническую. Но это именно смена фаз, а не лечение. Плюс ко всему пока и тут нет единого понимания что и как делать. Да и не решает это поставленные вопросы. Да, прикладным программистам, занятым каким-нить backend'ом на этот уровень уже можно опуститься в разумные сроки. Но найдется ли достаточное количество желающих? Неподготовленный человек справится с Arduino, но точно не осилит быстро HAL+RTOS. Вернее безусловно осилит, но нужно время. Люди старой закалки (где они еще остались) с трудом переходят на эту парадигму. Она им только мешает, создавая избыточную сложность и нагрузку на процессор.

Есть, безусловно, и альтернативы. Есть множество попыток сделать здесь C++. Как самостоятельно, так и связке с HAL/RTOS. На эту территорию заглядывает Rust. Есть здесь и скриптовые языки, типа того же MicroPython'а или даже Java. Но пока это очень малая часть от объемов рынка.

Ну и в чем подвох? Вместо вылизывания тактов на ассемблере - камень побольше, и в production? Так цена attiny13 и stm32f103 не настолько отличается, чтобы в это упарываться

Неподготовленный человек справится с Arduino, но точно не осилит быстро HAL+RTOS.

Будет нужно - осилит. Это проблема конкретного человека, и она решаемая. Если он справился выучить С, и научился вызывать 20 функций - почему бы не выучить ещё 50?

Так я ведь ровно про это же. Я не просто так упомянул дуст.

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

Дело не в "тактах на ассемблере", дело в подходе к решению задачи. Много ли есть людей, у которых нынче в коде внутри основного цикла только сброс сторожевого таймера и переход в режим пониженного потребления? А известное "... - и в продакшн" хорошо только в песне. Ну или если репутационные потери мы не считаем за потери в принципе.

экспоненциально растет с ростом количества задач.

О(e^N) наверное можно добиться,ихотя я не представляю как.

Много ли есть людей, у которых нынче в коде внутри основного цикла только сброс сторожевого таймера и переход в режим пониженного потребления?

А это необходимо всем и всегда?

Ну или если репутационные потери мы не считаем за потери в принципе.

Железка она или работает согласно ТЗ или нет Если работает - какие репутационные потери? Что заказано то и получено. Если не работает - зачем пустили в production?

А вы уверены в том, что ваши приемо-сдаточные тесты не просто проверяют железку на соответствие ТЗ здесь и сейчас, но и ГАРАНТИРУЮТ ее работоспособность в течении заявленного срока эксплуатации?

По всему остальному "всем и всегда" очень коварный термин. Разве необходимо "всем и всегда" пристегиваться в автомобиле или соблюдать скоростной режим? Есть наработанный багаж рекомендаций по созданию надежных и производительных систем. Да, это требует квалификации. Да, сейчас требования к квалификации размениваются на падение надежности и производительности. Я с этим ничего не могу сделать. Да, честно говоря, и не рвусь.

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

А вы уверены в том, что ваши приемо-сдаточные тесты не просто проверяют железку на соответствие ТЗ здесь и сейчас, но и ГАРАНТИРУЮТ ее работоспособность в течении заявленного срока эксплуатации?

Я уверен, что связи между наличием loop () и сроком эксплуатации нет. Процессор от выполнения loop не изнашивается

Согласен. Но он еще больше не изнашивается в режиме LPM. А еще и энергию экономит (а значит дольше работает от батарейки), остается более холодным. А в рабочем режиме быстрее реагирует на внешние события.

Неподготовленный человек справится с Arduino, но точно не осилит быстро HAL+RTOS.

Зато неподготовленному человеку (который не пользовался Arduino) будет гораздо проще. Ведь ему ничего не стоит изучить HAL+RTOS, а заодно прячущиеся за ними просто программирование, низкоуровневое программирование, схемотехнику, теорию создания ОС, кратенькое введение в построение микропроцессоров, и всё это в объёме, который обычно учат в ВУЗе всего за 5 лет, получая при этом на выходе инженера-системотехника. (конец сарказма).

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

Да! Именно так. Правда, по большому счету это никак не скажется на времени подготовки специалиста. Увы, в этом плане 5 лет института реально стоят хорошо если года специализированного обучения...

Пути, правда, могут быть разными. В целом, если специфичный язык ардуино использовать по назначению - т.е. для понимания присваиваний, ветвлений, концепции портов и подобный идей, то все отлично. Оно ровно для этого и создавалось и по этой части отлично работает. Куда как более правильно, чем тот же Scratch, а самое главное управляет объектами реального мира, а не нарисованными котиками.

Другое дело, что некоторое время назад говорили о "программистах, испорченных BASIC'ом". Теперь же в пору говорить о "программистах, испорченных Arduino". Самое веселое в том, что и то и другое утверждение по сути об одном и том же. И это, похоже, одно из фундаментальных ограничений именно обучающих языков. Для формирования правильных инженерных навыков критически важно вовремя от них отказаться, в пользу более низкоуровневых решений, которые могут тоже самое, и еще многое другое. А самое главное наглядно показать ту часть, которую в принципе невозможно сделать на Arduino, и показать ее важность и красоту.

А реализация более или менее серьезных рабочих проектов на Arduino - это скорее упражнение для развития ума уже состоявшегося инженера. Типа написания квайнов для программистов.

специфичный язык ардуино

C++ самый обычный. Что в нем специфичного?

Хм...

https://all-arduino.ru/programmirovanie-arduino/ - одна из первых ссылок в google. Ну хорошо, пусть это будет C++ с библиотеками. Но специфичность очень хорошо прочувствуется на том же сайте в уроках. Посудите сами - одна из ссылок с той страницы https://all-arduino.ru/arduino-dlya-nachinayushhih-urok-11-interfejs-i2c/ - это в самом деле код, готовый для промышленного применения? Даже если поверх "накрутить" обработку ошибок - сама идеология использования данного языка, как бы это помягче... А я неоднократно общался с теми, кто абсолютно уверен в том, что там не просто можно - только так и нужно. И это именно то, о чем я и говорил.

И да, BASIC для AVR тоже вполне себе присутствует, Например вот или вот. И стилистика написания кода там примерно такая же. К слову, а нет ли BASICа для, допустим, STM32?

специфичность очень хорошо прочувствуется на том же сайте в уроках

Ну, все вопросы к авторам уроков. Если они считают, что это не плюсы, а какой то отдельный язык - кто я такой чтобы с ними спорить? У меня и курсов своих нет, и gcc-avr я внутри Arduino IDE на помойке нашел.

это в самом деле код, готовый для промышленного применения?

Хз. А г-код, если он под rtos, он автоматически начинает цвести и пахнуть?

Я не считаю себя прогером, чисто по приколу юзаю rtos + esp idf. Потому что в Ардуино очень много ограничений, да и вообще никогда в нее не вникал. Разобраться в регистрах атмеги это пара дней всего. Вообще почекал что такое hal уж очень синонимичны все функции с ардуиной. по сути если человеку надо, он все изучит потому что столкнется с ограничениями, а если ламер, то вряд ли он когда-нибудь до производства вообще дойдет, поэтому не страшно

Очевидно ещё что просто выполняли свою работу, наверное и правда событие важное для отметки в публикации, впрочем тут половина или больше такого.

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

Можете не верить, но не все студенты сейчас горят желанием работать в непонятной консоли, когда рядом есть удобные «окна»

Непонятно, что мешает в Linux работать в "окнах". Их там даже есть на выбор. И даже есть те, в которых панели не прибиты гвоздями к определённому месту экрана.

на которых с тем же успехом можно изучить Python и SQL

Python? На Windows? Удобно? Это как в том анекдоте "выберите любые два"?

В культуре разработчиков микроэлектроники есть негласное правило, что тот, кто хочет, учится самостоятельно

Самостоятельная работа и самостоятельное изучение каких-то материалов, конечно, неотъемлемая часть процесса обучения. Но полностью самостоятельное обучение - всего лишь признак незрелости соответствующей отрасли.

Уже на старте возникает вопрос «Какой мне выбрать Linux?»

Почему нет готовых образов виртуальных машин, конфигов, скриптов, рецептов? Например, какой-нибудь конфиг к debian autoinstall с комментариями, чтобы возникший вопрос решился "одной кнопкой".

Python? На Windows? Удобно?

В чем проблема? pycharm кроссплатформенный, python тоже

В чем проблема? pycharm кроссплатформенный, python тоже

Для начала хотя бы в том, что cmd не юникодный по умолчанию.
А вообще на этот вопрос уже кто только не отвечал: https://stackoverflow.com/a/11338865/7584170

cmd не юникодный по умолчанию

А при чем тут изучение python?

А при чем тут изучение python?

Это зависит от того, что Вы понимаете под "изучение python". PyCharm + пара окон cmd для мониторинга логов, например, и Ваше обучение становится чуточку загадочнее.

Какая то загадочная техника изучения python ;) Ожидалось что словари в Windows как то не так работают.. Или символы иначе считаются.

Ожидалось что словари в Windows как то не так работают.. Или символы иначе считаются.

Так речь была исключительно про удобство, а не про то, что поведение меняется. :)
Сравните sudo apt-get install redis-server или прочитай мануал на официальном сайте что под Windows сперва установите WSL.

Простите, что такое redis server и каким боком он к изучению python? И что за сложносте в установке WSL?

Ну по ссылке обсуждение не питона а Django, применением которого использование питона не исчерпывается совсем. Основное применение питона по числу использующих - это продвинутый калькулятор и то, для чего задумывались макросы в МС офисе да как-то не взлетели. А так работал я, например, в конторе где на PyQt работала GUI для общения с контроллерами и всяким низкоуровневым через TwinCAT. Поскольку у клиентов оно все работало на компах с виндой никто не догадался вести разработку под линуксом.

А синтез вы показываете? Если да - то как? Есть какой-то бесплатный синтезатор verilog и библиотека для примера? Может быть в какой-то FPGA?

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

- Имя, сестра, имя!!!

Ну например, совсем старые версии modelsim'а любят искать сетевушки по именам типа 'eth%d', где %d подставляют от 0 до 9. Если у вас сетевушка не eth (например в ноуте только вафля) или тем паче у вас (якобы) "predictable interface names" -- кранты, лицуху даже ломанный не найдёт, потому что мак-адрес не узнает. Далее, не смотря на то, что он же тащит с собой кучу гуёвых либ, некоторые он всё же планирует найти в системе. И не всегда проблема решится созданием ещё одного симлинка с требуемым именем в системной дире. Иногда после такого новая либа просто свалится. Или не слинкуется нужная функция которой больше нет.

Тех студентов, кто успешно прошел летнюю программу и подошел под требования наших отделов (верификации, разработки и топологии), мы пригласили на собеседование в компанию. В итоге взяли на стажировку пятерых практикантов.

То есть желающие то были в большом количестве, но взяли только 5! И эти люди рассуждают о снижении порога. О нехватке специалистов. Может надо просто дать возможность начать учиться всём желающим?

5 человек мы приняли на стажировку- работу.

Из 14 кто проходил обучение/практику.

В рамках проекта «Больше чем старт» в нашу группу прошли отбор 14 человек.

ну да, перед отбором который прошли 5 человек, был отбор который прошли только 14 человек. Какой из порогов вы снижаете интересно.

Коммунизм кончился в 1990м. Берут лучших, остальные увы, ищите дальше.

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

Может надо посмотреть по каким критериям отбирают в стажёры?

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

Обучения/стажировки позволяют отсеивать не только глупых, но и безответственных товарищей с хулиганами.

Некоторые мысли для подумать по сокращению порогa входа студентов в микроэлектронику можно почерпнуть и в этом видео. :)
Языки программирования/Спецпроцессоры/Прототипирование компиляторов
https://rutube.ru/video/f7b141bed016036e7b208703a85842af/

Вот вам идея на миллион, что реально снизит порог входа. Рекрутинг 2.0, алгоритм:

  1. Создать качественный роадмап. Реальная дорога к становлению разработчиком железа, а не список советов типа прочтите эти 10 книг и станете профи. Кому как не вам понимать, что нужно знать. Начиная со школьных знаний. Роадмап лучше даже как промо-сайт сделать. Как на roadmap.sh делают.

  2. Напихать в этот роадмап чекпойнты (вехи).

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

  4. На странице финального чекпойнта - предложить оффер с хорошим окладом (не по рынку, выше, по РЕАЛИЯМ ЖИЗНИ). Можно даже несколько офферов сделать для предыдущих чекпойнтов с более низкими окладами.

  5. Ну и распространить этот роадмап везде, где получится. Только надо заранее проработать вопрос, что вам делать, если людей будет больше, чем вам надо. Отказывать финалистам потому что у вас нет мест - портить свою репутацию. Договоритесь с конкурентами. Или ассоциацию с ними создайте/войдите в существующую.

В итоге вы получите воронку специалистов по вашим критериям:

  • Самостоятельных (путь каждый желающий проходит в своем темпе)

  • Системно-мыслящих (вы же сами роадмап составляете, вот и заложите туда системность)

  • "Недорогих" (т.к. вы не тратите время на обучение, только разово - на проверки на чекпойнтах)

А также поймёте, на каких этапах роадмапа люди больше всего срезаются. Чтобы продумать меры поддержки, поощрения, помогающие пройти эти трудные участки пути. Только избегайте всякой херни, типа спама на почту: "вы уже почти смогли, поднажмите". Это не поддержка.

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

Не благодарите)

На рынке разработчиков микроэлектроники катастрофическая нехватка кадров

здесь считают иначе:
https://another-it.ru/2024/09/20/are-electronic-engineers-following-it-specialists/

Как разработчик железа, мы постоянно сталкиваемся с нехваткой разработчиков микроэлектроники

досыпьте в кормушку от 100 до 200% текущего дохода и нехватка резко сократится. я гарантирую это.

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

Другое дело, что в той парадигме, в которой существует современная Россия, они и не нужны. Уж в значимых количествах точно. Но это уже политика. А Хабр, как мы помним, не для политики. И не жалобная книга.

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

Это да.

Но это опять же к вопросе о парадигме. Ну, и ресурсах которое необходимо для того, чтобы среди желающих отобрать способных и превратить их в квалифицированные. Это тоже не силами "эффективного менеджера" и по щелчку пальцев.

а кто вам такую задачу поставил 'снизить порог входа' ? почему не попросили, скажем, научить всех желающих проектировать микросхемы? :)

спасибо в любом случае, хорошее дело делаете!

p. s. идея WebPeople о 'роадмапе' - совершено прпвильная.

а кто вам такую задачу поставил 'снизить порог входа' ?

кто-кто. работодатели разумеется. они любят когда за воротами очередь.

Ваша статья пестрит триггерами, историческое легаси тянется тяжёлым грузом, адекватной экосистемы разработки нет. То бишь человеку творящему что-то сложнее jk trigger придется изучить дистрибьютивы Linux, симуляторы, администрирование, накатывание совы на глобус, а уж только потом работать с низкоуровневой логикой. Я понимаю, человек должен быть хорошо развит во многих аспектах электроники, иметь особое системное мышление. Но отсутствие возможности хотя бы в примитивных возможностях пощупать эту сферу by plug And play, выбивает из сферы десятки и сотни людей, которые бы потенциально могли решать базовые задачи, с последующим ростом компетенции.

Sign up to leave a comment.