«Менторство — вид обучения, когда более опытный человек передает свои знания новичку».
Ни для кого не секрет, что менторство – очень хороший способ обучения технических специалистов. Намного эффективней, чтобы тебя «провели за руку», чем тратить часы на поиск ответа в гугле или на просмотр видео. Плюсов у такого подхода много, например:
Для сотрудника: возможность перенять опыт, обратная связь, реальные кейсы;
Для ментора: опыт наставничества / обучения, возможность восполнить свои пробелы в знаниях, борьба с синдромом «самозванца» (все-таки если ты учишь – значит твои знания и опыт кому-то нужны);
Для компании: передача опыта и знаний внутри компании, обученные сотрудники;
и многое другое.
Я работаю программистом с 2014 года. За 9 лет работы у меня было несколько менторов в различных компаниях, были также случаи, когда ментором был я.
Я бы хотел поделиться своим личным опытом в формате истории. Как проходил процесс обучения, что делали мои менторы, и как это повлияло на мою карьеру.
1. Первый опыт в ИТ и первый ментор
Это было 9 лет назад, я активно искал свою первую работу. Я думаю, у многих в начале карьеры была такая же ситуация: изучаешь теорию, делаешь пет-проекты и ходишь на десятки собеседований, а толку – ноль. Но потом случилось настолько интересное и необычное собеседование, что его истинный смысл я по-настоящему понял, когда у меня у самого появились «ученики».
Полтора (если не два) часа мы разговаривали обо всем около ИТ, кроме технических вопросов:
«Как устроены бизнес-процессы в компании»;
«А вот если бы тебе надо было написать программу для [Название отдела]»;
«Если бы ты был начальником производства, с чего бы ты начал свой день»…
И так далее, только с каждым вопросом все сложнее и сложнее. Ни одного технического вопроса, ни одного тестового задания – только разговоры о теории. После этого собеседования я был в прострации, и мой мозг просто кипел. Но через день мне сказали, что меня берут!
Зачем же это было надо?
Зачастую Soft Skills гораздо важнее чем Hard Skills. Технические навыки можно догнать курсами, литературой и работой с наставником. Чтобы добавить +1 кнопку в интерфейс, простите, много ума не надо. А вот на проработку Soft Skills могут уйти годы.
Такого мнения придерживался мой интервьюер (он же руководитель). Что было особо важным для него:
Наличие критического мышления.
Аналитические способности. Важно, чтобы ты понимал первопричину задачи. Возвращаясь к примеру с +1 кнопкой в интерфейс, нужно ли вообще её добавлять?
Абстрактное мышление. Могу ли я представить модель бизнес-процессов в голове. Поняв, ЧТО тебе надо написать, реализовать это в коде не настолько сложно.
Организованность и память. Так как это было сложное производство с множеством нюансов, смогу ли я все это держать в голове и смогу ли поддерживать софт на протяжении нескольких лет в крупной и развивающейся компании.
Куда я устроился?
Несмотря на то, что в вузе у меня был С++, а сам я учил С#, устроился я программистом 1С. Это была крупная компания-производитель микроэлектроники. Почти все торговые, складские и производственные процессы были реализованы на 1С. То есть мы писали ERP-систему для всей компании. Отдел только зарождался, работали в нем: мой шеф, он же ментор, я и еще 1 джун. Начался мой процесс обучения.
Процесс обучения
«Их должно быть двое, ни больше, ни меньше. Один — чтобы воплощать могущество, другой — чтобы жаждать его». Звездные воины.
Или как говорил мой шеф: «Люблю поговорить о делах, которые удались». Основой обучения было: передача мне своего опыта, не только технического, но и жизненного; дать мне мотивацию идти за наставником. И я могу с уверенностью сказать, что мне было интересно, хотелось добиться того же, что и руководителю (может быть, даже и больше, я считаю, что здравые амбиции – это хорошо).
Первые 2 года работы:
прокачиваю свои технические навыки, читаю литературу и статьи, читаю чужой код;
ментор рассказывает о бизнес-процессах в компании, о своих прошлых проектах;
практикуем парное программирование. Порой по 10 часов в неделю я смотрел (через удаленное подключение) в монитор ментора, слушал его рассуждения и следил, как пишет он. Со временем парное программирование стало реально парным, так как я уже знал некоторые процессы и мог подсказывать;
я не реализовываю сложные задачи и не добавляю новый функционал, пока не уточню или не пойму требования полностью. Перед тем, как начать писать, пробую поставить себя на место пользователя программы;
посещаю многие митинги с заказчиками (другими отделами компании) вместе с ментором;
Признаюсь честно, на этом этапе меня очень часто выводило из себя такое частое общение с наставником. Но я видел рост (и навыков, и зарплаты) и продолжал.
3 – 4 год работы (Миддл)
Отдел постепенно расширяется. Нанимают и опытных программистов, и начинающих (каким был я). Теперь я, также как и мой ментор, помогаю новичкам:
знакомлю со всем, что сделано;
проверяю, правильно ли мой «ученик» понял задачу;
меня все также гоняет по требованиям мой наставник, но задачи стали сложнее;
такой же процесс к обучению применяется и для Senior-разработчиков, но в меньшей степени.
Могу сказать, что не всем такой формат подходит. Многие новые коллеги считали, что это странно, например:
«Разговоры отвлекают от работы». Возможно, но это часть обучения.
«Зачем копаться в требованиях и первопричинах задачи, если можно просто добавить кнопку, как этого просит пользователь?». Понятно, что не стоит доводить анализ каждой задачи до абсурда. Основной посыл обучения в том, чтобы развить понимание того, зачем ты что-то делаешь.
Чему я научился?
Для себя как для сотрудника я бы выделил такие плюсы и минусы этого обучения (менторства):
Плюсы:
количество доработок ПО сводится к нулю, так как на начальном этапе ты разобрался во всех нюансах. Конечно, кому-то нравится процесс ради процесса и сотни задач в Джире по одной и той же теме, но как по мне – проект лучше закончить и взяться за следующий, иногда более интересный или с новой технологией. Новый опыт – больший прогресс и карьерный рост;
можно приступить к работе, даже когда нет начального ТЗ. Погружение в бизнес-процессы позволяет лучше понять, что именно нужно заказчику;
полезные навыки для роста: можно развиваться в разных направлениях, например, в PM, бизнес-аналитике (в этом направлении у меня даже была возможность трудоустроиться, но начало ковида в 20-м году немного изменило мои планы).
Минусы:
надо много общаться, не всем это подходит. Кто-то просто хотел бы сидеть и программировать в тишине.
Что это дает компании?
Плюсы:
баги всегда исправляются «на корню». Чтобы больше такого не возникало в принципе;
каждый разработчик самостоятелен и сильно вовлечен в проект. Он может пообщаться с заказчиком и может сформулировать ТЗ, а потом его реализовать. Так сказать, «И один в поле воин».
Есть и минус. Многое зависит от самой компании. У разработчиков должна быть некая свобода, как именно они реализуют те или иные требования. К тому же это недешево, много времени уходит на «подумать». Мне кажется, такой формат больше подходит для тех, кто пишет или дорабатывает ПО внутри компании.
2. Смена стека, снова джун (условно) и новые менторы
Как я писал выше, для себя я изучал C#. И вот после 5.5 лет работы в 1С у меня появилась возможность устроиться параллельно на полставки .NET – стажером. Через год я сменил стек полностью. Я устроился в небольшую зарубежную компанию. Я и мои коллеги разрабатывали собственный продукт.
В техническом плане новый стек был на порядок сложней того, с чем я работал. Но я был крайне замотивирован полностью перейти в .NET, да и начинал я не с нуля.
Процесс обучения
Повторюсь, учитывая, что начинал я не с нуля – по коду, мне даже было понятно, что и где находится. Даже понимал, какую строчку мне надо дописать. Но не понимал, почему надо сделать именно так. Тут помогали менторы:
Первые полгода мне периодически рассказывали, почему было сделано так или иначе, подсказывали по архитектуре и делились своим опытом;
Неформально разговаривали об индустрии в целом, что очень сильно повышает мотивацию;
Через код-ревью я понимал теорию. Интересный подход, я ни разу не увидел в ревью моего кода, что «сделано неправильно». Всегда это было в духе – «а вот здесь вроде бы как хорошо подходит такой-то паттерн. Вот статья, почитай и попробуй, мне кажется, должно получится».
Несмотря на то, что книги по теории были мной прочитаны (например, Gang of Four, Clean code) – некоторые моменты сложны в понимании, если нет практики. В основном это касается паттернов.
Сейчас я понимаю, как ловко и непринужденно корректировали мои пробелы в знаниях. Это всегда было интересно, и ощущался непрерывный прогресс.
3. Как я был тимлидом у джунов на курсах программирования
Было и такое. Не буду вдаваться в подробности, так как это тема для отдельной статьи. На что я обращал внимание своих учеников (то же самое, что мне давали и мои менторы):
Важно понимать бизнес-процессы, заказчик не всегда может сформулировать требования;
Необходимо сначала продумать систему, только потом писать;
Информацию по техническим навыкам: интересные статьи, направление для дальнейшего развития и обучения.
К сожалению, многим джунам не особо интересен чужой опыт. Большинство хочет просто быстрее взять весла узнать, как пройти собеседование, и каких им знаний не хватает для той или иной вакансии.
Подводя итоги, хочу сказать, что я считаю менторство очень эффективным. Помимо развития каких-то определенных навыков, ментор также передает свой жизненный опыт. К тому же, работа с наставником ускоряет процесс адаптации в коллективе. Более того, положительный эффект есть и для компании, и для самого ментора.
Выводы
Несмотря на огромную разницу в подходе к менторству в двух компаниях, в которых мне довелось поработать, результат (для меня) был одинаковым. Человек с бОльшим опытом должен быть интересен. Он может делиться опытом или помогать развивать технические навыки. Если вы прислушаетесь к нему, будете усваивать и принимать то, что он говорит, вы получите огромное количество новых знаний, применимых в реальной жизни.
В моей карьере мои наставники мне очень помогли, и я стараюсь также делиться своим опытом. Надеюсь, было интересно и полезно.