Comments 57
Отчасти также играют роль стереотипы о перспективах и зарплатах в данной отрасли в России (особенно по сравнению с другими IT отраслями).
Так развенчайте эти стереотипы. Иначе, получается, это не стереотипы?
Так и не увидел, как именно вы "снижаете порог".
Вот ардуино снижает порог. Там люди делают устройства на микроконтроллере, не зная ни схемотехники, ни программирования (качество этих устройств и область их применения - отдельный вопрос).
А судя по статье, вы просто проводили занятия. Причем с людьми, которые, как вы пишете, уже знакомы со схемотехникой.
экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще. Главное, чтобы глючные либы от других таких же энтузиастов, не пересекались по таймерам и прерываниям. Вы посмотрите форумы ардуинщиков - там большинство советов по решению проблем в виде "возьми вот эту либу, у меня норм работает". Там не бывает так, чтобы люди обсуждали как линию задержки встроить на резисторах и кондерах, они обсуждают как бы при модифицированном таймере встроенную функцию delay() заюзать, с той же целью.
В итоге, в дополнение к куче людей, не знающих математику и javascript, но при этом успешно кодящих на Vue за полтос в месяц, теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа. Просто люди в 40 лет научились управлять электричеством в микросхемах в одну строчку, и пришли от этого в восторг, и почитали еще форумы, и поняли еще что-то сакральное, и пошли на хабр. фриланс, ну вы понимаете ага)
Не надо нам таких дебилов, хорош уже, утомили. Это тяжелая умственная работа для тех. у кого голова не отключается, и нужны некоторые врожденные навыки, которые нельзя получить, их можно только развить. Один из них - системное логическое мышление, которое "изнутри" не позволит проектировать микросхемы, не понимая как это надо делать.
Вопрос к автору: а у вас старых берут в стажеры? Ну типа вот один мой знакомый дожил до такой степени, что подумал, вполне логично будет спуститься на уровень еще ниже и начать учить HDL.
экосистема ардуино ДРАМАТИЧЕСКИ снижает порог вхождения в аппаратную разработку, не требуя для поделок среднего образования вообще.
Для мигания лампочкой - да. А если захочется накодить полётный контроллер для квадрокоптера или управление для ЧПУ - ну-ну.
теперь есть еще масса "аппаратных разработчиков", не понимающих, как UART и RS232 превращаются друг в друга, не знающих законы Ома и Кирхгофа
Если они успешно решают свои задачи - в чем проблема?
Если они успешно решают свои задачи - в чем проблема?
Прошу прощения, что влез. Надеюсь не помешаю.
Проблема в том, что они не решают свои задачи УСПЕШНО. Они их решают КАК МОГУТ. А людей, способных понять разницу между этими двумя решениями становится все меньше и меньше. Как результат падающая надежность изделия в целом. Которая компенсируется быстрой сменой моделей. И если для софтового мира это более или менее приемлемо - вопрос наличия администратора, который "накатит" свежий патчик или поставит самую современную версию ПО, то для мира железок (особенно промышленных с реально большим сроком эксплуатации) это прямой путь к гибели. На который (вынужденно?) вступает все больше и больше организаций-разработчиков.
Как результат падающая надежность изделия в целом. Которая компенсируется быстрой сменой моделей
Если железка успешно проработала 1 год - как Arduino сможет ей помешать проработать ещё 10 лет?
То самое "запланированное устаревание". Просто оно заложено не специально по научению маркетологов, а случайно - по причине недостаточности навыков правильного проектирования.
Ну то есть лампочка мигала себе 1 год, а на 2-й перестала, потому что внутри loop() ? O_o
Ну одного сдеградировавшего триггера может быть вполне достаточно
Да, потому как "для танго нужны двое". Ваш 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 не изнашивается
Неподготовленный человек справится с 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.
Ну по ссылке обсуждение не питона а Django, применением которого использование питона не исчерпывается совсем. Основное применение питона по числу использующих - это продвинутый калькулятор и то, для чего задумывались макросы в МС офисе да как-то не взлетели. А так работал я, например, в конторе где на PyQt работала GUI для общения с контроллерами и всяким низкоуровневым через TwinCAT. Поскольку у клиентов оно все работало на компах с виндой никто не догадался вести разработку под линуксом.
А синтез вы показываете? Если да - то как? Есть какой-то бесплатный синтезатор verilog и библиотека для примера? Может быть в какой-то FPGA?
Симуляторы чувствительны к версии линукса больше, чем этого хотелось бы. Часть симуляторов будет работать из коробки, однако другим могут потребоваться дополнительные библиотеки.
- Имя, сестра, имя!!!
Ну например, совсем старые версии modelsim'а любят искать сетевушки по именам типа 'eth%d', где %d подставляют от 0 до 9. Если у вас сетевушка не eth (например в ноуте только вафля) или тем паче у вас (якобы) "predictable interface names" -- кранты, лицуху даже ломанный не найдёт, потому что мак-адрес не узнает. Далее, не смотря на то, что он же тащит с собой кучу гуёвых либ, некоторые он всё же планирует найти в системе. И не всегда проблема решится созданием ещё одного симлинка с требуемым именем в системной дире. Иногда после такого новая либа просто свалится. Или не слинкуется нужная функция которой больше нет.
Тех студентов, кто успешно прошел летнюю программу и подошел под требования наших отделов (верификации, разработки и топологии), мы пригласили на собеседование в компанию. В итоге взяли на стажировку пятерых практикантов.
То есть желающие то были в большом количестве, но взяли только 5! И эти люди рассуждают о снижении порога. О нехватке специалистов. Может надо просто дать возможность начать учиться всём желающим?
5 человек мы приняли на стажировку- работу.
Из 14 кто проходил обучение/практику.
Коммунизм кончился в 1990м. Берут лучших, остальные увы, ищите дальше.
Сталкиваюсь тоже со стажерами - так у нас уже большая пачка мемчиков локальных есть. Эпичным было, например, когда половина группы под конец обучения без всякого предупреждения свалила, потому что один студент в группе где-то достал нахаляву конный тур, и раздал его собратьям - "работа подождет, там же халявные лошади". Или чел, который бухал страйк на обучении - "ну а чо, я в инсте так делаю, и ничо". Люди вроде и сообразительные по профе, но от них лучше сходу избавляться, ибо в силу своего поведения работать они не смогут эффективно.
Может надо посмотреть по каким критериям отбирают в стажёры?
Поведение невозможно отследить при наборе - там все хорошие и приличные. Институты тоже не горят желанием сообщать такую информацию, ибо в их интересах нагрузить студента помощнее, чтобы тот не разлагался морально от скуки, и не портил репутацию заведения.
Обучения/стажировки позволяют отсеивать не только глупых, но и безответственных товарищей с хулиганами.
Некоторые мысли для подумать по сокращению порогa входа студентов в микроэлектронику можно почерпнуть и в этом видео. :)
Языки программирования/Спецпроцессоры/Прототипирование компиляторов
https://rutube.ru/video/f7b141bed016036e7b208703a85842af/
Вот вам идея на миллион, что реально снизит порог входа. Рекрутинг 2.0, алгоритм:
Создать качественный роадмап. Реальная дорога к становлению разработчиком железа, а не список советов типа прочтите эти 10 книг и станете профи. Кому как не вам понимать, что нужно знать. Начиная со школьных знаний. Роадмап лучше даже как промо-сайт сделать. Как на roadmap.sh делают.
Напихать в этот роадмап чекпойнты (вехи).
Для каждого чекпойнта создать задание на ваших ресурсах. Не тесты какие-то, а реальное задание с четко обозначенным DoR. На каких-то этапах можно даже в гости приглашать, типа приходи, дадим железку, попробуешь.
На странице финального чекпойнта - предложить оффер с хорошим окладом (не по рынку, выше, по РЕАЛИЯМ ЖИЗНИ). Можно даже несколько офферов сделать для предыдущих чекпойнтов с более низкими окладами.
Ну и распространить этот роадмап везде, где получится. Только надо заранее проработать вопрос, что вам делать, если людей будет больше, чем вам надо. Отказывать финалистам потому что у вас нет мест - портить свою репутацию. Договоритесь с конкурентами. Или ассоциацию с ними создайте/войдите в существующую.
В итоге вы получите воронку специалистов по вашим критериям:
Самостоятельных (путь каждый желающий проходит в своем темпе)
Системно-мыслящих (вы же сами роадмап составляете, вот и заложите туда системность)
"Недорогих" (т.к. вы не тратите время на обучение, только разово - на проверки на чекпойнтах)
А также поймёте, на каких этапах роадмапа люди больше всего срезаются. Чтобы продумать меры поддержки, поощрения, помогающие пройти эти трудные участки пути. Только избегайте всякой херни, типа спама на почту: "вы уже почти смогли, поднажмите". Это не поддержка.
Из минусов - придется вначале потратиться, приложить усилия для разработки роадмапа и системы отслеживания и поддержки кандидатов.
Не благодарите)
На рынке разработчиков микроэлектроники катастрофическая нехватка кадров
здесь считают иначе:
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, выбивает из сферы десятки и сотни людей, которые бы потенциально могли решать базовые задачи, с последующим ростом компетенции.
Как мы снижаем порог входа студентов в микроэлектронику