- PVSM.RU - https://www.pvsm.ru -

Григорий Остер — Вредные советы для учителей программировать

Григорий Остер — Вредные советы для учителей программировать - 1


Есть у человека такой замечательный перк. Он может обучить другого человека чему-то полезному. Да, конечно, некоторые животные тоже так могут делать, но им далеко до того грандиозного масштаба, с которым мы обучаем друг друга. Мы это дело поставили на поток и проворачиваем в таких объёмах, что тут можно только позавидовать.

Доводилось ли Вам кого-нибудь учить?

Что? Вас уже корёжит и передёргивает от одного только упоминания этого мероприятия? Вы постоянно вспоминаете о том самом стажёре, который был настолько туп, что Вы просто не могли себя сдержать?

Кто-то обвалил собранную базу данных, потому что не увидел разницы между rm -rf ./old и rm -rf . /old?

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

Заходите, поговорим.

Отступление: про Григория Остера

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

Давайте поговорим о том, как учить людей.

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

Все данные проверены (и изучены) на собственном опыте.

▍ Итак, что является самым главным при обучении кого-либо?

Если вы учить решили
Сисадминов молодых
То, пожалуйста, не надо
Мямлить что-то там для них

Притворитесь лучше тигром
Грозно рыкните на всех
Ведь, чем лучше вы кричите
Ближе будет тем успех

Обученье страх вселяет,
И поэтому должны
Вы вселять вселенский ужас
В тех, кто в дар вам отданы

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

Итак, у нас есть сферический ученик в вакууме. Назовём его Василием. Василий попал в Ваши цепкие лапы, и стоит перед Вами с огоньком в глазах. Василий хочет познать HTML и Javascript. И тут Вы начинаете убивать его стремление учиться. Как? Случайно. Я слышал о многих идиотских методиках, которые «объясняют», как надо учить. Вот основные:

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

Да, несомненно, Вам самому надо быть в форме. Если Вы сейчас придёте в любую приличную контору и скажете, что Вы умеете делать docker swarm, то Вас засмеют. Сейчас даже и k8s не в моде. Люди уже перешли на Helm и тому подобные приблуды. Но, это не причина не учить Василия. Это повод для того, чтобы сесть и самому подучиться.

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

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

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

Второе идиотское утверждение: Василий — дурак и не может научиться.

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

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

А пока, поймите, что с этим Буратино можно что-то сделать.

Не верите? Ну вот Вам история из жизни. Моя прабабушка работала в интернате для глухонемых детей. Она учила их разговаривать. Тот ещё финт ушами. У неё были железные нервы и стальное терпение. По количеству титана в своём организме она могла запросто переплюнуть Бендера Родригеза. Она никогда не выходила из себя по отношению к своим ученикам. Это бесполезно. А моя прабабушка рассказывала мне о методах обучения слепо-глухо-немых детей. Тут я уже сидел в шоке. Но ничего. Обучали. И дети начинали говорить. Специальным языком жестов и прикосновений, но они могли общаться.

А тут перед Вами стоит увалень, у которого в наличии два глаза, два уха и рот. Вы мне после этого будете рассказывать о проблемах? Ха!..

Опять же, конкретные методы и приёмы приведены ниже.

Третье идиотское утверждение: Он просидел в ***ГУ последние пять лет, он уже знает, что делать. Тут, думаю, большинство прекрасно понимает, что это утверждение является просто откровенной чушью. Не ведитесь на это. И не позволяйте вешать себе лапшу на уши.

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

Мы все помним, что «матан с диффурами и статистикой были сущим адом, и никто их не любил». Мы все знаем, что «все эти данные абсолютно бесполезны», и т. п. Глупости. Спросите любого дата-сатаниста Петю, который сидит и гребёт деньги лопатой, потому что он прекрасно понимает, как работают статистические методы. Спросите AI-инженера Витю, как ему удаётся делать такие крутые модели для распознавания видео без базового понимания рядов Фурье. Подойдите к 3D программисту Анатолию и попросите его рассказать, как можно перевернуть картинку, не перемножая матрицы?

Но, не забывайте, что все эти знания достаточно сильно оторваны от реальности. Матан это Вам не Maya или Blender. С одними только диффурами далеко в tensor-flow не уедешь. Более того, для использования этих инструментов Вам не обязательно знать подлежащие науки. Но, если Вы знаете подлежащую теорию, то Вы можете использовать эти инструменты эффективно.

