Size: a a a

Maxwell's Demons

2021 August 25

TK

Timur Khasanshin in Maxwell's Demons
Ну, а я считаю он если и заметил такое, то неверно. Я могу расписать, но как я могу оценивать себя же по своей же линейке? Это бессмысленно, так можно хоть кем оказаться
источник

TK

Timur Khasanshin in Maxwell's Demons
я щас расписать попробую, если нужно
источник

l

linxuil in Maxwell's Demons
Нужно, да. А мы попробуем дополнить/изменить/обсудить
источник

TK

Timur Khasanshin in Maxwell's Demons
Че должен уметь синьор ембеддед прогер (по PCB потом напишу) :
1) облечь протокол передачи данных в другой протокол, в том числе самостоятельно разработанный
2) иметь воспроизводимый опыт работы с большинством популярных интерфейсов передачи данных
3) иметь воспроизводимый опыт решения большинства типовых задач при написании встроенного ПО
(Элементы управления, датчики, индикация и дисплеи с gui, обработка сигналов и логирование
4) разбираться в лицензиях на исходники
5) знать основы управления, ПИД и тд и уметь их применять так чтобы это можно было зарелизить, уметь бороться с некоторыми распространенными нелинейностями, если это технически реализуемо.
6) знать тот апи который использует, и уметь исправлять баги этого апи, знать как при необходимости зафигачить на регистрах, и знать когда возникает такая необходимость
7) работа с ртос, примитивами синхронизации и прочими фичами. Уметь раскидать функции устройства по таскам ртос
8) знать язык (С и С++, оба) на хорошем уровне
9) иметь представление о том как устроено ядро своего МК и его периферия на низком уровне, иметь опыт работы с 99% всего что есть в своём МК, понимать для чего оно, в каких случаях применять
10) немного знать асм своего мк
11) знать какие есть и как включить защиты от слива прошивки и иметь представление о реверсе, понимать по каким адресам что лежит, уметь модифицировать линкерскрипт и создавать свои секции в нем
12) уметь оценить сложность алгоритма, измерить быстроту его выполнения на выбранном МК, иметь опыт использования оптимизации О2/О3 и контрмер против "выкидывания нужного"
13) понимать как работает и зачем нужен стек и хип
14) уметь разработать архитектуру прошивки и логично скомпоновать по файлам исходный код, уметь вообразить работу устройства или узла целиком чтоб написать прошивку
15) проводить тестирование кода (не важно с помощью фреймворка или как то вручную, главное чтоб достигалось требуемое поведение прошивки)
16) иметь опыт работы с отладчиками, конвертерами интерфейсов, лог анализаторами, осциллом
17) уметь декомпозировать комплексные и плохо сформулированные задачи на простые и понятные
18) пользоваться разными видами дебага (uart, брекпоинты и тд)
19) уметь вести в гит проекты (не важно через гуй или консоль)
20) знать о том какие распространенные ошибки случаются не по вине софта а по вине платы, чтоб не гадать полдня почему не работает
21) иметь опыт написания бутлоадера, обновления прошивки
22) уметь самостоятельно формировать вопросы по уточнению ТЗ при нахождении неточности от которой зависит как будет написана прошивка
23) прикинуть приблизительные сроки на написание прошивки, закладывать резерв
источник

TK

Timur Khasanshin in Maxwell's Demons
Не все из этого я умею, но большинство
источник

TK

Timur Khasanshin in Maxwell's Demons
Было бы классно если это кто нибудь дополнит или покритикует, лучше аргументированно
источник

DL

Dima Leonov in Maxwell's Demons
9 пункт лишний, так как часто «свой мк» очень часто меняется на другой, и время на его изучение очень немного, тут больше ценно в сеньоре как раз гибкость и умение в жатые сроки запустить новую платформу сильно не вникая, как оно работает на низким уровне
источник

DL

Dima Leonov in Maxwell's Demons
Ну и 10 туда же, в современных реалиях асм очень редко используется в проектах и его знание очень редко коррелирует с успешностью прошивки
источник

AP

Anton Petrov in Maxwell's Demons
Больше похоже на сильного миддла, помидоры как будто должны строить архитектуру системы из множества устройств, формализовать их взаимодействия, раскидать задачи команде в соответствие с квалификацией, проверять их выполнение и писать самому наиболее сложные/ответственные куски
источник

AP

Anton Petrov in Maxwell's Demons
Т.е. то самое делегирование и руководство
источник

TK

Timur Khasanshin in Maxwell's Demons
Это тимлид, ну тогда получается это одно и то же что и тимлид?
источник

TK

Timur Khasanshin in Maxwell's Demons
Какое делегирование, какое руководство
источник

TK

Timur Khasanshin in Maxwell's Demons
Для чего менеджмент тогда?
источник

TK

Timur Khasanshin in Maxwell's Demons
Переключение контекста в своей ос, интринсики типа REVSH, RBIT, POPCOUNT я иногда пользую, их компиль ни в жизни не догадается воткнуть
источник

TK

Timur Khasanshin in Maxwell's Demons
Человек может 10 лет изучать какую то тему или расширять свои знания чтоб его просто отправили пинать джунов? Это очень тупо, пусть лучше кодревью делает, пишет что подправить и тд тогда уж
источник

AP

Anton Petrov in Maxwell's Demons
Это как иметь 6 разряд и быть бригадиром. Одно - уровень квалификации, а другое - должность
источник

AP

Anton Petrov in Maxwell's Demons
Хотя я может и не прав
источник

TK

Timur Khasanshin in Maxwell's Demons
Я думаю в небольших фирмах они просто вынуждены заниматься всем, потому что нехватка кадров
источник

AP

Anton Petrov in Maxwell's Demons
Может и так
источник

AK

Alexey Kharkov in Maxwell's Demons
Код ревью делать и говорить, что подправить, - это уже минимальный уровень менеджмента.
Не получится только делать код ревью и не общаться, при этом, с командой.

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