Делает ли обучение программированию тебя лучшим программистом [закрыто]


40

Я считаю себя программистом среднего уровня на Python, и мне предложили стать тренером для начинающих программистов на Python.

Мне было интересно, действительно ли это расширит мой программный репертуар. Был ли у кого-нибудь полезный опыт после того, как он успешно обучил группу людей?

Зависит ли это также от этих людей - программистов или нубов? (В моем случае они являются промежуточными программистами .NET и Java)

Чего мне от них ожидать?

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


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

Спасибо. Но обучение НЕ в университете - это единовременная возможность для обучения некоторых сотрудников Java / .NET из нескольких небольших компаний, занимающихся веб-разработками.
Treecoder

34
Обучение что - нибудь сделает вас лучше на него , потому что обучение заставляет вас полностью понять его . Кроме того, вы, по сути, заново изучаете его, пока учите.
Джейк Бергер

2
Будьте самим собой и выражайте свои знания. Студенты - это такие же люди, как вы и я, которые собираются учиться, слушая вас в аудитории. Когда ваши ученики получат высокие оценки или найдут отличные решения своих проблем из-за вашего обучения, это проявится. Удовлетворение, которое вы можете получить от этого, может легко бросить вызов выражению.
vpit3833

2
Все тренеры, с которыми я когда-либо беседовал; провалил собеседование на должность разработчика. Программирование это не просто теория. Чтобы стать лучшим программистом, вы должны учиться и практиковаться, создавая приложения для реального мира.
Мухаммед Хасан Хан

Ответы:


37

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

И да, иногда студенты задают вопросы, на которые вы не знаете ответа. Это нормально, вы можете сказать им, что не знаете, придумать возможное объяснение и пообещать изучить его до следующего урока.


1
@greengit Я бы посоветовал вам сравнить языки, но убедитесь, что вы действительно знаете, о чем говорите, когда говорите, что один язык лучше другого, потому что некоторые студенты могут не соглашаться и иметь действительные контраргументы. Сравнение их и демонстрация способов, с помощью которых python облегчает выполнение различных задач по сравнению с Java / .NET, является отличным способом представления концепций.
Райан Мэтьюз

2
Я бы сказал, что сравните минимум до минимума и сосредоточьтесь на том, как делать вещи в Python. Я предполагаю, что они уже знакомы с базовыми конструкциями, такими как назначение переменных, циклы / итерации, функции, рекурсия, структуры потока управления и т. Д. ... Это может помочь в разработке проекта, который они строят в течение курса (если этого достаточно для этого) ,
FrustratedWithFormsDesigner

3
@greengit Не притворяйся, что знаешь то, чего не знаешь. Если вы не знаете достаточно, чтобы провести сравнение, используйте его в качестве учебного материала и попросите вашего ученика объяснить, как он работает в Java / .NET, и попытайтесь провести сравнение вместе.
Davy8

2
@greengit Я думаю, это помогает не предполагать, что вам нужно знать все о предмете. Это все равно что ожидать, что вы сделаете работу без возможности искать ссылки. Просто будьте в порядке с тем фактом, что у вас не будет ответов на все вопросы, но вы можете помочь направить своих студентов к ответам. Может быть, дать им ключевые термины в Google.
Davy8

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

30

Старое исследование Техасского университета сделало следующие выводы.

Люди сохраняют:

  • 10 процентов того, что они читают

  • 20 процентов того, что они слышат

  • 30 процентов того, что они видят

  • 50 процентов того, что они видят и слышат

  • 70 процентов того, что они делают

  • 90 процентов того, что они преподают

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

Несмотря на то, что я проходил курс обучения в Comp Sci 101 в школе, я устроился на репетиторство по C ++ и фактически не учился C ++, пока не был вынужден преподавать его трудным ученикам. Это было похоже на оргию лампочек, вспыхивающих в моей голове, когда я помогал выпускникам без CS с их заданиями.


2
+1. Мой предел голосования достигнут :( Пожалуйста, укажите мне ссылку, если таковая имеется.
treecoder

22
Может быть, вам следует прекратить ссылаться на эту таблицу. willatworklearning.com/2006/05/people_remember.html
Шон Д.

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

3
Хорошая статистика +1. Мой опыт во многом такой же. У нас тут есть поговорка: те, кто могут, делают. Те, кто не умеют, учат. Те, кто не умеет учить, учат спорту. Шучу :)
Сокол

2
@Falcon, другая версия последнего предложения звучит так: «Те, кто не умеет учить, управляют» ;-)
Петер Тёрёк,

10

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

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

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


5

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

Вы упомянули в комментарии, что ваше «знание Java / .NET близко к нулю». Это прекрасная возможность учиться у ваших учеников. Обучение не является односторонним процессом.

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


