Обложка статьи «Как вырастить разработчика внутри компании: личный опыт»

Как вырастить разработчика внутри компании: личный опыт

Дмитрий Чирков

Дмитрий Чирков, директор «НИЦ Аэродиск»

Дефицит специалистов в сфере ИТ не новая проблема, однако с каждым годом её масштабы только растут: по данным исследования HeadHunter, с 2016 по 2018 год доля вакансий в ИТ увеличилась на 5,5%. При этом около трети из них приходится на разработку, а наиболее востребованной является специальность frontend-разработчика.

Каждая компания по-своему «утоляет» кадровый голод: одни переманивают «звёзд» из команд конкурентов; другие – набирают молодых специалистов и превращают их в настоящих гуру разработки. Часто оптимальным оказывается именно второй вариант: вкладываясь в обучение, компания получает взамен активного и лояльного сотрудника, который хорошо знаком со всеми бизнес-процессами и спецификой предлагаемых решений.

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

Молодость или опыт: зачем компании берут новичков

Несмотря на то, что тема найма молодых специалистов обсуждается очень давно, ИТ-компании всё ещё не спешат брать на работу кандидатов без опыта: согласно исследованию HeadHunter, доля открытых позиций для начинающих составляет всего около 9%. Ситуацию легко объяснить: поиск любого специалиста вызван острой потребностью – и при найме компания хочет, чтобы новый сотрудник мгновенно влился в процесс работы.

Кажется логичным, что для этого соискатель должен обладать навыками и большим багажом реализованных проектов за плечами. Однако не всё так просто: любому специалисту необходимо время на адаптацию. Даже профессионалам приходится привыкать к новым отношениям в команде, организации работы или стилю разработки. При этом опытные специалисты не переучиваются, а просто вливаются в игру по новым правилам. И часто оказывается, что эти правила им совсем не подходят.
Человеку, который начинает карьеру, проще принять и начать разделять её корпоративные ценности. У него «горят глаза» и он готов учиться – а потому может быстро разобраться в стеке технологий, с которыми работает компания. Мы регулярно нанимаем кандидатов с минимальным опытом работы на должности младших разработчиков: около 10-20% специалистов попали к нам в команду именно так. Главное, чтобы человек обладал высоким уровнем интеллекта, а ещё склонностью к саморазвитию и образованию – хотел и умел учиться.

Сделать первый шаг – с чего начать?

Человеку, который решил стать разработчиком, стоит начать именно с обучения. Если технического опыта совсем нет, лучше приступить к изучению основ; если есть – переходить к конкретным языкам, которые можно освоить как самостоятельно, так и на платных курсах. Например, один из наших разработчиков окончил Российский государственный медицинский университет Федерального агентства по здравоохранению и социальному развитию и несколько лет работал по профессии, не связанной с программированием. Он решил сменить своё карьерное направление, окончил курсы Python-разработчика в учебном центре «Специалист» при МГТУ им. Н.Э. Баумана. После чего начал поиск работы на позицию младшего разработчика и попал к нам.

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

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

Повышение квалификации или ещё один шаг к росту

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

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

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

Из младших в старшие: самостоятельная работа над проектом

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

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

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

Каким должен быть разработчик?

Однако это далеко не все качества, которыми должен обладать разработчик. В решении любой серьёзной задачи принимает участие несколько специалистов: frontend и backend-разработчики, тестировщики. И здесь на первый план выходят гибкие навыки – умение найти общий язык с коллегами и принимать их помощь, адекватно воспринимать критику. Взаимная поддержка и общение – вот неотъемлемая часть разработки, ведь несмотря на все стереотипы, это коллективный труд. И один гениальный, но закрытый разработчик не заменит трёх готовых к коммуникации специалистов.

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

Призы для программистов — нужно пройти опрос. Больше ответов — больше шансы

Level UP для айтишников