Я рассматриваю «наставническую сторону» как навык, с которым у меня есть карусельные отношения любви и ненависти, которые каждую неделю или около того подталкивают меня к краю, заставляя меня самому становиться лучшим разработчиком программного обеспечения.

Я думаю, это звучит примерно так: вам нужно выучить что-то 3 раза, прежде чем вы сможете это объяснить.

История 📰

Вы можете пропустить эту часть, если хотите сразу перейти к делу, это личный раздел.

Вскоре после того, как меня наняли на последнюю работу, я узнал, что компания участвует в местной программе Coder Dojo для детей. Наш технический директор отвечал за обучающую часть в течение нескольких месяцев, а мы были поддержкой. Мы использовали платформу JavaScript Khan Academy для детей в возрасте от 9 до 16 лет, чтобы научить их основам программирования, создавая классные мини-игры с нуля.



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

Я не ребенок, обычно я ненавижу детей (кроме своих детей), но мне понравился опыт, который у меня был с ними, как учителем, и после. Я провел небольшое исследование, моя жена и я, и мы (как я и моя жена) собрали всех наших племянников и основали собственное частное додзё в качестве летней школы. Я разработал более 7 уроков, начиная с основных технологий, лежащих в основе компьютера (компоненты, аппаратное и программное обеспечение), ИТ, и, в конце концов, мы подошли к урокам программирования. Мы использовали Scratch для пары уроков и сделали несколько классных проектов.



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

Каждый должен знать, как все работает, и большинство «вещей» (уже) будет работать с программным обеспечением.

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

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

В то же время племянник (который посещал мое «летнее додзё») и его друг поступили в среднюю школу и обратились ко мне с просьбой научиться программировать. Они сказали, что их учитель провалил их (как и ожидалось), пропустил уроки информатики и сразу перешел к написанию задач на C ++. Я сделал несколько дополнительных уроков по основам теории, как работает аппаратное и программное обеспечение, почему мы создаем программы, чтобы ускорить их работу. Мы продолжим дополнительные занятия по программированию.

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

Дотянувшись до моих антенн и пытаясь помочь людям на разных платформах / форумах программирования, другие студенты сочли мои ответы полезными и связались со мной для получения дополнительной помощи.

Я пытаюсь сказать, что если вы хотите что-то сделать, делайте это, и другие последуют за вами.

Что именно я делаю со своими подопечными? 👣

Хороший вопрос, я не думал об этом, пока мне не нужно было написать эту статью, поэтому вот пара вещей:

  • Я доступен, я открыл несколько каналов связи и отвечу, когда им понадобится помощь
  • Я отправляю им ресурсы в зависимости от их навыков, уровня и потребностей. Я смотрю кучу видео, читаю блоги и статьи и иногда нахожу что-то, что может быть полезно для одного из них
  • Проверка кода. Я могу научить их новым концепциям, шаблонам и методам кодирования на основе написанного ими кода, потому что они знакомы с проблемой, которую они оценят, и лучше понимают ее решение.
  • Книги, курсы и статьи. На этом уровне им необходимо сформировать хорошую основу, сейчас самое время познакомить их с лучшими практиками, «Бандой четырех» и другими известными книгами.
  • Я часто присылаю им математические / логические головоломки, игры и задачи. Эти упражнения для мозга особенно подходят подопечным, которые не закончили среднюю школу или университет по математике / компьютерным наукам.
  • Сеансы программирования в реальном времени, когда я свободен, я показываю свой экран и пишу проекты для домашних животных с открытым исходным кодом. Я объясняю им, как я работаю, что делаю и почему на каждом этапе. Здесь я могу познакомить их с новой IDE, псевдонимами git, методами рефакторинга…
  • Я прислушиваюсь к их проблемам и техническим решениям, которые они приняли на работе, после чего пытаюсь объяснить, какие еще существуют альтернативные решения, их плюсы и минусы. Здесь я обычно объясняю технологии, языки и фреймворки, парадигмы программирования или некоторые базовые концепции, которые они могли упустить ...
  • Я часто разговариваю с ними и помогаю им выбрать / спланировать карьерный путь. Если они хотят оставаться в этой области в течение следующих 5–10 лет, у них должна быть цель и работать над ней. Я пытаюсь составить с ними план по набору основных навыков (навыки работы с людьми, технические навыки, знания и т. Д.) и того, как и когда им следует расширяться дальше для достижения своей цели.
  • В противоположность предыдущему пункту, я пытаюсь удержать их фокус. Очень легко потерять фокус в веб-экосистеме, каждую неделю появляется что-то новое, вы должны придерживаться плана, то есть у них должно быть «сильное ядро», они должны быть хороши в чем-то (например: серверные приложения Java или CSS ) и одновременно изучать смежные предметы.
  • Я стараюсь не разрушать их мечты. Если они хотят создать следующий Google, как опытный разработчик, я понимаю, что это подразумевает, с деловой и технической точки зрения. Первое, что у меня возникает, - это сказать «нет, остановись, сосредоточься на том, что ты ДЕЙСТВИТЕЛЬНО можешь сделать». Я стараюсь не прислушиваться к инстинкту, так как думаю, что, возможно, я должен позволить им мечтать, может быть, они добьются успеха или удариться о стены, которые я ударил, когда был в их возрасте. Новый свежий взгляд на проблемы часто приводит к изобретениям.
  • Встречи. Время от времени я организовываю небольшие встречи, встречаюсь со всеми моими подопечными лично или по телефону. Я стараюсь выбрать более общую тему, чтобы все участники могли узнать что-то новое, но, независимо от их технического уровня, последние 2 сеанса были: сети / DNS (серверы доменных имен) и случайные.
  • Я всегда использую визуальное средство для объяснения вещей. Если у нас нет доски, которую должен использовать блокнот, им будет легче понять, если мы воспользуемся другими способами передачи одного и того же (аудио и видео).
  • Я строю с ними проекты с открытым исходным кодом. Я могу рассказать о той стороне проекта, которая связана с новыми технологиями (для меня), а подопечный будет работать с технологиями, которые я уже знаю (но для него новые). Таким образом, мы можем учиться чему-то и при этом работать вместе.
  • Я что-то пропустил? Дайте мне знать в комментариях, если у вас есть предложения.

