Моя работа на протяжении долгого времени связана с людьми, точнее сказать, с их развитием — как личным, так и карьерным. Сегодня я работаю в компании C3D Labs, являющейся разработчиком геометрического ядра, на позиции People Partner. В статье мы поговорим о рынке труда математиков-разработчиков в России именно в САПР-индустрии, а также выясним, какие темы интересуют действующих сотрудников и какие требования предъявляются к потенциальным кандидатам.
По моим наблюдением, карьерные вопросы, которые сегодня интересуют программистов, можно разделить на следующие группы:
- как стать сеньором (англ. senior), тимлидом (англ. teamlead) и экспертом;
- как вырасти и перейти на новый профессиональный уровень и что для этого нужно;
- мягкие навыки, или софт скилс (англ. soft skills), как ключевой фактор в достижении новой роли.
Я хочу поделиться своими мыслями и опытом по поводу роли HR (англ. human resources) в этих процессах, а также понять, может ли специалист по персоналу стать реальным помощником в развитии карьеры?
Начнем с обсуждения трендов в ИТ-индустрии: что сегодня происходит на рынке разработки?
Немного статистики из открытых источников. В мире насчитывается около 30 млн человек, которые занимаются разработкой, то есть каждый 260-й человек. Российские эксперты считают, что в нашей стране разработчиками являются около 1,5 млн человек, то есть каждый 100-й.
Эти цифры говорят о том, какое огромное число людей вовлечено в процесс разработки. Несмотря на то что количество программистов в России больше, чем в среднем по миру, изучать и практиковать программирование все равно желает очень много людей в нашей стране. Хочется отметить, что это направление — не просто модный тренд, тому есть твердые основания: IT-компании имеют высокую потребность в разработчиках. Это вызвано тем, что:
- компании проводят цифровые трансформации (цифровизацию), используют новые технологии и автоматизируют свои бизнес-процессы;
- создаются новые направления в разработке программного обеспечения, связанные с развитием искусственного интеллекта, блокчейна, интернета вещей и других технологий.
Выводы:
- количество разработчиков будет только расти, и к ним будет предъявляться еще больше требований;
- сами продукты будут усложняться, в том числе за счет применения новых технологий и в соответствии с требованиями конечного потребителя;
- сложные процессы гораздо эффективнее строить за счет командной работы, поэтому тренд на развитие soft skills сохраняется и усиливается.
WOW-тренд на рынке
Количество разработчиков растет во всех сферах, и одним из лидирующих направлений является рынок САПР. Российский тренд на импортозамещение диктует требования по реализации сложных инженерных решений на высоком уровне и в кратчайшие сроки, что влияет на развитие САПР-индустрии на локальном уровне. Все больше промышленных и IT-компаний стремятся нанимать в штат разработчиков, которые умеют создавать геометрические модели
и/или использовать геометрическое ядро внутри своей компании для создания собственных САПР-систем.
Сфера САПР выходит на первый план, так как позволяет существенно влиять на бизнес и его конкурентоспособность за счет:
- широкого спектра применения в различных отраслях (авиастроение, ОПК, автомобилестроение, машиностроение, строительство и т.д.);
- увеличения производительности и точности проектирования;
- увеличения эффективности, так как позволяет работать над одним проектом одновременно нескольким специалистам.
Требования к разработчикам
Разработчиков, которые проходят собеседования в компанию C3D Labs, можно разделить по уровню компетенций на следующие категории:
- Middle/Middle + специалисты — те, кто уже имеет опыт работы в разработке (в среднем от 3 до 6 лет), уже имеют опыт работы с CAD-системами или пришли его получить;
- Junior-специалисты — те, кто только начинает карьеру после учебы в университете, или джоб-свитчеры (тренд современного рынка труда — смена профессии в зрелом возрасте);
- специалисты уровня 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-специалиста очень важно уметь разбираться в сфере деятельности компании и индустрии в целом; не переставать углубляться в знания и помнить, что предела этому процессу нет.
Я хочу дать несколько «вредных» советов будущим Senior-специалистам и экспертам в области программирования CAD-систем:
- читайте много специализированной литературы о том, как проектировать архитектуру и писать качественный код;
- читайте чужой качественный код — благодаря этому вы можете увидеть другие возможности программирования;
- изучайте новые языки программирования: в разных языках — различная логика, при обучении другому языку вы сможете вдохновиться и применить новые знания в работе.
Очень многие коллеги приходят ко мне с запросом роста через 5-7 лет работы в компании. Если вы хотите развивать карьеру в сфере программирования, я советую:
- общайтесь с заказчиками — клиенты компании всегда говорят правду о вашем продукте; это позволит лучше понимать потребности рынка и получать обратную связь;
- работайте с людьми — становитесь наставником, будьте куратором, пишите статьи, принимайте участие в сторонних проектах, пробуйте новые роли, решайте сложные задачи;
- создавайте свои проекты — это поможет применить знания на практике, изучить новые подходы и методы работы, получить опыт управления проектами.
Soft skills
Тема расширения и прокачки навыков является ключевой в профессиональном росте. Мы часто слышим такие термины, как hard skills и soft skills, — давайте разберемся в этом более детально.
Hard skills — это четкие и конкретные знания, которые мы приобретаем в учебных заведениях по определенной специальности (в разделе Middle приведены подробные примеры).
Soft skills — это навыки для выстраивания межличностных отношений, командной работы, проявления лидерских качеств. Этих умений можно выделить огромное количество. В нашей компании мы предъявляем следующие базовые требования к разработчикам:
- коммуникация — как легко вы общаетесь с другими людьми, насколько вам легко продвигать свои идеи;
- сотрудничество — насколько вам комфортно работать в команде и насколько удобно работать с вами;
- лидерство — умение самостоятельно принимать решения, возглавлять команду и взять лидерство в отдельном проекте.
Далее я приведу рекомендации по развитию мягких навыков. Если вы приобретете как минимум три умения, приведенных ниже, вы будете на голову отличаться от всех кандидатов, которые приходят к нам на собеседования:
- учитесь слушать, задавать вопросы, высказывать свои мысли и идеи, договариваться и решать конфликты;
- участвуйте в коллективных проектах, учитесь доверять и поддерживать коллег, находить компромиссы и совместно достигать целей;
- учитесь мотивировать и вдохновлять других, принимать решения, управлять проектами и ресурсами.
Роль HR в развитии карьеры
Помочь составить план по развитию навыков и карьерного роста в компании может ваш тимлид или HR. Совместно с сотрудником мы составляем план наращивания навыков, участия в проектах и как результат — карьерного роста.
Стайеры — это марафонцы. Если сегодня вы оцениваете свои скилы и думаете о том, как их развить, в этом случае вы точно обеспечите свой карьерный рост, так как управляете своим развитием и карьерой.