Боль разработчиков в текущих реалиях: как я нашёл решение

в 17:16, , рубрики: Закон Ома, молодые специалисты, поиск разработчика, Проблема в разработке, разработка электронных устройств

Я инженер, занимающейся разработкой электронных устройств.

Мне кажется, что каждый кто с этим связан поймет, что это подразумевает, а значит может смело пропустить следующие 3–4 абзаца. Если никогда не сталкивались, то для понимания я немного расширю вводные:

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

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

Боль разработчиков в текущих реалиях: как я нашёл решение - 1

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

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

Мы инженеры и это наша реальность. 

То самое место, спустя 3-4 абзаца…

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

И как нам это делать? Что нужно, чтобы выполнять все то, что нужно здесь и сейчас? Ответ банальный – больше инженеров. Это очевидный вывод, который приходит всем на ум.

Где же их взять сейчас? Вот прям в моменте подготовленных, обученных и способных? Учитывая, что опытные специалисты старшего поколения уже уходят на пенсию и их не так много, специалисты выпуска 1990 – 2000 годов ушли из профессии в свое время по другим причинам. Вот и открывается выбор исключительно из современных, молодых инженеров, только что выпущенных из технических институтов.

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

Новейшее поколение инженеров, что можно о нем сказать? Нужно понимать, что их путь обучения начался со сдачи ЕГЭ, затем продолжился в институтах, откуда большая часть преподавателей «старой гвардии» к тому моменту уже ушла. Программы обучения уже успели поменяться так, что практических навыков получить большинству обучаемых не удалось совсем или удалось, но недостаточно для дальнейшей работы инженера. Стоит не забывать, что у многих несколько лет обучения попали на период эпидемии Covid-19, когда обучение было полностью дистанционное. 

И вот мы здесь, но в текущую реальность мы «окунались» постепенно, а не скачком, по крайней мере лично я.

Впервые я с этим столкнулся в 2016 году, когда «наша реальность» уже сказывалась, но не так «больно», как сейчас (все перечисленное начало сказываться на разработке). Было несколько проектов с которыми была необходима помощь и встал вопрос о найме молодых специалистов и тут возник тот самый вопрос: «Где их взять, когда их брать и кого именно?».

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

И как нам разработчикам понять кто из молодых специалистов этого на самом деле хочет? В кого инвестировать свой ресурс и время, несмотря на «пожары» в собственных проектах? Цель, естественно, корыстная: обучить себе напарника, равного специалиста, который в итоге станет полноценным участником группы разработки и сможет взять на себя некоторый объем задач, тем самым решая нашу общую проблему. 

Так вот, не далекий 2016 год - я сам еще являлся студентом старшего курса с обязательной педагогической практикой (помимо этого уже работал по специальности), которая подразумевала проведение семинаров и лабораторных работ. Сообразив, что это прекрасный способ не только выполнять обязанности в преподавании, но и отмечать для себя талантливых молодых специалистов в которых я могу инвестировать свое время и силы, я взял один курс на постоянной основе (благо такая возможность была). Таким образом, в конце первого учебного года в роли преподавателя я отметил для себя трех талантливых студентов, которые завершили 3-й курс и должны были выйти на практику, чем я и воспользовался. Практику проходили естественно в компании, где я работал и по результатам практики все были трудоустроены ко мне в команду уже летом 2017 года. 

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

Боль разработчиков в текущих реалиях: как я нашёл решение - 2

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

Также я понимаю, что у большинства разработчиков, работающих в профильных компаниях, существует отдел кадров, который как раз и проводит собеседования потенциальных наших коллег, но проходят эти собеседования весьма своеобразно и не однозначно. Хочу лишь подчеркнуть, что я понимаю, что существует отдел кадров, сотрудники которого найдут целый список потенциальных кандидатов, НО, есть большое но…. Отдел кадров может их найти, может провести первую встречу, но каким бы опытным и талантливым специалист отдела кадров не был он не сможет найти и определить талантливого инженера под узкую специальность (которых на текущий момент далеко не мало). 

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

Другими словами, тоже не лучший вариант (конечно, если вы удачливый и найдете себе в течение первых 10 собеседований идеального напарника, то вариант не плохой, но обычно нам нужен вовсе не один инженер).

Время шло, «наша реальность» становилась все глубже и относительно недавно я посмотрел на все это с другой стороны. 

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

  • Молодые специалисты без практического опыта и без понимания;

  • Завышенные ожидания, так как работа разработчика в последние годы стала востребованной;

  • В текущих реалиях каждый второй с красным дипломом и в глазах специалиста отдела кадров идеальный кандидат;

  • Бесполезно давать тестовые задания, потому что умеют пользоваться нейросетью;

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

  • Как другому инженеру понять в кого из них инвестировать свое время для подготовки напарника;

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

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

Я РЕШИЛ СДЕЛАТЬ УСТРОЙСТВО, КОТОРОЕ СОЗДАСТ РАЗРАБОТЧИКА, ну или по крайней мере определит и подсветит мне его.

