Перевод статьи «How To Be A Good Software Engineer Mentor».
Наставничество это один из лучших способов помочь разработчикам-джуниорам приобрести нужные навыки. Если вы уже вышли на средний уровень или даже стали сеньором, вы сами решаете, какого рода наставником можете / хотите стать. Но помните, что в наставничестве главное не то, насколько вы опытны и насколько выразительный код вы способны писать.
Целью наставника является скорее помощь начинающему разработчику с пониманием процесса разработки, чем с написанием кода. О том, как правильно писать код, он может и сам почитать. Вам нужно показать ему другие вещи, то, о чем вы узнали лишь благодаря своему опыту. В этой статье мы перечислим несколько таких тем, уделяя внимание которым вы сможете стать хорошим наставником для разработчиков.
Поясняйте бизнес-аспект разработки и то, как он влияет на принятие решений
Написание кода обычно не является самой сложной частью процесса разработки. Самое сложное — понять, чего хочет бизнес. Берите джуниора с собой на встречи с клиентами и продуктовыми менеджерами или хотя бы после таких встреч рассказывайте ему, что там происходило. Джуниоры должны знать, откуда вообще поступают задачи, как эти задачи создаются. Когда вы поясняете начинающему разработчику вопросы бизнеса, вы даете ему больше контекста для работы.
Также обязательно посвящайте джуниоров в бизнес-логику их задач. Кратко поясняйте, как на данный момент работает приложение, над которым вы все трудитесь. Таким образом новички узнают, почему, например, пользовательский input обрабатывается именно так, а не иначе. Быстрый обзор решений по функционалу приложения всегда помогает джуниору лучше понять приложение в целом вместо того чтобы просто писать свой кусочек кода.
В ходе ревью рассказывайте о том, почему мы пишем код определенным образом
Хорошее ревью кода раскрывает лучшие практики к написанию кода безотносительно к уровню мастерства автора кода. Но когда дело касается джуниоров, это вообще нельзя упускать из виду. Если замечаете, что начинающий разработчик написал какой-то фрагмент кода плохо, несмотря на то, что в принципе код работает, расскажите ему о лучших подходах, которые он может применить в следующий раз. Также следует пояснять решения относительно кода, принятые командой. Это дает новичку понятие о том, как приложения растут и достигают своего текущего состояния.
Ревью кода это также прекрасная возможность пояснить джуниору используемый в команде жаргон. Поэтому, когда рассказываете о лучших практиках, да и вообще когда говорите о коде, по ходу дела поясняйте профессиональные словечки, которые вы используете. Чтобы разобраться во всех терминах требуется довольно много времени, и многие джуниоры пытаются выудить значение слов, исходя из контекста. Вы можете пропустить этап непонимающих взглядов и неуверенных «окей», просто рассказав, что такое интерфейс или как работает репозиторий. Так джуниор сможет сосредоточиться на основных концепциях, а не на языковых вопросах.
Не упускайте шанс рассказать о карьерных возможностях
За годы работы вы, вероятно, успели побывать на разных ролях. Вы знаете, чем занимается DevOps, а чем — фронтенд-разработчик. Работая с джуниором, упоминайте о подобных вещах. Если видите, что ваш джун лучше всего улавливает тему SQL-запросов, расскажите ему об администрировании баз данных и о том, что нужно изучить, чтобы стать администратором. Покажите начинающему разработчику как можно больше возможностей — это очень поможет ему в развитии его карьеры.
Рассказывая джуниору обо всех вариантах и о том, как воспользоваться открывающимися возможностями, в долгосрочной перспективе вы настраиваете его на более успешную карьеру. Он может задуматься над тем, на чем он хочет специализироваться и что ему для этого нужно изучить. Подобные вещи мотивируют людей продолжать испытывать новые вещи. А благодаря исследованию нового разработчики становятся всесторонне развитыми профессионалами, что повышает качество их работы, чем бы они ни занимались.
Давайте джуниорам возможность подумать, прежде чем укажете им верный путь
Когда приближается конец спринта и вы знаете, что надо бы поторопиться, сдержите порыв «разблокировать» джуниора. Это один из лучших обучающих моментов, потому что подобная ситуация заставляет джуниора думать и принимать решения быстро. Даже если проблема сложная и вы не уверены, справится ли новичок, все равно дайте ему попытаться. Это поможет ему начать думать о вещах, лежащих не на поверхности, т. е., о самой сути приложения.
Давайте джуниорам возможность высказать вам свои идеи, прежде чем вы вмешаетесь и все спасете. Когда вы их обрываете, они чувствуют, что вам безразлично то, что они хотели вам сказать или то, что они думают. Положим, это может быть истинной правдой, но если вы в каждом сложном случае будете брать дело в свои руки, это не поможет джуниорам расти. Дайте им понять, что вы к ним прислушиваетесь, и если они в чем-то неправы, поясните, в чем именно, и скажите, что вы предлагаете взамен.
Когда пишете код, проговаривайте ваш мыслительный процесс
В начале вашей карьеры вам тоже случалось сидеть и наблюдать, как кто-то пишет код. Чтобы вашему джуниору это было полезно (а не ужасно скучно), проговаривайте свой мыслительный процесс вслух. Когда начинающий разработчик просто наблюдает за тем, как вы работаете, это тоже приносит ему пользу, но если вы будете пояснять свои действия, это будет по-настоящему учить его чему-то. Джуниор начнет понимать, как вы соединяете разные кусочки и почему пишете код именно так, а не иначе.
Проделав подобное несколько раз, поменяйтесь ролями и дайте джуниору возможность делать то же самое. Если заметите, что он неправильно использует какую-то концепцию вроде наследования, скажите ему об этом. Слушая, как он проговаривает вслух свой мыслительный процесс, вы сможете направить его в верном направлении. Кроме того, когда джуниор озвучивает свои действия, он начинает писать код более обдуманно.
Кстати, чтобы быть хорошим наставником, вам не обязательно делать все вышеперечисленное сразу и тратить на это вагон времени. Если вы можете уделить хотя бы 30 минут в день на что-то одно из того, что я посоветовала, это значит, что за неделю вы сможете помочь джуниору пятью разными способами. Начав этот процесс, вы заметите, насколько быстрее джуниор приобретает новые навыки и как растет его уверенность в своих действиях.
Я уверена, вы помните, сколь многого вы не знали, когда сами были разработчиком-джуниором. Станьте для других джуниоров таким источником знаний, о каком сами мечтали в то время.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]