Обучения много не бывает. Обучения бывает мало.

Ладно. Разобрались с Вами, теперь давайте посмотрим на нашего сферического ученика в вакууме.

▍ Что такое “понял”?

Если новоиспечённый программист
Сидит перед книжкой со стеклянными глазами
То ни в коем случае даже не пытайтесь
Объяснить ему что-то сами

Пусть он познает
Как сложно бывает
Понять что-то быстро
В профессии вам.

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

Понял — это когда знаешь, как что-то делать.

Понял, это когда у тебя в голове крутится 3D модель компьютера, с которым ты работаешь.

Понял, это когда тебе говорят “G10” а ты в ответ берёшь Соль в пятой октаве.

Вы когда-нибудь видели того самого механика «в гаражах», который мог подойти к машине, послушать её движок и сказать Вам: «У тебя ремень не к ****, его ***** нужно ***** вообще **** *** ***** менять.» Что бы Вы ни говорили, он понимает, как что-то работает. Это может быть старая Тойота Королла 2009 года выпуска. Человек может в идеале знать всё об этой модели и ничего не понимать в других машинах. Есть такие, кто могут разобрать любой двигатель с закрытыми глазами и пересобрать его с завязанными руками. Эти люди понимают, как работает двигатель.

Когда ты приходишь к нашему юному дубку и говоришь ему: «вот тебе система, она не работает, почини её...» Он может просто впасть в ступор. Он прочитал все книги по k8s, которые он только видел. Он просмотрел 100+ часов по k8s и может запросто отбарабанить Вам все параметры командной строки для gcp, только толку от этого мало. Он не понял, что такое «система» и как она работает.

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

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

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

▍ Как помочь человеку понять?

Если перед вами стоит
Новоиспечённый неофит
И в глазах его весь свет
Ярким пламенем горит

То не стоит поддаваться
И по-быстрому давать
Ему в руки что-то
Чем бы он мог управлять

Пусть сначала пострадает
Бедный маленький ребёнок
И обломит все желания
Задушив свой интерес

Один из самых главных моментов в обучении — это не убить искру. К Вам заходит неофит и говорит: «О, мастер! Дай мне силы познать Сишарп!» Не проблема, говоришь ты. Вот тебе Дональд Кнут, а вот Страуструп. Прочитай их, выполни все задания, и я тебя научу шарпам.

Если у Вас в руках не настоящий фанатик, Вы его больше не увидите.

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

Давайте, вспомните сами, каково это было для Вас в первый раз? У каждого из нас есть своя история. После множества часов игры именно в Theme Park я увидел закономерности в том, как посетители двигаются по дорожкам. В тот момент я осознал, что кто-то только что описал какую-то невероятную вселенную, которая живёт по своим правилам. Я был в шоке от того, насколько интересной могла быть эта вселенная. И мне захотелось создать свою игру. Прошло много лет, прежде чем я действительно научился писать программы. Я выучил паскаль, ассемблер [1] и многие другие вещи, но вот именно эта картинка всегда стояла перед глазами.

Григорий Остер — Вредные советы для учителей программировать - 2

После неё были Roller Coaster Tycon, Theme Hospital, Transport Tycon Deluxe и Factorio. Но оригинальный Theme Park навсегда запомнится мне как первая игра в которой хотелось разобраться.

Убедитесь, что Вы не задушите эту надежду, приобщиться к новому знанию, рассказами о том, что «программирование — это сложно и у тебя так не получится». Не надо рассказывать о том, что сложно. Расскажите о том, что легко.

«Неофит ты наш. Так, с разгону написать игру ты не сможешь. Но, у меня есть идея. Мы начнём с очень простой игры и будем её усложнять, пока у тебя не появится новый Дум». Что-то в этом роде.

Любое обучение чему бы то ни было будет подчиняться этому правилу. Человек ХОЧЕТ научится чему-то. Учите его этому, не убивайте в нём желание учится вашими «Нииииизя». «Льзя!» [2].

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

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

Григорий Остер — Вредные советы для учителей программировать - 3

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