Сложные вещи 💪

Я стараюсь не быть предвзятым. За моими ответами обычно следует контекстное объяснение и объяснение того, как я пришел к такому выводу, чтобы они могли проследить его и выбрать другой путь, если они этого захотят. На большинство вопросов есть серые ответы, абсолютной истины нет.

Что касается подопечных, у которых уже есть работа, я часто обнаруживаю, что они не знают о базовой концепции, которую я считаю «базовой». Я имею в виду, что такие понятия, как «кеширование», кажутся мне настолько тривиальными, что я даже не думаю, что мои студенты не знают об этом, особенно после того, как они создали несколько коммерческих веб-сайтов. Но опять же, по крайней мере в моей стране, это обычная практика - нанимать младших разработчиков и поручать им все (архитектуру, разработку и т. Д.) Без старшего в команде, в нетехнических компаниях. По мере того, как они получают, они становятся пожилыми (по названию) и все же пропускают несколько основных понятий по ходу дела, особенно если они не имеют технического образования. Идея состоит в том, чтобы время от времени спрашивать их: вы знаете, что такое X, верно?

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

Чтобы выйти за рамки моих возможностей, нужно время. Я могу преподавать только 60% моих текущих знаний в области информатики, потому что для того, чтобы что-то объяснить нетехническому человеку / юниору, вы должны иметь глубокие знания. Иногда я обманываю и просто читаю им статьи, но я не могу объяснить, например, как работает Hadoop, потому что я с ним не работал. Когда я знаю, что мне нужно преподавать конкретный предмет, мне нужно как минимум 4–5 часов предварительного исследования, чтобы собрать все данные, расположить концепции в логическом порядке и свести их к простым объяснениям, предпочтительно с изображениями и диаграммами.

Ограничьте их время. Я хочу, чтобы мои ученики многому научились за короткое время, чтобы они могли продвигаться быстрее, но их время ограничено, а также нехорошо выучить много вещи без практики, потому что мы забудем. Мне сложно «следить за своими потоками ресурсов», я мог бы отправлять им 20 книг и 2 часа видео каждый день и просить их смотреть и внедрять материал, но у них обычно есть только 1 час в день, например, чтобы учиться.

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

  • почему компьютеры в наши дни все еще работают в двоичном формате
  • у нас уже есть «настоящий ИИ»? а если нет, то почему так сложно сделать один
  • каковы другие структуры данных / базы данных (кроме текстовых файлов и электронных таблиц). У нетехнических людей есть проблемы с представлением новых концепций, но после нескольких примеров у нас все хорошо (графики, деревья, связанные списки…)

Вдохновения 🤔

Я сам учусь и наблюдал за великими учителями, такими как Карл Саган и Нил ДеГрасс Тайсон, онлайн-классами Массачусетского технологического института, курсами udacity и другими, и понял, что никогда не смогу быть таким за 1000 лет. Я неграмотен, мой словарный запас ограничен, и у меня не хватает терпения, но я работаю над этими проблемами.

Самое простое правило, которое я усвоил и которое оказало большое влияние на мои преподавательские навыки (и это то, в чем большинство школ терпели неудачу), - сначала объяснить «Почему» и затем «как / что / когда». Зачем нам нужны базы данных, зачем нам машинное обучение или переменные и т. д.

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

Любопытство, я пытаюсь вызвать у них любопытство во всем, заинтриговываю их тем, что может их заинтересовать, и оставляю их в покое: «пойди и узнай на себе».

Я стараюсь работать с их интересами и хобби. Любишь футбол? Научитесь программировать, создав проект, связанный с футболом.

Новые студенты 👩‍🎓

Если вы ищете наставника, вы можете связаться со мной. Тот факт, что вы прочитали эту статью, кое-что говорит о вас, но сначала вы должны соответствовать следующим критериям:

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

Ресурсы 📚