Зачем программисту нужен ментор и где его найти

За последние годы появилось множество онлайн-курсов, которые обещают научить программированию даже мартышку. Некоторые компании создают целые обучающие платформы с интерактивными заданиями, проверкой результатов в реальном времени и ачивками. Геймификация идеально ложится на продукты в сфере онлайн-образования: это весело, удобно, быстро. Уже через пару недель в вашем профиле значится, что вы закончили «Путь Ruby/Python/Java» и кажется, что всё готово к поиску работы.

Не считая одной маленькой детали: у вас совершенно нет опыта. Как и портфолио, в котором значится хотя бы один мало-мальски достойный проект, на который можно дать ссылку потенциальному работодателю. Нет и списка вкладов в Open Source. Всё, что у вас есть — это опыт решения примитивных задач внутри чужой интерактивной оболочки, слабо применимый к реальной жизни. Вы в тупике, и в вашей голове один за другим всплывают десятки вопросов:

  • Как работает X? Нужно ли сейчас узнавать в деталях, как работает Х?
  • Как начать писать в open source? В какие проекты?
  • Как писать тесты и с помощью какой библиотеки?
  • Что покрывать тестами, а что — нет?
  • Какие книжки читать? И читать ли?

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

— А не пишу ли я полное говно?

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

Вам нужен ментор

У каждого из нас есть менторы (или наставники), причем с самого раннего возраста. Это могут быть и родители, и учителя в школе, и тренеры в спортивной секции. Арнольд Шварценеггер в предисловии к книге «Tools of Titans» написал:

…it is not true that I am self-made. Like everyone, to get to where I am, I stood on the shoulders of giants. My life was built on a foundation of parents, coaches, and teachers; of kind souls who lent couches or gym back rooms where I could sleep; of mentors who shared wisdom and advice; of idols who motivated me from the pages of magazines (and, as my life grew, from personal interaction).

Наша карьера, наши успехи, да и жизнь в целом зависят от менторов, которых нам посчастливилось встретить. Мир IT не исключение. Мне повезло: на протяжении всей моей карьеры у меня были менторы. Если не самой карьерой, то как минимум темпами её развития я обязан именно им.

Чем же ментор может помочь преодолеть сложный начальный этап?

Ответы на тонну вопросов

Пожалуй, одна из самых важных составляющих — это ответы на вопросы. Чем меньше у человека опыта, тем больше у него вопросов? и тем сложнее эти вопросы оформить в правильный поисковый запрос.

Google с каждым годом становится всё умнее. Если спросить его: «Сколько лет Тому Хэнксу?», то ответ получишь сразу, не переходя на страницу Википедии.

Пройдут годы, прежде чем он так же ловко сможет ответить на вопрос: «Какую библиотеку лучше выбрать для авторизации в приложении Ruby on Rails?».

Ментор может ответить на подобный вопрос мгновенно, основываясь на своём многолетнем опыте и знаниях, и это будет развёрнутый ответ со всеми «за» и «против».

Кроме того, когда мы чему-то учимся, для достижения эффективного результата нам важно получать положительное подкрепление. Ученик должен иметь возможность задавать любые вопросы: от чисто технических до чего-нибудь в духе «как думаешь, у меня есть шансы найти работу программистом в моём возрасте?». Попробуйте задать такой вопрос на публичном форуме — едва ли в ответ вам придёт положительное подкрепление. А это может не только травмировать, но и вообще отбить желание развиваться. Ментор же не допустит этого. Помимо сухих фактов он может ещё и интересную историю из своей практики рассказать, и мотивационную речь толкнуть. Beat that, Google!

Проверка кода

Другая немаловажная задача хорошего ментора — это проверка кода ученика, code review. Ответственный опытный программист знает, что сделать ревью кода — это не менее сложная задача, чем написать этот код. Ведь нужно не только вникнуть в написанное решение, но и подумать, нет ли другого решения. А ещё предложить все возможные улучшения для кода, не считая тех, с которыми справляются автоматические анализаторы типа Rubocop.

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

Корректировка цели и программы обучения

Ответы на вопросы и проверка кода — это, скорее, рутина менторской деятельности и далеко не то, что нужно вам в первую очередь. Вам нужна индивидуальная программа обучения, подходящая только вам. Что, и в каком порядке учить, почему именно это, а не другое и т.д. И здесь преимущества менторства раскрываются на 100%.