+1 за «вы также можете учиться у своих учеников, если вы открыты для этого», я испытал это, когда несколько лет назад преподавал несколько ночных уроков.
DevSolo

4

Да, вы получите более глубокое понимание. Я сделал подобные опыты, как и другие ответы, которые вы получаете здесь.

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

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

Я думаю, это нормально. И у моих ученых не было проблем, когда я был честен (и я дал ответ позже). Наоборот - они видели, что никто не должен знать все. Самое главное, чтобы знать, как получить информацию. Один из моих лучших уроков был, когда я не знал ответа, и мы вместе искали руководство, чтобы получить ответ. После этого они умели читать мануалы.


4

Я преподавал на уровне технического колледжа (но не на разработке программного обеспечения). Вот мой дубль:

Это сделает вас лучшим программистом?

Не 1: 1. Вы не получите такой же опыт, как и при написании программ, но это совсем не плохо (читай дальше).

Расширит ли это ваш программный репертуар?

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

Это также зависит от этих людей?

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

Чего мне от них ожидать?

Я ожидаю, что они выиграют больше всего, если у вас будет возможность связать содержание курса с языками, с которыми они уже знакомы: «Да, предмет похож на Java в этих отношениях , но отличается по этим причинам ». Я ожидал бы, что скорость их обучения будет достаточно быстрой, поэтому вы должны ожидать, что вы уделите много времени внеклассной подготовке (опять же, многому научиться, но темы могут заинтересовать большинство разработчиков).

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

Ну, они такие же опытные, как и вы, но в другой области (хотя и связаны). объяснения могут быть сложными, и нельзя ожидать, что вы будете знать все или иметь ту же область знаний, что и все они (вместе взятые). Умение сказать «я не знаю» - хорошее качество для учителя. Если они также имеют опыт, вы можете прийти к ответу через короткое обсуждение («О, мы решаем эту проблему, используя эту технику »). Если это не помогло, вы должны найти ответ к следующему сеансу (для вас и для них).


3

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

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


3

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

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

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


3

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

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


2

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

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

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


2

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

Кроме того, учащиеся могут привнести в проблему другое понимание или (странную?) Методологию, расширяя пространство решения.

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


1

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


1

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

Я встречал, возможно, профессоров в области ИТ, которые были невежественны, когда речь шла об их реальной сфере деятельности. У них были сертификаты, курсы, документы на стене, много «шоу». Конечно, они могли бы говорить, но если вы когда-либо выходили из предписанного графика курса, они трепетали, заикались и терпели неудачу. Они не могли справиться с давлением изменения вещей. Они не менялись со временем, они учили тому, что знали, что устарело.

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

12 лет назад мой учитель 11/12 класса дал мне предложение. Если бы в течение каждого учебного года мне удавалось нарушать его безопасность / брандмауэры и т. Д. В школе, он давал бы мне A + (100%) по курсу, независимо от моей работы. Черт возьми, я помог ему спланировать курс, поскольку я работал младшим. разработчик тогда. Это предложение, которое он дал мне, сделало его (в то время) экспертом по безопасности Windows NT. Я получил 100%, я должен был украсть его UN / PW и затем заблокировать его ... это был единственный путь в конце ... Но не стоит и говорить, что он стал лучше как преподаватель, так и в области информационных технологий благодаря преподаванию - он работал со своим классом - не по своей повестке дня.

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


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

1

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


1

Основано на собственном опыте преподавателя. Я бы сказал, нет .

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

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

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

Другая тема - ритм работы. «Учителя» медлительны, они не используются для быстрого решения реальных реальных проблем.

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


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

1

ДА!

Louis E. Frenzel писал о именно это несколько лет назад:

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


1

Не имеет прямого отношения, но ...

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


Я люблю такие корреляции!
junky

1

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

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

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


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

0

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


0

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

Подготовка людей, которые уже являются программистами, - это целый уровень дополнительных усилий. Вы можете ожидать, что в классе есть люди, которые ненавидят то, что их просят выучить любимого на Python C # (или чего-то еще). Они будут оспаривать все, что вы говорите. У вас могут быть люди, которые уже обладают определенными знаниями и будут задавать сложные вопросы в первый день. В первом случае убедитесь, что вы придерживаетесь темы и НЕ вступайте в обсуждение различий между языками, если класс не ведет себя враждебно. Просто вернитесь к материалу, который вы собираетесь освещать. Во втором случае почти все сложные вопросы могут быть рассмотрены позже в классе (давая вам время, чтобы найти ответ, если вы не знаете его.) Так что это должно придать вам уверенности. Я всегда готовлю более сложные упражнения для людей, которые берут уроки, потому что они должны, но они уже знакомы с предметом. Вроде самостоятельная учеба для легко скучающих. (И удивляются ли они, когда я вытаскиваю эти сложные упражнения для них, а остальные борются с упражнением, которое они выполнили за пять минут!)

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.