Михайлов Алексей Анатольевич @MinimumLaw
Linux Kernel, Bare metal, Embedded developer
Information
- Rating
- 2,992-nd
- Location
- Пушкин, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Embedded Software Engineer, Software Architect
Senior
From 350,000 ₽
Ну, преподобный Торвальдс точно не изучал "основы информатики и вычислительной техники" в поздне-советской школе. И да, даже там это было в двух старших классах (или раньше, но исключительно в виде кружков для тех, кому интересно). Стоит ли учить программированию с пяти лет... Если честно не знаю, но думаю что и не стоит. И всегда надо помнить - когда у тебя в руках молоток, все на свете кажется гвоздями. Потому даже если мне кажется, что программирование нужно всем и всегда, далеко не факт что это действительно так.
С появлением детей я перестал работать дома. Меня за работой редко видят. Мало того, что специфика работы удаленку не очень приветствует, так еще и работа заканчивается за дверьми офиса. Это принципиально. Баланс работы и личной жизни должен поддерживаться. Работа на работе и только.
Каждый сам себе злобный буратино. Каждому свое. Я своих не мучаю IT. Оно им не интересно. Во всяком случае, в части "как это сделано". Немного обидно, но это их дело.
Звучит как "Надо владеть скльпелем хирурга, ножом мясника, мечом война и уметь выращивать картофель". При чем желательно одновременно. Странный наборчик, на самом деле. Особенно для обучения детей.
Хм... Ну да, прямо классика. "Если вам показалось, что я выразился достаточно ясно, вы неверно меня поняли" (с) Алан Гринспен.
Я нисколько не пытаюсь приуменьшить заслуги других поколений (да, черт возьми - я воспитан Basic'ом). Но все это стало возможным ровно благодаря базе, которую создали именно те, кто спектрумы паял, выитуху по чердакам тянул и прочее. И да, у них папиного компа. По той простой причине, что даже если папа каким-то чудом мог себе его позволить, то он предпочел бы видеомагнитофон ВМ-12, или что-то такое.
МК-54 - это по сути assembler на минималках (даже больше - это почти прямое программирование в машинных кодах). Оно мало кому пригодилось, так чтоб вот совсем-совсем. Разве что embedder'ам (прошу прощения за англицизм, но по русски это еще более коряво). Ну, возможно еще механикам, строителям или кому-то похожему, но уже, безусловно, не с МК-54. В целом не самый бесполезный навык, но опять же - безусловно не всем нужный.
Забавно, но школьные "основы информатики и вычислительной техники" позднего Союза Советских, вместе с тем самым BASIC'ом породили целое поколение IT'шников. Ну, возможно, Logo можно включить сюда же. А все дальнейшие "улучшения" - от Pascal и C (включая Delphi, C++ Builder и даже Visual Basic), до прочих Scratch'ей и Python'ов в лучшем случае поколение "дельцов от IT". Все зависит от целей. Местами даже Assembler может оказаться очень хорошим выбором. Но если усреднять, для ВСЕХ школьников, по ВСЕЙ стране, в независимости от профориентации, то я бы, пожалуй, оставил BASIC. И пусть потом говорят, что он наглухо испорчен Basic'ом - кому надо будет, тот перешагнет. А все эти ООП и прочие радости - оставьте тем, кому это будет реально надо.
Так это по сути одна вселенная. Просто как обычно - дефицит высококвалифицированных низкооплачиваемых. Как результат - растим бабу ягу в своем коллективе. И джунов стараемся брать таких, которые в обморок не упадут при виде первой же задачи. И с мидлов начиаем по мидски прашивать спрашивать - а то на словах каждый Лев Толстой (сеньор), а на деле... ещё посмотреть надо. Да и с сеньорами - дутых хватает. И если когда-то с них хоть польза была - показать к чему стремиться, то чем хуже дела в целом, тем меньше от той пользы остается. Как по мне, так просто перекос в рынке исправляется.
А уж "больше не нужна команда из 10 человек, достаточно 2-3" - это точно не про ИИ, а исключительно про ошибки в планировании работ. Даже если ФОТ на треть урезать в таком случае, то каждый из оставшихся 2-3 должен вдвое больше зарабатывать. Другое дело, что так не происходит. По разным причинам, но в основном по тем, что эти 2-3 и без того весь проект тянули, получая не сильно больше остальных 7-8. Впрочем и это ровно про то же - про выравнивание рынка. И в целом, это скорее хорошо. Пусть лучше в курьеры идут за длинным рублем, чем в IT вкатываются. Больше пользу будет. Для всех.
Да уж... Даже к данной статье картинки - просто показательны. На подавляющем большинстве цыганский бубен. Что в целом, как раз и показывает всю цыганщину IT - все это красивые, но бесполезные предсказания, крышесносящие речетативы с обилием сленга, создающими видимость значительности происходящего.
Настоящий IT'щный бубен - он шаманский. Без всяких дурных побрякушек по бокам или дурацких надписей и наклеек. И это реально грозный инструмент, который как меч самурая - всегда должен быть рядом (даже если понадобится один раз в жизни). Году, наверное, в 2014-ом мы обзавелись бубном (конечно, мы не админы - скорее Embedder'ы - но и нам приходится строить взаимодействующие друг с другом и вышестоящими системы, с доступностью 24/7/365). Больше чем за 10 лет, применять его пришлось трижды. Раз схемотехникам - ну все, тупик - мысли кончились, решения не видно. Раз нам, программистам. Примерно в аналогичной ситуции. И раз когда переезжали. Благодарили духов на старом месте за помощь.
Бубен - грозное оружие. И должен быть использован исключительно против сильных соперников, с которыми никакими другими методами справиться нельзя. И его использование никогда бесследно не проходит. Если в одном месте (нерешаемая) проблема закрылась, значит где-то в другом другая проблема вылезет очень неожиданно и ее придется так или иначе решать. А если ты при малейшем шорохе за бубен хватаешься - так это показатель твоей силы. И бубен ее увеличить не поможет - только сам. Ну или не шаман ты, а цыган в худшем смысле этого слова. "Закручу-запутаю, деньги ваши - стали наши" - вот твой лозунг.
Да уж... Я, да на Хабре, да про бубны... Ладно, сегодня и здесь можно...
Например MAX6817 или ей подобные. Не сказать что их много, но и совсем не экзотика.
Защищаться от дребезга контактов с помощью RC-цепочки... Это не решение, а маскировка проблемы. Пока кнопка новая оно сработает, а после нескольких тысяч нажатий (в лучшем случае) начнутся проблемы...
В целом, есть аппаратные методы. Специализированные 3-5-и выводные супервизоры. Они очень хорошо работают. Но реально, софтовый метод (задержка чтения после срабатывания) при всем при этом самый надежный.
Нет, пожалуй стоит спрятать...
<САРКАЗМ>
Так вы и есть, тот самый студент, из ветки ниже, который браться за проекты уровня "РЛС с АФАР за пачку доширака" из ветки ниже?
</САРКАЗМ>
А если серьезно, то:
1. Мало иметь хорошее оборудование, надо уметь читать его результаты. И уж проблемы с настройкой PLL оно просто обязано было показать. Как минимум это доказательство того, что проблема не у схемотехников (если глазковая диаграмма красивая, а частота периодически барахлит). Собственно оно ровно за тем и надо. Только в идеале не "когда барахлит", а вообще всегда.
2. Жизнь заставляет работать в самых разных условиях. Нет, наверное, в России ни одной разрабатывающей конторы, полностью укомплектованной штатом контрольно-измерительного оборудования. Оно и в испытательных лабораториях не всегда присутствует. А что делать дальше - это опять не про технику. Можно плюнуть. Можно найти у кого есть. Можно (было?) с теми же R&S и прочими производителями договориться об аренде - ребята там в этом смысле вполне отличные. Короче говоря как всегда - проблему можно решить, если есть понимание того, что это важно. И у разработчика, и у работадателя.
Что до кабеля, глушащей что-то пятой гармоники, и многих других моментов - так это тоже не из пальца. Это реальные случаи из практики. И их таких было очень много. Я никогда не осуждаю коллег по цеху, и всегда исхожу из того, что в сложившихся условиях был сделан максимум из возможного. А видеть приходилось много и разного.
Хотя соглашусь - фразы в стиле "уважающий себя разработчик" пожалуй излишне критичны с моей стороны. Но что делать - так или иначе, а каждый о других судит по себе. Абсолютно ничего личного. Самое важное, чтоб отрасль как таковая жила, и по возможности развивалась.
Да, но вопрос - вы воткнули свой кабель со своим телевизором. Работает и не сбоит. Отлично - в продакшн(с)?
Дела в том, что у пользователя будет другой кабель. И другой монитор, а то и телевизор лохматых годов выпуска. И если вдруг его многократно чиненный говно-кабель работает с допотопным DVD плейером и странным телевизором из Великой Поднебесной, но срывает синхру с вашим мега-крутым изделием, то... С его позиции не работает ваш прибор. Это он не работает, так как должен, и как могут другие.
Как бы не хотелось крикнуть, что хреновое оборудование - это проблемы заказчика, но прав всегда потребитель. И единственнное, что может (и должен!) сделать уважающий себя разработчик - это убелиться в том, что его изделие не просто работает у него на столе, но и соответствует стандартам. И будет работать со всеми возможными кабелями, при всех возможных питаниях, во всех возможных условиях. Стандарты, собственно, ровно для того и пишутся.
Мне, как любителю хватает пары тестеров. Для домашней электрики, в машине поковыряться, и прочее, что делается сугубо для себя.
А вот мне, как профессионалу, нужно серьезное контрольное оборудование. Вернитесь выше по треду - все началось с того, что обсуждалась возможность удаленной РАБОТЫ. А это подразумевает профессиональную, а не любительскую деятельность. И мои тезисы не о том, можно ли что-то или нельзя любителю. Ему можно все (что кодексам не противоречит). Мои тезисы о профессиональной работе.
Опять же - сложившуюся практику мы вынесем за скобки. На такое положение вещей, как сейчас есть свои причины. Но в целом это не правильно. Но опять - это уже далеко за рамками данной статьи.
Хорощо, давайте грубо продолжим ваш расчет. 1,5 Гигабита при 24 битах и 60Гц развертки - ОК. Но это при 60Гц, а стандарт предусматривает 120 - таким образом уже 3. Но не 10. Конечно, потому что есть позабытое ныне 3D. А это столько на каждый глаз - и вот уже 6. А теперь вспомним, что есть HDR... Вообще просто почитайте спеки. Там все есть.
Ну и помимо этого - а вы можете назвать доступный любителю осцил, на котором можно уверенно смотреть фронты и джиттер у полуторагигабитного сигнала? Я так отстал от жизни, что сегодня это уже возможно? Это не говоря о той же PCIe, да хоть не четвертой, а третьей ревизии. Там того больше.
Если это удовлетворяет заказчика, то да. Но всегда есть риск через некоторое время получить интересный вопросик, типа "Слушай, у нас тут заказчик говорит, что наш модуль своим излучением на пятой гармонике им сигнал какой-то валит - надо что-то сделать." А мощность там не снизить - и так на пределе работало. Вот тут и начинается самое интересное...
Так что это работает. Но, к сожалению, не всегда. Впрочем как к сожалению - скорее к счастью. Ибо это та самая вилка - или в тех, кто наконец разбирается и перестает вслепую копировать решения (универсальные, а потому не оптимальные) из документации или сливается и пропадает с радаров плодя взаимную обиду.
Ну, за такие проекты точно браться не стоит. Их мы как раз вчерашним студентам оставим. Которые не понимают сложность, а потому готовы рвать и метать, доказывая всему миру что круче них только вареные яйца (и то, если варили достаточно долго). Но опять - это тема совсем другого разговора.
Давайте так - у вас на плате SOC. Уровня IMX8 от Freescale, чтоб совсем в сложное не лезть. И хотим джентельменский на сегодня набор интерфейсов - WiFi, Bt, HDMI, Дисплей хороший на MIPI, PCIe, SATA на всякий случай, и куда же без USB3 с PowerDelivery. Вы считаете разработку такой системы нишевой и узкоспециализированной? Ну может быть для вас оно и так. А для многих именно это суровая рутина.
Даже если беспроводка будет в виде съемных модулей (что в общем случае не всегда так - бывает что и она в виде микросхем делается, с внешними усилителями - и тогда EVM точно подлежит измерению и контролю). Но да ладно - а PCIe? А SATA? А MIPI? Если интерфейсы у нас не работают или работают нестабильно как мы поймем причину без контрольных приборов? А еще круче - все сразу заработало после сборки - отлично, но где гарантии что в другим модулем WiFi все работать будет? А они только в подтверждении качества путем прохода тестов. Т.е. мы должны быть уверены, что в допустимые интервалы наше решение укладывается (а лучше с максимальным запасом). И разработчик тут еще как при чем. Целостность сигналов - это его работа.
Я не буду спорить, просто скажу что в моей практике был случай, когда 1024x768 еще работал, а 1280x720... Тоже работал, но так что четко по любимой присказке - Если работает, но с проблемами - значит не работает совсем.
"Никогда не говори никогда" (с) Проблем зватает и с использованием интерфейсов. Есть великая разница между сделал и забыл, и сделал для использования другими людьми. Формально, даже поставив у себя на плате простую PHY, с встроенным в разъем трансформатором для Ethernet мы должны быть уверены в том, что соответствуем требованиям, предъявляемым в этим сетям. По всем параметрам. От допустимой длинны кабеля до перенапряжения и грозозащиты.
Та же ерунда с USB. И черт бы с ней с третьей и выше - со второй. Даже при возможности изготовить оснастку, которая в принципе описана - вопрос курицы и яйца. Или кто контролирует контроллеров. Как быть уверенным в том, что оснастка не врет? В любом случае нужен сторонний арбитр.
Домашняя лаборатория в этом очень плохой советчик. Впрочем, не спорю - можно не париться. Китайцы, в подавляющем большинстве, не парятся и ничего. Тут главное не впасть в тот путь, которым прикладное ПО пошло. Когда по сути тот же функционал начинает требовать кратных ресурсов. Т.е. по сути это уже вопросы инженерной этики и культуры. А это уже не технические, а человеческие качества. Их надо выносить за пределы данного разговора.
И да, безусловно есть проекты, которые можно сделать и в домашней мастерской. Никто с этим не спорит. Возможно, что их и реально большинство и они самые востребованные. Не уверен, но спорить не готов. А вот то, что они не очень интересны - это точно. Во всяком случае для тех, кто через эту планку уже перешагнул. Впрочем, эти люди и в простых проектах найдут грабли. С теми же катушками, конденсаторами и трассировкой цепей DC-DC преобразователей. И уж поверьте, работать с такими мне, как embedder'у, сильно проще и интереснее чем с остальными.
Нет, просто шашек давно в руках не держал. В специализированных САПРах все стало совсем по другому. Да, местами сильно проще, но если этим не заниматься, то... Одним словом теперь у меня рядом есть схемотехники-конструкторы. И мы коллективно творим. Собственно не только мы. Есть конструкторы-механики, есть прикладные программисты. Ну сложно, практически невозможно в современном мире быть Ленардо да Винчи.
Важно чтобы коммандный дух был. И цели общие. И ответственность каждого исполнителя (включая управленцев). Как бы пафосно это не звучало. Но серьезные вещи можно делать только так.
Это потому, что у вас гугл не на то обучен. Посмотрите. И да, радиосвязь тоже часть схемотехники. И готовые решения после сборки все равно должны сертифицироваться, потому измерения нужны.
Не хотите радиосвязь - не надо. Возьмите HDMI или MIPI и сделайте плату с ними. Тоже классно - 4K в HDMI - всего-то 18Гигабит. Но даже если опустим планку - FullHD - 10Гигабит. Сущая мелочь для китайского осцилографа, не находите?
Я же говорю - что-то можно сделать и дома. Но это очень малая часть, на самом деле. Как только хоть что-то посерьезнее и... Все, приехали... Или "от фонаря, методом проб и ошибок", или ищи то, чем это можно контролировать.
Я бы очень хотел посмотреть, как вы те же WiFi c Bluetoth одним только осцилографом (даже очень крутым и брендовым) отстраивать будете. Как EVM померяете на соответствие стандартам, как маски спектральные, как приемный тракт отстроите...
Короче серьезная схемотехника в домашней лаборатории не делается. Это просто факт. И никакие макетки тут не помогут. Да, "малую автоматизацию" можно, но это очень малая часть схемотехники.
Это не самые плохие сочетания, которые однозначно имеют право на жизнь. Схемотехник + конструктор плат сегодня жизненно необходимо. Как, впрочем, и не только сегодня. Иначе это не работа, а кошмар причем для обоих. Но конструктор плат, должен оставаться конструктором плат и не лезть в корпуса, кабели, разъемы и прочее. Иначе это попытка откусить излишне большой кусок, а она всегда заканчивается одинаково. Если и не подавишься, то уж удовольствия точно не получишь. А заниматься нелюбимой работой... То же про схемотехник + низкий уровень. Хорошее сочетание. Схемотехнику его полезно знать для написания тестов, embedder без схемотехники тоже никуда, но... Все же надо выбрать приоритет. Писать серьезный код надо не отвлекаясь на схемотехнику. Иначе что-то будет страдать. Хорошо, когда схемотехник кодом способен обосновать перед embedder'ом свое решение. Просто отлично. Как и embedder, способный с помощью приборов указать на сложные моменты в схемотехнике (привет гонки, дребезг и прочие радости). Но все же каждый должен быть занят своим делом. Я уже не смогу растрассировать не то, что DDR - скорее всего и с USB будут проблемы, но я знаю как это контролировать.
Как-то так с моей колокольни. Хорошо знать смежные области. Но серьезно заниматься надо одной.