Единственное, что потребуется от вас — это понимание своей цели, а задача ментора — сделать всё, чтобы вы её достигли. Цель может быть такая: «Хочу получить работу Java Junior Developer к концу этого года». Ментор сделает всё, чтобы у вас это получилось: научит, проверит, расскажет о нюансах, поможет составить резюме и наполнить портфолио, подготовит к собеседованию. Вы не занимаетесь ерундой вроде поиска правильных Java-курсов, не мучаетесь вопросом, правильно ли всё делаете, не мечетесь по бордам в поисках доброго самаритянина, который возьмёт вас попрактиковаться на чужом коде за опыт, — всё это в одном окне для вас делает ментор.

Но, к сожалению, появление ментора в жизни программиста — это явление в основном случайное и сильно зависит от удачи. Вам может повезти с умными коллегами, у которых до отвала опыта, мудрости и, самое главное, желания тратить своё время на ваше обучение. А может и не повезти.

Так как же найти для себя подходящего ментора?

Есть два варианта, которые зависят от текущего опыта:

Среди коллег

Если вы уже работаете программистом, то самый очевидный путь — это искать менторов среди более опытных коллег. Как минимум, если в вашей компании адекватно настроены процессы разработки, вы точно получите ревью вашего кода, которое само по себе уже является бесценным источником информации (если его правильно делают).

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

Учиться можно и у коллег вашего уровня, ведь набор навыков и знаний всегда разный. Внутрикорпоративный обмен опытом может оказаться весьма полезным.

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

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

В Интернете

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

В первую очередь, конечно, можно залезть на всякие тематические форумы: Quora, Stack Overflow. Там уже полно вопросов в духе «с чего начать», «что учить». И вы можете (сюрприз) задать свой вопрос и даже получить ответ. А потом, вооружившись полученной инструкцией, попытаться научиться всему самостоятельно, периодически заглядывая с новым наборов вопросов на упомянутые выше ресурсы.

Но это, конечно, не сравнить с наличием ментора. Ведь ментор, как мы знаем, не только задаёт направление, но и постоянно корректирует курс. Кто, как не ментор, скажет вам, что вы занимаетесь полной фигнёй?

Поэтому для достижения максимального эффекта от обучения нужно искать в Интернете более заинтересованного и постоянного наставника, нежели случайного советчика на форумах. Где же такого взять?

Нередко опытные разработчики имеют на стороне свой небольшой проект, который они, возможно, надеются однажды превратить в хороший источник дохода, но на который у них совершенно не хватает времени. Можно ориентироваться на поиск именно такого разработчика, создавая соответствующие темы на форумах и ресурсах, озвученных выше. А затем напроситься работать над его проектом за опыт — с условием, что в обмен на труд вы получите менторство.

Часто менторы сами ищут себе учеников или помощников. Хороший разработчик понимает, что через обучение менее опытного программиста он улучшает свои навыки. Кроме того, самостоятельно вырастить себе помощника — намного эффективней в долгосрочной перспективе, чем искать уже готового, которого неизвестно кто и чему учил. Этим стоит воспользоваться. Обращайте внимание на публичные профили разработчиков в сообществах, форумах, социальных сетях. Часто в них значится, что они являются менторами. Если вы не следите за жизнью сообщества, то самое время начать. Подписывайтесь на блоги, рассылки, личные страницы разработчиков из вашей сферы.

Ничего сложного в этом нет — идём в те самые группы ВКонтакте, тематические чаты в Slack и Telegram, Google Groups, Issues на Github и пишем: «Я маленький и глупый. Прошу, умоляю, возьмите меня в помощники, я буду бесплатно круглые сутки вам помогать взамен на ваш бесценный опыт, наставления и контроль моих навыков». Утрированно, конечно. Чем подробнее вы о себе расскажете, тем больше шансов, что на вас обратят внимание. Поэтому не ограничивайтесь сухими «ищу ментора по Ruby». Менторы ведь тоже люди, и основа менторства — это прежде всего человеческое общение.

Итого

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

Наличие ментора во многих ситуациях не просто крайне желательно, но и необходимо. Увидев несколько лет назад, что курсов в интернете предлагается полно, а вот настоящего личного общения с ментором нет нигде, мы создали mkdev.me. Место, где менторы могут найти себе учеников, а ученики менторов. Этот способ подходит и для тех, кто уже работает, и для тех, кто только начинает учиться.

Главное, не путать менторство с курсами. Курсов, статей и книг в Интернете уже полно. Я бы даже сказал, с избытком. А вот ментора, который поможет найти между всеми ними связь и проложить в этом лабиринте чёткий маршрут до конечной цели, найти не так просто.

Кирилл Ширинкин, специально для Tproger