Итак, апрель 2024 года, я работаю в достаточно большой компании с новыми амбициозными идеями и открытием новых направлений разработки. Естественно, нужны люди, нужны разработчики, есть отдел кадров, которому нужна помощь в подборе ТЕХ САМЫХ разработчиков.

 Каждый день по дороге домой я обдумываю какое устройство мне сделать, как оно должно выглядеть, какой функционал в него заложить. По итогу обратился к самому себе: «Что на собеседовании у меня вызовет удивление, восторг и убедит связать свою жизнь именно с разработкой и именно с этой компанией?». Задав себе этот вопрос, я вспомнил времена, когда выбирал в какой институт пойти учиться (что меня завлекало на каждой кафедре), также вспомнились детские увлечения (любовь к конструктору с винтами и гайками), как я учился паять простые схемы по старым журналам (а потом искать ошибку). 

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

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

Пришел домой, начал придумывать принципиальную схему, но уже с конкретной целью, начал определять какие части схем заложить на стенд, а там, как вы понимаете, вариантов не мало. Изначально думал спроектировать ряд типовых маломощных преобразователей типа Buck, Boost, Flyback на ШИМ - контроллерах (интерфейсы связи не планировал закладывать, а без кода будет проще и быстрее). 

Ага, как же… это было бы нормальной идеей, если бы молодой специалист, пришедший на собеседование, заранее изучил бы datasheet на эти контроллеры и понимал бы принцип работы. Понимая, что это задачка «со звездочкой» я решил обратиться к опыту преподавания (когда все вертелось вокруг закона Ома, законах Кирхгофа и законе сохранения энергии) и пришел к выводу, что первое устройство должно быть не просто простым, а скорее базовым. Так называемый «входной билет» в специальность, если молодой специалист понимает основу основ, то остальному мы научим.

Начал переделывать схему, отметая вообще всю преобразовательную тематику, цифровую схемотехнику и все что касается управления на микроконтроллере. Круг потенциально подходящих схемотехнических узлов сузился. Была идея заложить несколько схем с датчиками напряжения и датчиками тока, например, «токовое зеркало», дифференциальный усилитель на ОУ, идеальный выпрямитель на ОУ, но я вовремя понял, что даже если молодой специалист справится с этим, то это мало завлечет его, нужно что-то интерактивное, со свистом и лампочкой, желательно на пружинке (ПК же сейчас так и делают, везде засунут по лампочке, а значит это завлекает). 

В итоге спроектировал схему платы, на которой заложил четыре независимые схемы, которые, если собрать правильно будет светиться светодиод, а в итоговой пятой заработает вентилятор. Также добавил несколько промежуточных точек с светодиодом, чтобы была возможность разбивать одну схему на части. Основные функциональные узлы оставил резистивные делители напряжения, несколько электромагнитных реле, добавил повторители на ОУ и компараторы. По сути, для платы нужно знать закон Ома и руководствоваться правилом, которое знает каждый студент – «Ток не дурак».

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

Выглядело это так:

 

Боль разработчиков в текущих реалиях: как я нашёл решение - 3
Боль разработчиков в текущих реалиях: как я нашёл решение - 4

Плату сделал двухсторонней и в 2 слоя, чтобы максимально унифицировать – либо это сборка из резисторов 2512 последовательно-параллельно, где что запаяю такой номинал и будет, либо светодиод/диод/предохранитель. Для установки на плату без использования пайки решил заложить разъемы PLS для удобства и простоты, понимаю сейчас, что можно было заложить много чего другого, но тогда я торопился все заказать до майских праздников и лучше идеи не было.

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

Боль разработчиков в текущих реалиях: как я нашёл решение - 5

 

Закрыть обратную сторону с контактами, чтобы они не царапали стол или не давали лишний контакт, решил еще одним слоем текстолита, создав некий «бутерброд», стянув их нейлоновыми стойками через винты, что смотрится достаточно эстетично.

С точки зрения подключения платы к питанию заложил покупной внешний источник питания на 12В или подключение сети 220/230В с размещением трансформатора и выпрямителя на плате (к этой глупой ошибке еще вернусь). 

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

Боль разработчиков в текущих реалиях: как я нашёл решение - 6

Пока я ожидал производство текстолитовых плат и поставку комплектующих естественно уже думал, как это все буду паять и не ошибся ли я где-то. Уже пошло то самое «инженерное», что можно было бы сделать лучше, надо было еще вот это, вон то и конечно вот так…. За несколько дней до наступления майских праздников я получил все необходимое для монтажа и начался уже другой процесс.

Боль разработчиков в текущих реалиях: как я нашёл решение - 7
Боль разработчиков в текущих реалиях: как я нашёл решение - 8

