Моя работа на протяжении долгого времени связана с людьми, точнее сказать с их развитием, как личным, так и карьерным. Сегодня я работаю в компании 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