Далее, начинайте учить. Как? Ну, вот именно конкретно это — не тема нашей статьи. У Вас могут быть учебные планы. Могут быть какие-то курсы. Может быть, Вы можете выдать ему хорошую книгу. А может быть, Вы просто возьмёте себе пацана в подмастерья, чтобы он следил за тем, как Вы скручиваете бело-оранжевый, оранжевый, бело-зелёный, синий… Как бы то ни было, существует множество программ обучения. Некоторые Вы испытали на своей шкуре, о некоторых Вы слышали. Хорошо. Если Вы знаете, где найти хороший материал, обязательно сохраните его в надёжном месте.

▍ А что если оно тупое и не понимает?

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

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

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

Посмотрите. Вы поржёте. Вы же знаете, как работает дисковый телефон? Хех, я в своё время приводил в ужас юнцов, когда поднимал трубку и звонил в приёмную путём нажимания на курок 10 раз подряд. А нынешняя детвора не может набрать номер на диске.

Являются ли идиотами эти дети, если они не знают, как пользоваться дисковыми телефонами? Нет. У них нет понятия о том, как работает коммутация в телефонных сетях. А я — инженер NEC. Я учил историю этой коммутации и знаю, как она работала при Александре Белле. Означает ли это, что у меня IQ выше? Ха! Один из этих мальчишек продал каких-то там NFT на $200,000, а я эти NFT прошляпил и понятия не имею, как они работают.

Посему, когда Ваш новоиспечённый садится, открывает Dockerfile и первым делом заменяет FROM ubuntu:20.04 на FROM apline, не спешите рубить его световым мечом в фарш.

Давайте начнём задавать вопросы:

«Почему ты это сделал?»
«Ну, альпин, он меньше!»
«Ага, а какая разница между убунту и альпином?»
«Эээээ…»
«А вот у нас на сервере стоит CentOS. Когда ты запускаешь Ubuntu контейнер с Alpine образом, то какое ядро будет запускаться, CentOS, Ubuntu или Alpine?»
«Ээээ… CentO…»
«Швах!» И новоиспечённый DevOps получает ногой под зад.

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

У него не было университетского образования или просто опыта работы. Он слышал о чём-то, но он этого не понимает, потому что он не понимает подлежащих методов и терминов.

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

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

Происходит от лат. inductio «выведение», далее из гл. indūcere «вводить, внедрять», из in- «в» + dūcere «водить, вести» (восходит к праиндоевр. *deuk- «вести»).

Его как током ударило. Он внезапно понял, откуда в проводах появляется ток под воздействием магнитного поля, и почему это называется индукцией. В течение следующих трёх дней он без остановки, по 10 часов в день, с горящими глазами читал все те статьи, которые он не понял. Он разобрался с электричеством, после чего смог понять, как работает p-n переход. После этого ему открылся мир транзисторов, и немного поигравшись с оными, он разобрался в гейтах, которые потом позволили ему понять простые логические структуры, разобраться в том, как в общих чертах устроен процессор, и сесть изучать C#, с полным пониманием того, что это JIT-компилируемый язык, который отличается от нативного ассемблера для конкретного процессора.

И, конечно же, тут нет какого-то фиксированного подхода. Каждый человек уникален. Ваша задача, как преподавателя, понять, что нужно этому человеку, чтобы понять. Если Вы учите программиста, можете ограничиться тем, что скажете, что по проводам скачут электроны, которые переносят заряд из точки А в точку Б. А если учите инженера-электронщика, то тут даже последнее видео veritasium [3] будет так, для новичков.

Мы с ним тормозили две недели, разбирая неясности в подлежащих технологиях. После этих тормозов он летал. Он не задавал тупых вопросов о том, как скомпилировать Java на Шарпах. Он понимал и знал, с чем он работает. И это знание зиждилось на куче маленьких и простых фактов.

▍ Не убей дитятко, давая ему слишком много за один раз

Как только к вам кто-то
С вопросом пришёл
Ответьте вы сразу
И очень уж много
Чтобы он весь расплакавшись
Быстро ушёл

Григорий Остер — Вредные советы для учителей программировать - 4
Не стоит пытаться вывалить на своего подопечного всё сразу. Именно это я ценю в хороших книгах и курсах. Такие курсы построены по принципу “понемногу”. Если мы с Вами будем заниматься ядерной энергетикой, то уж лучше убедиться, что дитятко понимает основные принципы материи.

