Рекомендация для наставников от опытного подопечного

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

Наставничество в программировании - это сложно

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

Программисты самоуверенны

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

  • Табуляция с двумя пробелами и табуляция с четырьмя пробелами (Табуляция с двумя пробелами)
  • Жесткие вкладки и мягкие вкладки (Мягкие вкладки)
  • Совершенно красивый язык по сравнению с другим идеально красивым языком (первый)
  • Git Rebase против Git Merge (Git Merge)
  • Vim против Emacs (Emacs, но я все еще использую Vim)

В принципе, если можно принять сторону, программисты ее примут. Из-за этого трудно быть объективным, показывая основы новичку.

Новые разработчики впечатлительны

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

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

Итак, что такое работа наставника?

Вот мой лучший способ краткого описания,

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

Показываем новым разработчикам, как учиться

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

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

Поощрение хороших привычек

Я знаю, это звучит немного банально. Даже в этом случае я не могу сосчитать, сколько раз мне говорили и мне говорили: «Просто забудьте о документации». Забавно высмеивать такие привычки, как документация и правильные имена переменных / методов, когда вы накопили достаточно опыта, чтобы знать, когда это неправильно. Однако для нового разработчика фраза вроде «Документация - это глупо» не воспринимается как шутка. Это воспринимается как урок.

Наставничество - это возможность приобрести эти полезные привычки с самого начала. Даже если вы лично не следуете многим из них (хотя должны), важно помочь учащимся развить эти привычки на раннем этапе. Вот несколько хороших привычек, которые, как мне хотелось бы, навязывали мне, когда я только учился программировать:

  • Задокументируйте свой код (осмысленно)
  • Тратьте больше времени на планирование / размышления и меньше времени на программирование
  • Будьте последовательны в написании кода. Не используйте переменную с именем badApple и другую с именем good_apple.
  • Если у вас есть вопрос, сформулируйте точный вопрос. Вместо того, чтобы говорить «Это не работает», спросите: «Почему мой метод изменяет исходный массив, а не создает копию?» Часто проблемы можно решить, просто задав правильные вопросы.

Действовать как поддерживающий сверстник

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

Отношения наставника и подопечного не связаны с динамикой власти. Вы - коллеги. Хотя вы можете знать экспоненциально больше, чем человек, которого вы обучаете, ни один разработчик никогда не должен заканчивать обучение. Быть студентом вместе со своим учеником имеет первостепенное значение для обеспечения того, чтобы они понимали, что делать ошибки - это нормально. Все мы ошибаемся. Чем раньше такая позиция будет принята, тем лучше.

Заключение - будьте наставником, которого вы хотели бы иметь

Тем из нас, кому посчастливилось иметь одного или нескольких наставников на пути к тому, чтобы стать разработчиками, будет полезно составить список наиболее полезных уроков, извлеченных из них, и добавить свои собственные. Если у вас никогда не было наставника (мое уважение к вам), представьте себе человека, которого вы хотели бы учить вместе, и стать этим человеком.

Если вы действительно хотите помочь новым разработчикам, учитесь вместе с ними. Это действительно невероятный опыт для новичка - стать свидетелем того, как опытный ветеран подходит к изучению чего-то нового.

Вы должны быть наставником, а не лектором. Разговор с людьми - действенный способ научить концепции. В конце концов, так устроен колледж. Но вы не колледж для одного человека, и он никому не поможет научиться адаптироваться и развиваться.

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