Автор оригинала: Agustin Chiappe Berrini.
В ноябре прошлого года я начал работать с Рой, очень хороший парень, который (в то время) хотел улучшить свои рубины на рельсы и навыки реагирования. Он был бы моим первым наставником и, на самом деле, первый когда-либо учился от меня.
Пару дней назад я связался с другим возможным Mentoree и на данный момент, до моего второго приключения, я думаю, это хорошее время, чтобы просмотреть, как все прошло, что сработало и что может быть улучшено. С тех пор было больше шести месяцев, и многие вещи изменились.
Мои первоначальные ожидания
Перед началом роя у меня были некоторые идеи того, что я ожидал от наших сессий.
Первое, что я хотел, это долгосрочные отношения. Я не думаю, что я достаточно хорош, чтобы сделать какое-то влияние в кого-то менее чем за несколько недель. Мне нужно больше времени, чтобы иметь возможность ничего не передавать.
Второе, что я хотел, это профессиональный фокус. Хотя все в порядке, чтобы учиться программировать ради этого или сосредоточиться на информатике, что мне очень нравится, это программная техника. Я ищу кого-то, чья цель способна создавать полностью функциональные системы.
С другой стороны, я не был уверен на том, как я хотел провести сеансы. Будем ли мы сделать несколько парных программиров? Это потребует его знать что-то перед рукой. Будет ли старый метод предоставления и рассмотрения упражнений? Это никогда не делал для меня в университете. Должны ли мы сосредоточить наши сессии по темам для изучения или проектов для создания? Нет, трахается. Ключ к разгадке.
По общему признанию, это была моя первая ошибка. Не зная, как именно я хотел провести процесс, приведенный к очень небрежному первой сессии. Я сделал все решения на месте, после быстрого чата с ним и просто играл с ним. Рой был достаточно умным, чтобы следовать за моим ритмом без проблем, и мы смогли улучшить чувство на следующий, но лучшая подготовка к моему концу сделало бы процесс более гладкой.
Я думаю, что все это могло быть предотвращено рассолом. Если бы у меня было пятнадцать минут чата с ним до первой сессии, я бы хорошо чувствовал, где он был в и что он ожидал, и я смог бы разработать план на начало. Это первый урок, который я узнал!
Наши первые контакты
Рой была пара необычных качеств, которые я не ожидал перед рукой: он уже знает основы программирования (на самом деле, у него был пару лет опыта), и он работал профессионально в этой области. На самом деле, его компания спонсировала процесс. Я пришел быстро осознавать, что большинство людей, ищущих наставника, не за пределами промышленности, а внутри: в качестве младших разработчиков хотят улучшить свои навыки или в соответствующих позициях (бизнес-аналитика, TPM, веб-дизайнеры), пытаясь сделать карьеру.
Из-за его предпосылки мое первое решение состояло в том, чтобы сделать пару программирования сеансов. Мы бы выбрали проект построить (в нашем случае, форум), и мы проходим через процесс создания его вместе.
Я выбрал парное программирование, потому что это работало со мной. Мой «наставник» был одним из моих ранних менеджеров, Кен Демарест, и каждый раз, когда мы будем сидеть вместе и работать в проблемной руке от руки, я бы оставил с горсткой новых знаний и ощущения, что мне было немного лучше. Я не уверен, что это самая продуктивная практика в рабочей среде, и я буду спорить с кем-либо, как так, но это определенно является блестящим способом передачи знаний.
И это была моя первая победа: я думаю, что этот подход работал очень хорошо с нами. Процесс:
Мы начнем с обсуждения проблемы, которую мы пытались решить это время, я кратко объяснил, как это сделать и, возможно, поставить пару примеров, а затем, когда он делятся на экране, мы реализуем его. Если он заблокирован, я помогаю ему решить проблему, но иначе я позволил ему продолжать еще, он закончил. После этого мы обсуждаем его подход и как это может быть улучшено.
Одна из трудностей, которые я столкнулся, специально в начале, знает, когда участвовать. Должен ли я диктовать каждый шаг? Отпусти его? Правильные ошибки, как я их видел? А как насчет стиля?
После некоторой попытки и ошибки я узнал пару хитрости:
В начале диктация полезна. Особенно изучая технологию или технику, которая ему неизвестна. Просто говоря, что ожидается, позвольте ему ввести его и обсудить его после работы очень хорошо. Это дает ему возможность посмотреть, как приблизиться к этой проблеме и ощущению решения.
Диктация не работает не в определенной точке. Пару раз Рой активно спросила меня, сможет ли он решить определенную ситуацию сам первым. Это было головой для меня: я не давал ему достаточно шансов проверить то, что мы учились вместе. Однажды он увидел пару раз, как проверить стремление в рельсах, он хотел написать следующий тест. Справедливо! Позволяя сделать это так, помогло мне посмотреть, что он понял, и что нужно был быстрый обзор.
Я был очень рад подтвердить, что этот подход работает. Через пару раз проходите процесс проектирования решения, он удивил меня пару раз, заранее указывая, какой код необходим рефактором и как его следует сделать или видеть правильный шаблон для использования в определенных проблемах. Это было очень полезно для меня: это означало, что он что-то получил от наших сессий.
Забыть о технологиях
Хотя первоначальная идея состояла в том, чтобы работать на рельсах и реагировать, я хотел сделать наши сеансы технологии агностики. Я не хотел оставить его как «рельсы и реагировать разработчиком», но как кто-то, кто может узнать что-то новое и строить проекты с ним. Знание того, как сломать проекты, как понять систему типа или как написать тестируемый код намного более важные навыки.
В начале это было немного сложно, особенно потому, что я не то, как толкать наши сеансы таким образом. Однако тот факт, что Рой провел предыдущий опыт работы и уже знал основу технологий, которые мы использовали, очень помогли в этом вопросе. Медленно я пытался сосредоточить наше время о том, как проекты инженера и как выбрать инструмент, а не овладеть молотком и пилой.
Что-то, что помогло мне здесь ввести новые вещи в уравнении: «Эй, что, если мы преобразуем наше веб-приложение в телефонном приложении?», «Эй, что, если мы поставим все это в докерный контейнер?», «Эй, что Если мы используем TypectScript? »
Это была моя вторая победа. Я думаю, что это более упругий подход в том, что научиться нам много помогать. Я знал, когда произошло что-то очень маленькое (и незапланированное):
Обычно, когда проблема, поднятая во время наших сессий, мой первый шаг будет идти к документации, прочитал о части кода, который вызывал проблему и посмотреть, соответствует ли использованию того, что мы делали.
Ну, однажды, Рой была открыта документация до меня! Это может показаться анекдотическим, но это был отличный сигнал для меня: это означало, что он учился подходить к новой технологии.
TL; DR: Мы начали разрабатывать форум с рельсами и реагировать. Сейчас мы создаем систему для классификации сообщений в блоге, скрепленных из блогера по предметам, используя Spark/Scala и Scrapy/Python. Коммутационные технологии дали мне возможность преподавать передаваемые навыки, которые не привязаны к определенному языку или структуре.
Искусство отладки
Я не хочу уходить, не говоря об этом. Я думаю, что большую часть времени мы проводим вместе, мы проводим это ошибки отладки. И мы видели их всех цветов:
Опечатки, переменные без ожидаемого контента и CO: специально при программировании с JavaScript. И я думаю, что это был большой урок для нас: компилятор поймал бы это. На самом деле, когда мы начали использовать TypectScript, он (а я) был очень доволен результатами в этой области.
Ошибки третьих сторон: пару раз, мы нашли ошибки в библиотеках, которые мы использовали. Это дало нам много классных возможностей: во-первых, чтобы узнать, как правильно управлять зависимостями и секундами, чтобы узнать, как представить запрос на потяжку в исправлениях. Он даже внес вклад в хранилище Определенныйтипрованный Чтобы исправить одну из проблем, которые у нас были.
Проблемы с проблемами. Потому что никто не может избежать CORS при работе в веб-разработке.
OOM (вне памяти). Когда мы переехали в большую обработку данных, мы столкнулись в пару случаев проблем с отсутствием памяти. Это дало нам возможность узнать, как проанализировать наши решения и как его оптимизировать. И если это можно оптимизировать! В пару ситуациях нам просто пришлось разобраться с меньшими данными.
Хотя это может быть расстраивается, чтобы проводить время преследования времени, я думаю, что это действительно ценно. Специально, когда вы пытаетесь узнать, как на самом деле создать программное обеспечение. Посмотрим на него, для нас, работая в отрасли, отладка делает большую часть нашей работы. Это не гламурное, это не смешно, это не рекомендуется для вашего здоровья, но это необходимо. И зная, как прочитать трассировку стека, как определить, какую часть кода участвует, и рассуждать об ошибках, является одним из наиболее важных навыков, которые должен иметь разработчик.
Что я знаю сейчас
Итак, я собираюсь начать с нового Утешителя. После всего этого времени, что я узнал?
Выбор долгосрочных отношений была хорошей идеей. Я не думаю, что наше согласие с Роем работало бы, если у нас было всего два или три недели. Я далеко не так хорошо!
Прекращение важно. Зная перед тем, что ожидать, то, что они знают, и то, что они ожидают узнать, жизненно важно, и помогает сделать начало гладким.
Не фокусируйте все свои энергии по технологиям. Просто учить рельсы и реагирование не работает долгосрочной перспективы. Часто более важно знать, как узнать новый стек, как отлаживать проблему, как прочитать код, который не ваш, как структурировать проект или как разыгрывать компромиссы в проектах.
Адаптивность. Я, как наставник, должен знать, как адаптировать к человеку, с которым я работаю, и ожидания, которые у них есть.
Я чувствую, что Рой должен был пострадать немного неопытности в теме, и я прошу прощения за это. В то же время я думаю, что мы оба очень научились в процессе, и я не могу дождаться, чтобы применить то, что было изучено в новом опыте.