Если мы будем работать с Java и C#, то куда ни плюнь, без ООП ты не обойдёшься. А если Вам хочется учить его яваскрипту, то начать стоит с основных принципов функциональных языков.

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

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

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

▍ Тренировки и повторения

Григорий Остер — Вредные советы для учителей программировать - 5

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

Если Вы учите кого-то администрированию линукса, то такие вещи как lsusb, lsblk, nestat, ls -lah, traceroute, и т.п. должны просто вылетать из-под пальцев. Тут, как ни крути, человеку нужно тренироваться.

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

Григорий Остер — Вредные советы для учителей программировать - 6

Ну ладно Вам, кто из нас не делал такого ни разу в жизни?

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

Если Вы учите DevOps, который должен уметь развернуть новую систему из бэкапа за пять минут, то дайте ему бэкап и тестовый стенд. Пусть он сидит и разворачивает всё это дело. После повторения этой операции N-ное количество раз, он заучит правильную последовательность действий.

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

Когда Вы последний раз видели сисадмина, который не помнит правильной распиновки кабелей в разъёме?

▍ Экзамены

Все экзамены важны,
Все экзамены нужны
Завалите вы интерна
Без какой-то там нужды!

Григорий Остер — Вредные советы для учителей программировать - 7

Все мы знаем, что экзамены бесполезны. Плохие экзамены бесполезны. Сколько бы Вы не показывали ему формулы или играли в вопросы-ответы, Вы не будете знать, насколько хорошо он понимает материал. Понимание можно оценить только его умением делать что-то, что он должен уметь делать.

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

Если Вам очень хочется устроить кому-то экзамен, то просто дайте ему реальную задачу, и пусть он её Вам решит.

Организация экзаменов по О-нотации приемлемо только если Вы его учите проходить экзамены в рекрутерских интервью.

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

Не стоит усложнять ему жизнь. Ответы на вопросы о том, в каком году был изобретён язык Си, есть в Гугле и не помогают писать программы.

Если это в Ваших силах, освободите несчастного от ужасного экзамена.

▍ Реальный пример

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

«Вы программировать умеете?»
«Не-а». На самом деле на потоке было человек пять, которые так или иначе умели писать программы, остальные вообще ничего в этом не смыслили.
«Ок, тогда мы договоримся вот о чём. Я не буду Вас учить программированию графики. Мы будем вместо этого учить основы программирования, ок?»

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

Остальные сидели и изучали основы битов и байтов.

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

И ничего, большинство из них вникло. Да, не все сразу поняли, как писать компьютерную графику, хотя до кого-то дошло. Но, с учётом того, что у меня в руках было 20 человек и мне удалось провести с ними всего лишь 80 часов, я считал победой, что большинство детишек умеют писать простейшие программы и понимают, что происходит в памяти компьютера.

На экзаменах я их не мучал. Те, кто писали Марио, получили зачёт автоматом. От остальных требовалось рассказать мне о базовых принципах программирования. И ничего, все остались довольны и за редким исключением, истерики удалось избежать.

▍ Подводя итоги

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

Если Вы ещё никого ничему не учили, то знайте вот что: Это одна из самых замечательных вещей в мире. Лет через пять Вы увидите довольного инженера, который будет рассказывать кому-то, что Вы — тот самый человек, благодаря которому у него есть работа. Человек, который у Вас чему-то научился, ещё не раз упомянет своим друзьям, что Вы — самый-самый в мире. Вам не раз выкажут почести и пригласят в разные места. Вас будут уважать.

Вы же понимаете, что, обучая людей, Вы делаете их лучше? Вам за это будут благодарны много раз.

P/s ещё одна часть со стихами — тут: Григорий Остер — Вредные советы для писателей мануалов [4]

Автор: Иван Роганов

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/370173

Ссылки в тексте:

[1] ассемблер: https://habr.com/en/company/ruvds/blog/579444/

[2] «Льзя!»: https://youtube.com/watch?v=k1p-jbK8bGg

[3] последнее видео veritasium: https://yewtu.be/watch?v=bHIhgxav9LY

[4] Григорий Остер — Вредные советы для писателей мануалов: https://habr.com/ru/company/ruvds/blog/586782/

[5] Источник: https://habr.com/ru/post/590851/?utm_source=habrahabr&utm_medium=rss&utm_campaign=590851