Эволюция требований к разработчикам САПР
Моя работа на протяжении долгого времени связана с людьми, точнее сказать с их развитием, как личным, так и карьерным. Сегодня я работаю в компании C3D Labs – разработчике геометрического ядра, на позиции People Partner. В статье мы поговорим о рынке труда математиков-разработчиков в России именно в САПР-индустрии (САПР — системы автоматизированного проектирования), о том, какие темы интересуют действующих сотрудников и какие требования существуют к потенциальным кандидатам.
По моим наблюдениям, карьерные вопросы, которые сейчас интересуют программистов, можно разделить на следующие группы:
как стать сеньором, тимлидом и экспертом;
как вырасти и перейти на новый профессиональный уровень — что для этого нужно;
мягкие навыки, или софт скилс, как ключевой фактор в достижении новой роли.
Я хочу поделиться своими мыслями и опытом по поводу роли HR в этих процессах, может ли специалист по персоналу быть реальным помощником в развитии карьеры?
Начнем с обсуждения трендов в ИТ-индустрии: что сегодня происходит на рынке разработки?
Немного статистики из открытых источников: в мире насчитывается около 30-ти миллионов человек, которые занимаются разработкой, т.е. каждый 260-ый человек в мире. Российские эксперты считают, что в нашей стране разработкой занимается около 1,5 млн человек, т.е. каждый 100-ый.
Это говорит нам о том, какое огромное количество людей вовлечены в процесс разработки. Несмотря на то, что количество программистов в России больше, чем в среднем по миру, изучать и практиковать программирование все равно остается очень популярным направлением в нашей стране. Хочется отметить, что эта популярность не просто модный тренд, у нее есть твердые основания - у компаний высокий уровень потребности в разработчиках. Это вызвано тем, что:
компании проводят цифровую трансформацию (цифровизацию), используют новые технологии и автоматизируют свои бизнес-процессы;
создаются новые направления в разработке программного обеспечения, связанные с развитием искусственного интеллекта, блокчейна, интернета вещей и других технологий.
ВЫВОДЫ:
количество разработчиков будет только расти, и к ним будут предъявляться еще большие требования;
сами продукты будут усложняться, в том числе за счет применения новых технологий и в соответствии с требованиями конечного потребителя;
сложные процессы гораздо эффективнее строить за счет командной работы, поэтому тренд на развитие soft skills сохраняется и усиливается.
WOW- тренд на рынке
Количество разработчиков растет во всех сферах, и одним из лидирующих направлений является рынок инженерного программного обеспечения. Российский тренд на импортозамещение диктует требования по реализации сложных инженерных решений на высоком уровне и в кратчайшие сроки, что влияет на развитие САПР-индустрии на локальном уровне. Все больше промышленных и ИТ-компаний стремятся нанимать в штат разработчиков, которые умеют создавать геометрические модели и/или использовать геометрическое ядро внутри своей компании для создания собственных САПР-систем.
Сфера САПР выходит на первый план, т.к. позволяет существенно влиять на бизнес и его конкурентоспособность за счет:
широкого спектра применения в различных отраслях (авиастроение, ОПК, автомобилестроение, машиностроение, строительство и т.д.);
увеличения производительности и точности проектирования;
увеличения эффективности – позволяет работать одновременно над одним проектом нескольким специалистам.
Требования к разработчикам
Разработчиков, которые проходят собеседования в компанию C3D Labs, можно разделить по уровню компетенций на следующие категории:
Middle/Middle+ специалисты – те, кто уже имеет опыт работы в разработке (в среднем от 3 до 6 лет), уже имеют опыт работы с CAD-системами или пришли его получить;
Junior специалисты – те, кто только начинает карьеру после учебы в университете или джоб-свитчер (тренд современного рынка труда - смена профессии в зрелом возрасте);
cпециалисты уровня Senior/Expert/Team lead – те, кто уже имеет опыт разработки CAD систем (более 6 лет).
Каждая категория специалистов имеет свою специфику (поговорим об этом отдельно). Есть то, что объединяет эти типы – фундаментальные требования к кандидатам любого уровня в разработку геометрического ядра, например: крепкая математическая база, наличие алгоритмической подготовки, знание языка C++.
Чаще всего математики-программисты — это представители естественно-научных факультетов (мехмат, ВМК, физфак), где особое внимание уделяется изучению таких дисциплин, как математический анализ, линейная алгебра, аналитическая геометрия, дифференциальная геометрия, численные методы.
Middle/Middle+
Если говорить о программировании, то требования к уровню Middle/Middle+ следующие:
доскональное знание основ C++ (для большинства позиций это C++ от 14-го стандарта и новее). Изучение языков — непрерывный процесс, и знать буквально все скорее невозможно, поэтому в первую очередь мы обращаем внимание на доскональное знание основ (термины, понятия, инструменты). Для проверки этого навыка на собеседовании мы практикуем чтение кода кандидатом и умение понять и объяснить, что описывает код, почему код написан именно так;
уверенное знание библиотеки STL;
уверенное владение инструментами – Visual Studio, Visual Studio Code, CMake;
интерес и практика изучения других языков, например, мы также используем- Python, C#, Go, JavaScript (или его диалекты типа typescript);
для веб-разработки ключевыми являются знания в области typescript, опыт работы с npm, webpack, опыт разработки многопоточных приложений;
опыт CodeReview.
Знание двух языков программирования – первого, как основного рабочего, и второго на среднем уровне — позволяет расширить пространство решений при описании алгоритмов, что делает код более чистым, согласованным и практически применимым.
Умение отличать хороший код от плохого, иметь навык писать качественный и поддерживаемый код, понимать процессы тестирования (его основные функции и ценности) и восприятие написания тестов как неотъемлемой части работы программиста – это то, что усиливает позиции кандидатов уровня Middle и приближает их дальнейшему профессиональному росту.
Junior
Ключевым критерием для молодых специалистов является непоколебимый интерес к практике программирования. Важно любить то, что делаешь. Другими словами, надо любить программирование до мозга костей.
Недостаточно просто читать книги, нужно кодить на любых языках, в которых есть возможность это делать. К сожалению, у джунов нет возможности получать реальную практику во время обучения. На собеседованиях с потенциальными кандидатами мы видим, как сложно приходится молодым людям, когда мы задаем вопросы про основы языка программирования или математику. В университетах дают теоретические знания, а практической части не хватает. Все что я могу посоветовать джунам – максимально проявлять активность, в том числе и в университете.
Существует огромное количество хакатонов и стажировок, которые в том числе проводит и наша компания. В таких мероприятиях нужно участвовать даже не с целью выиграть (хотя такая цель всегда должна быть), а с целью получения опыта. В любой стажировке участвует Senior или уверенный Middle, который курирует мероприятие, и он может дать реальную обратную связь. Нужно принимать участие в студенческих активностях, чтобы видеть реальные проекты, которые созданы для реальных целей развития САПР продуктов. Для нашей деятельности знать теоретическую часть мало, очень важно иметь практический опыт работы с кодом и ядром.
Посмотрим на обратную сторону этой начинающей позиции программиста. Цель работы с джунами - обеспечить быстрый и качественный профессиональный рост специалиста. В компании C3D Labs мы наращиваем опыт в этой сфере путем составления программ адаптации и развития навыков молодых специалистов, внедрили систему наставничества и пересмотра (декомпозиции) первичных задач.
Мы не рекомендуем брать джунов, когда команда зажата в жесткие сроки, когда нет свободных наставников или достаточного количества времени, чтобы уделять внимание молодым специалистам. Иначе есть шанс сорвать сроки проекта или потерять подающего надежды специалиста.
Благодаря нашему опыту с молодыми специалистами, мы поняли, что джуны очень помогают компании, когда:
в команде есть человек, который хочет расти в тимлиды – опыт делегирования и обучения молодых специалистов промышленному программированию помогает еще глубже понять процессы, упаковать знания и развить soft skills;
в проекте много несложных задач и опытные коллеги скучают. Такое бывает, мы не каждый день пишем код с нуля, есть работа с ошибками, багами. Именно в этот момент эксперты отдела могут взять на себя работу с молодыми программистами.
Senior
Со временем каждый Middle специалист задается вопросом – какие навыки и знания необходимо наработать для уровня Senior? По опыту работы в нашей компании, чтобы претендовать на эту роль, необходимо отвечать требованиям:
обладать навыками Middle/Middle+ - быть трендмейкером;
знать язык C++ 20 и выше, шаблоны, многопоточность – изучать новые версии языка;
иметь навык развития проектов, внедрения новых технологий и архитектур систем.
Как распознать и проверить у себя наличие навыков Senior специалиста? У специалиста этого уровня есть отличительные качества в поведении внутри команды. Что делает Senior:
предлагает решения высокоуровневых фич;
участвует в декомпозиции работ;
управляет качеством продукта;
выступает спикером;
является наставником;
является техническим лидером в процессе стажировок для студентов;
отличный парень, с кем можно поговорить и кому можно довериться.
При переходе на эту ступень карьеры важно иметь ориентиры, которые помогут в будущем. Важно прокачать свое отношение к написанию кода и его проектированию. Senior очень внимателен и требователен к коду, он заботиться о его чистоте, сопровождении, архитектурной логичности, тестируемости. Он задает планку, как будут сделаны работы над проектом. Очень важно уметь разбираться в сфере деятельности компании и индустрии в целом. Не переставать углубляться в знания и помнить, что предела этому процессу нет.
Я хочу дать несколько «вредных» советов будущим Senior специалистам и экспертам в области программирования САПР:
читайте много специализированной литературы о том, как проектировать архитектуру и писать качественный код;
читайте чужой качественный код – вы можете увидеть другие возможности программирования;
изучайте новые языки программирования: в разных языках разная логика, при обучении другому языку вы сможете вдохновиться и применить новые знания в работе.
Очень многие коллеги приходят ко мне с запросом роста через 5-7 лет работы в компании. Если вы хотите развивать карьеру в сфере программирования, я советую:
общаться с заказчиками – клиенты компании всегда говорят правду о вашем продукте, это позволит лучше понимать потребности рынка и получать обратную связь;
работайте с людьми – становитесь наставником, будьте куратором, пишите статьи, принимайте участие в сторонних проектах, пробуйте новые роли, лидируйте задачи;
создавайте свои проекты – это поможет применить знания на практике, изучать новые подходы и методы работы, получить опыт управления проектами.
Soft skills
Тема расширения и прокачки навыков является ключевой в профессиональном росте. Мы часто слышим такие понятия как hard skills и soft skills, давайте разберемся детальнее.
Hard skills - это четкие и конкретные знания, которые мы приобретаем в учебных заведениях по определенной специальности (в разделе Middle приведены подробное примеры).
Soft skills – это навыки для выстраивания межличностных отношений, командной работы, проявления лидерских качеств. Этих умений можно выделить огромное количество. В нашей компании мы предъявляем базовые требования к разработчикам:
коммуникация – как легко вы общаетесь с другими людьми, насколько вам легко продвигать свои идеи;
сотрудничество – насколько вам комфортно работать в команде и насколько удобно работать с вами;
лидерство – умение самостоятельно принимать решения, возглавлять команду и взять лидерство в отдельном проекте.
Далее мои рекомендации по развитию мягких навыков. Если у вас будет в наличии как минимум три умения ниже, вы будете на голову отличаться от всех кандидатов, которые приходят к нам на собеседования:
учитесь слушать, задавать вопросы, высказывать свои мысли и идеи, договариваться и решать конфликты;
участвуйте в коллективных проектах, учитесь доверять и поддерживать коллег, находить компромиссы и совместно достигать целей;
учитесь мотивировать и вдохновлять других, принимать решения, управлять проектами и ресурсами.
Роль HR в развитии карьеры
Помочь составить план по развитию навыков и карьерного роста в компании может ваш тимлид или HR. Совместно с сотрудником мы составляем план наращивания навыков, участия в проектах и, как результат, — карьерного роста.
Стайеры – это марафонцы. Если сегодня вы оцениваете свои скилы и думаете о том, как их развить, в этом случае вы точно обеспечите свой карьерный рост, так как управляете своим развитием и карьерой.
Ксения Константинова
People Partner, C3D Labs