Наступили майские праздники 2024 года, у меня были все комплектующие, все платы и неостановимое желание проверить что же получилось. Процесс оказался не быстрым. Основную плату я смонтировал достаточно быстро, там не много компонентов, мелочи никакой не было, а вот мелкие платы с компонентами потребовало гораздо больше времени. Это вызвано было тем, что нужно было их отмыть после пайки, а никакой ультразвуковой ванны дома у меня нет и делал я это по бытовому – ватными палочками и старой зубной щеткой (жидкость для отмывки была даже на выбор). 

Монтировать мелкие платы было монотонным занятием, поэтому делал это параллельно с фильмами на заднем фоне. В тему услышал фразу из Звездных войн «Двести тысяч подразделений готовы и еще миллион на подходе». Да, тогда казалось это именно так. А делать я решил и синюю и черную плату, поэтому большую часть времени заняло именно это.

Боль разработчиков в текущих реалиях: как я нашёл решение - 9
Боль разработчиков в текущих реалиях: как я нашёл решение - 10
Боль разработчиков в текущих реалиях: как я нашёл решение - 11
Боль разработчиков в текущих реалиях: как я нашёл решение - 12
Боль разработчиков в текущих реалиях: как я нашёл решение - 13
Боль разработчиков в текущих реалиях: как я нашёл решение - 14

И когда я был уже на финальном этапе меня посетила очередная мысль: «А не интересней ли будет не собирать рабочую схему, а пойти от обратного?». Что если предложить молодому специалисту не собрать непонятную схему, а наоборот самому предварительно собрать схему, но заложив туда ряд ошибок таким образом, чтобы ни один светодиод не светился, вентилятор не работал (гудел, но не крутился из-за недостаточного значения тока и напряжения). Ведь при таком подходе молодому специалисту будет интересней, необходимо «голову включить», готового ответа в интернете не найдешь, а с учетом вариативности для каждого можно заложить свои ошибки!

Я посчитал это прекрасной идеей и после этого появилось и название для этого стенда – Error board. Осталось только наделать еще мелких плат, условно «лишних», благо я заказал всего с запасом и наделал перемычек, «обрывов», плат без компонентов и много всего другого.

Первой собранной платой был синий Error board, который настало время включить и проверять.

Боль разработчиков в текущих реалиях: как я нашёл решение - 15
Боль разработчиков в текущих реалиях: как я нашёл решение - 16
Боль разработчиков в текущих реалиях: как я нашёл решение - 17

 

Боль разработчиков в текущих реалиях: как я нашёл решение - 18

И вот после подключения источника в 12В и переключения всех переключателей все работает, заложенные ошибки тоже все «не работали» как надо. Но как я говорил ранее – ни одно устройство не запускается как надо и связано это было с тем, что я заложил подключение 220/230 В. Я делал это для создания устройства, которое рассчитано на молодых специалистов и студентов, а какой у них допуск для работы с 220/230? Никакого, поэтому по-хорошему никого из них к стенду не подпустят. Пришлось думать, как выходить из положения, не делая «дикобраза», повезло что я проектировал именно «бутерброд» из плат и между ними было место и доступ к контактам. Я пере коммутировал схему на обратной стороне проводами, чтобы не перебивать и не резать основные дорожки и оставил работу исключительно от внешнего блока 12В, с точки зрения остального функционала – все работало как надо. 

Боль разработчиков в текущих реалиях: как я нашёл решение - 19
Боль разработчиков в текущих реалиях: как я нашёл решение - 20

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

Результат превзошёл все мои ожидания! Мало того, что в отделе разработки у меня «отобрали» устройство, начали его вертеть, изучать и сыпать вопросами что за плата, что делает, а чего не работает, от чего питается и т. д. так после того, когда узнали, что это будет – почти каждый прошел это тестирование (каждый достал свой мультиметр, взял распечатку схемы, где нет номиналов компонентов и засел с платой). Было очень приятно смотреть на это, получить обратную связь с дельными замечаниями и советами (которые в дальнейшем учту), но самое важное и главное – у всех «горели» глаза, когда они копались с платой! Это именно то, что мне нужно было проверить.

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

Но были и те, о которых я говорил ранее, именно те, которых я искал – молодые специалисты, сидя на собеседовании и волнительным голосом робко рассказывали «немного о себе» кардинально преображались, увидев на столе перед собой Error board и предложение найти и устранить ошибки на ней. В эти моменты со стороны видно, как он «загорелся» и увлечен, он уже не волновался о том, кем ему надо быть через пять лет, потому что я, увидев это, уже знал ответ.

В заключение могу добавить, что применение Error board нашли на разных мероприятиях, посвящённых студентам и выпускникам, которые собирали вокруг себя не мало заинтересованных людей. Я же благодаря такому подходу к осени 2024 получил в команду двух молодых специалистов с горящими глазами, которые работают в нашей команде и уже способны забрать на себя часть задач, а скоро будут самостоятельно вести проекты.

Это история была о том, как я создал простое устройство, которое создает нам разработчиков.

Боль разработчиков в текущих реалиях: как я нашёл решение - 21

Автор: gorick911

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js