Ich betrachte mich als fortgeschrittener Python-Programmierer und habe die Gelegenheit, Trainer für einen Anfänger-Python-Programmierkurs zu werden.
Ich habe mich gefragt, ob dies mein Programmrepertoire wirklich erweitern würde. Hat jemand eine aufschlussreiche Erfahrung gemacht, nachdem er eine Gruppe von Menschen erfolgreich ausgebildet hat?
Kommt es auch auf diese Leute an - ob sie Programmierer oder Anfänger sind? (In meinem Fall handelt es sich um fortgeschrittene .NET- und Java-Programmierer.)
Was kann ich von ihnen erwarten?
Eine meiner Ängste ist - was wäre, wenn ich ersticken würde, wenn einer von ihnen eine verworrene Frage stelle. Ist das normal?
Antworten:
Nach meiner Erfahrung hat mich der Programmierunterricht besser gemacht. Es zwang mich, Konzepte, die ich zuvor akzeptiert oder für selbstverständlich gehalten hatte, besser zu verstehen. Als ich Ideen, die für mich alt, aber für die Schüler neu waren, auf verschiedene Weise artikulieren musste (weil nicht jeder aus den gleichen Beispielen auf die gleiche Weise lernt), führte dies schließlich zu einem tieferen Verständnis des Materials für mich.
Und ja, manchmal stellen Schüler Fragen, auf die Sie keine Antwort wissen. Das ist in Ordnung, du kannst ihnen sagen, dass du es nicht weißt, dir eine mögliche Erklärung einfallen lassen und versprechen, sie vor dem nächsten Unterricht zu untersuchen.
quelle
Eine alte Studie der Universität von Texas ergab die folgenden Ergebnisse.
Leute behalten:
10 Prozent von dem, was sie lesen
20 Prozent von dem, was sie hören
30 Prozent von dem, was sie sehen
50 Prozent von dem, was sie sehen und hören
70 Prozent von dem, was sie tun
90 Prozent von dem, was sie unterrichten
Wenn Sie dieser Logik folgen, ist es der beste Weg, etwas zu LERNEN und das Gelernte beizubehalten, wenn Sie sich bemühen, es jemand anderem beizubringen.
Obwohl ich Comp Sci 101 in der Schule absolviert habe, habe ich einen Nachhilfearbeitsplatz für C ++ übernommen und C ++ erst gelernt, als ich gezwungen war, es für Schüler mit Schwierigkeiten zu unterrichten. Es war wie eine Orgie von Glühbirnen in meinem Kopf, als ich Nicht-CS-Absolventen bei ihren Aufgaben half.
quelle
Ich habe das Programmieren nicht systematisch selbst beigebracht, sondern nur versucht, ein Konzept oder ein Problem mehr oder weniger Außenstehenden zu erklären. Es war immer eine interessante Erfahrung und ich habe jedes Mal etwas gelernt.
In der Tat hat Jan Comenius bereits vor ein paar hundert Jahren bemerkt, dass der beste Weg, etwas wirklich tief zu verstehen, darin besteht, es anderen zu erklären .
Also machen Sie es - es wird eine wertvolle, bereichernde Erfahrung für Sie. Sie werden sicherlich schwierige oder überraschende Fragen bekommen - das ist in Ordnung. Tun Sie nicht so, als ob Sie alles wüssten - seien Sie einfach ehrlich und sagen Sie ihnen etwas wie "Ich weiß es nicht, aber ich melde mich mit einer Antwort bei Ihnen". Sie werden dich nur besser dafür respektieren, dass du ehrlich bist.
quelle
Vergessen Sie nicht, dass Sie neben den anderen Antworten auch von Ihren Schülern lernen können, wenn Sie offen dafür sind.
Sie haben in einem Kommentar erwähnt, dass "Ihre Java / .NET-Kenntnisse nahe Null sind". Das ist eine perfekte Gelegenheit, um von Ihren Schülern zu lernen. Lehren ist kein Einbahnstraßenprozess.
Wenn Sie die Antwort auf eine Frage nicht kennen, versuchen Sie nicht, diese Tatsache zu verbergen. Der größte Nachteil, den ein Lehrer einem Schüler antun kann, besteht darin, dass er vorgibt, etwas zu wissen, das er nicht weiß. Bestenfalls verlieren Sie ihr Vertrauen, wenn sie herausfinden, dass Sie nicht wissen, wovon Sie sprechen. Schlimmer noch, Sie führen sie in die Irre und geben falsche Informationen weiter, die schlimmer sind als keine Informationen.
quelle
Ja, Sie werden ein tieferes Verständnis bekommen. Ich habe ähnliche Erfahrungen gemacht wie die anderen Antworten, die Sie hier erhalten.
Ich habe eine zusätzliche Erfahrung gemacht: Ich bin schneller in Fehleranalysen. Sie unterrichten die Menschen, so dass sie Fehler machen, an die Sie nie gedacht haben. Wenn du ihnen hilfst, bekommst du ein Auge für problematischen Code (zumindest habe ich das getan).
Ich denke, das ist normal. Und meine Gelehrten hatten kein Problem, wenn ich ehrlich war (und ich gab die Antwort später). Im Gegenteil - sie haben gesehen, dass niemand alles wissen muss. Das Wichtigste ist zu wissen, wie man an Informationen kommt. Eine meiner besten Lektionen war, als ich die Antwort nicht kannte und wir gemeinsam das Handbuch durchgesehen haben, um die Antwort zu erhalten. Danach wussten sie, wie man Handbücher liest.
quelle
Ich habe Kurse auf technischem College-Niveau unterrichtet (aber nicht im Bereich Softwareentwicklung). Hier ist meine Einstellung:
Wird es Sie zu einem besseren Programmierer machen?
Nicht 1: 1. Sie werden nicht die gleichen Erfahrungen sammeln, die Sie beim Schreiben von Programmen machen würden - aber das ist keineswegs schlecht (lesen Sie weiter).
Würde das Ihr Programmrepertoire erweitern?
Absolut. Sie werden neue Herausforderungen haben und einige Dinge (neu) lernen müssen, die Sie im Laufe der Jahre nie gewusst oder vergessen haben. Einiges davon wird in Zukunft nützlich sein. Es stellt Sie vor viele neue Herausforderungen und Konzepte. Sie müssen technische Probleme aus neuen Perspektiven betrachten, und Sie können viel lernen, indem Sie diese Perspektive einnehmen und diese Probleme lösen. Wenn Sie jemandem effektiv beibringen können, was er braucht, um technische Probleme zu verstehen, wird dies häufig Ihre Kenntnisse der Themen verbessern und Ihre Wissensdomänen erweitern. Sie erwähnen auch, dass sie bereits eine andere Sprache beherrschen. Einige sagen, eine der besten Möglichkeiten, sich zu verbessern, bestehe darin, neue Sprachen zu lernen.
Kommt es auch auf diese Leute an?
Die Zusammenarbeit mit Fachleuten in der näheren Umgebung verändert die Struktur dramatisch. Sie wissen bereits, wie man mit Computern kommuniziert, Programme schreibt. Syntax und Logik sind für sie schnell zu lernen. Sie werden in der ersten Woche herausfordernde Fragen stellen.
Was kann ich von ihnen erwarten?
Ich würde erwarten, dass sie am meisten davon profitieren, wenn Sie die Möglichkeit haben, den Inhalt des Kurses auf die Sprachen abzustimmen, mit denen sie bereits vertraut sind: "Ja, das Thema ähnelt Java in dieser Hinsicht , unterscheidet sich jedoch aus diesen Gründen ". Ich würde davon ausgehen, dass das Tempo, mit dem sie lernen, ziemlich schnell ist, so dass Sie eine gute Menge Zeit außerhalb des Unterrichts in die Vorbereitung investieren sollten (wieder viel zu lernen, aber die Themen würden die meisten Entwickler interessieren.)
Was ist, wenn ich ersticke, wenn mir eine verworrene Frage gestellt wird? Ist das normal?
Nun, sie sind so erfahren wie Sie, aber in einem anderen Bereich (obwohl verwandt). Erklärungen können schwierig sein, und es kann nicht erwartet werden, dass Sie alles wissen oder dass Sie dasselbe Fachwissen haben wie alle (kombiniert). Die Fähigkeit, "Ich weiß nicht" zu sagen, ist eine gute Eigenschaft eines Lehrers. Wenn sie auch erfahren sind, können Sie oft über eine kurze Diskussion antworten ("Oh, wir lösen dieses Problem mit dieser Technik "). Wenn dies fehlschlägt, sollten Sie die Antwort in der nächsten Sitzung finden (für Sie und für sie).
quelle
Wenn Sie anderen erfolgreich etwas beibringen können, egal ob Sie programmieren oder nicht, dann verstehen Sie es wirklich. In der Lage zu sein, anderen etwas beizubringen, macht dich definitiv auch in dieser Fähigkeit besser. Die Schüler werden Ihnen Fragen stellen, die Sie überraschen und Sie dazu bringen, das Thema anders zu betrachten. Sie werden in der Lage sein, das Material auf mehr als eine Weise zu präsentieren, was Sie auch zu einem besseren Verständnis des Themas führt.
Die Fähigkeit, andere zu unterrichten, war schon immer mein Lackmustest, ob ich etwas wirklich verstehe.
quelle
Ich würde sagen, es macht definitiv einen Unterschied. Nach meiner persönlichen Erfahrung verteidige ich dies aus folgenden Gründen:
Während des Lesens wird der Verstand manchmal faul genug, um die Details zu ignorieren oder Dinge anzunehmen, anstatt sie gründlich zu lesen, um die betreffende Spitze zu verstehen. Dies ist der besondere Grund für unvollständigen Wissenszuwachs beim Lesen.
Beim Unterrichten ist alles zusammen eine andere Geschichte. Hier kann man keine Annahmen machen, sondern Fakten, so dass für den Unterricht eine gründliche Lektüre erfolgt. Der Lehrer ist auch der Ansicht, dass es seine Verantwortung ist, das vollständige und korrekte Wissen bereitzustellen, was wiederum zu weiteren Korrekturen führt.
quelle
Absolut ja. Der Unterricht bietet Ihnen eine Plattform, auf der Sie Ihre Kenntnisse über das Material verbessern und Ihre Präsentationsebene verbessern können.
Darüber hinaus können Sie Verbindungen zu anderen Entwicklern aufbauen, die später zu effektiven Beziehungen zwischen Entwicklerteams führen.
quelle
Zusätzlich zu dem, was alle anderen aufgelistet haben ("Sie müssen das Material gut kennen" usw.), wenn Sie Material für den Kurs schreiben, empfiehlt sich das Schreiben von Dokumentationen, da Dokumente - seien es Kursnotizen oder technische Dokumente - geschrieben werden Wissen zu transferieren, auch in der Industrie.
Aber wenn Sie in der Industrie tätig sind, ist die Dokumentation oft für jemanden gedacht, den Sie nicht kennengelernt haben und den Sie nicht kennengelernt haben. Es ist daher einfach, in die Falle zu gehen, zu dokumentieren, was Sie getan haben und nicht, was der Stakeholder / Leser wissen muss.
Wenn Sie für Schüler in Ihrer Klasse schreiben, ist es einfacher, diese Denkweise der nützlichen Dokumentation zu üben und zu entwickeln, da Sie in unmittelbarer Nähe zu Ihren Stakeholdern / Lesern sind. Zum Teufel, wenn Sie wirklich Glück haben, wird ein Schüler seine Hand in die Luft legen und Ihnen sagen, dass Ihre Notizen scheißen, und dann haben Sie etwas gelernt, das Sie verbessern können.
quelle
Ja. Ich habe oft festgestellt, dass ich etwas nicht so gut verstanden habe, bis ich versuchte, es jemand anderem zu erklären, insbesondere jemandem ohne all die Annahmen und Schlagworte, die ein Praktizierender im Laufe der Jahre entweder in der ersten Person (als Lehrer oder als Lehrer) aufbaut Mentor) oder sogar Online-Beantwortung von Fragen (wie hier auf Stack Overflow!).
Darüber hinaus können die Schüler eine andere Einsicht oder (komische?) Methodik in das Problem einbringen, wodurch der Lösungsraum erweitert wird.
Ein Lehrer, um nützlich zu sein, hat die Antwort möglicherweise nicht auf der Zunge, kann aber "Ich weiß nicht" sagen, sie recherchieren oder nachschlagen und den Schülern helfen, die Antwort schneller und mit höherer Wahrscheinlichkeit zu finden als können die Schüler auf eigene Faust.
quelle
Wenn Sie gezwungen sind, etwas aus den ersten Prinzipien zu erklären, werden Sie definitiv gezwungen, es besser zu verstehen. Ich benutze diese Idee oft, wenn ich nach Fehlern im Code suche, ziehe jemanden hinein und versuche, ihm zu erklären, wie der Code funktioniert. Normalerweise finde ich den Fehler innerhalb weniger Minuten. Gleiche Idee.
quelle
Ich würde sagen Nein. Ein Lehrer zu sein macht dich nicht besser - Lernen macht dich besser. Wenn Sie lernen müssen, ein Lehrer zu sein, werden Sie besser. Der Unterricht hilft Ihnen nur dabei, das zu behalten, was Sie wissen, aber in der IT-Welt ändert sich alles täglich. Aus diesem Grund können Sie sich nicht nur auf den Unterricht verlassen, sondern müssen Ihren ... Penner ... von der Couch holen und lernen.
Ich habe vielleicht IT-Professoren getroffen, die in ihrem Fachgebiet unwissend waren. Sie hatten Zertifikate, Kurse, Papiere an der Wand und jede Menge "Show". Sicher, sie könnten das Gespräch führen, aber wenn Sie den vorgeschriebenen Stundenplan nicht einhalten, würden sie flattern, stottern und versagen. Sie konnten den Druck der sich ändernden Dinge nicht ertragen. Sie änderten sich nicht mit der Zeit, sie lehrten, was sie wussten, was veraltet war.
Also lasst uns das noch einmal umdrehen, ich hatte ein paar Professoren, die unglaublich waren. Sie waren Entwickler, leitende Entwickler, leitende Entwickler, Direktoren der Anwendungsentwicklung, dann wurden sie Programmierer. Sie kannten reale Szenarien und wussten, dass 99% der Inhalte in Lehrbüchern die Menschen nicht auf die Arbeit im wirklichen Leben vorbereiteten. Sie änderten sie und hielten sie aktuell.
Vor 12 Jahren gab mir mein IT-Lehrer der Klasse 11/12 ein Angebot. Wenn ich in jedem Schuljahr in der Lage wäre, seine Sicherheits- / Brandmauern usw. in der Schule zu durchbrechen, würde er mir unabhängig von meiner Arbeit ein A + (100%) im Kurs geben. Ich habe ihm geholfen, den Kurs zu planen, als ich als Junior gearbeitet habe. Entwickler damals. Das Angebot, das er mir machte, machte ihn (zu der Zeit) zu einem Experten für Windows NT-Sicherheit. Ich habe 100% bekommen, ich musste seine UN / PW stehlen und ihn dann aussperren ... es war der einzige Weg am Ende ... Aber es ist unnötig zu erwähnen, dass er als Lehrer und in der IT besser geworden ist, weil er unterrichtet hat - Er arbeitete mit seiner Klasse - nicht auf seiner eigenen Tagesordnung.
Wo ziehst du die Linie? Zeichne es auf die Haltung des Lehrers. Wenn dieser Lehrer bereit ist zu lernen, werden sie besser. Wenn dieser Lehrer nur auf der Welle reitet, bezahlt wird und sich weniger darum kümmert, werden sie schlimmer.
quelle
Dutzende von "Warum funktioniert mein Code nicht?" Probleme beim Unterrichten von Übungsstunden in einem Einführungskurs haben es mir erheblich erleichtert, Code im laufenden Betrieb zu verstehen und in meinem Kopf zu simulieren.
quelle
Basierend auf meiner eigenen Erfahrung als Lehrer. Ich würde NEIN sagen .
Denn während Sie die Grundlagen besser verstehen, indem Sie Kindern und / oder Neulingen beibringen, erzielen Sie keine Verbesserungen, die sich auf Ihren eigentlichen Beruf beziehen.
Warum passiert das ? - weil sich die Programmierung schneller entwickelt, als Menschen lernen können. Neue Sprachen und Frameworks erscheinen, neue Tools, neue Konzepte, neue Hardware. Und professioneller Programmierer MUSS seine Domäne kennen. Sonst würde ihn niemand brauchen.
Vielleicht möchten Sie sagen: "Aber Sie können grundlegende Algorithmen studieren", und ich sage Ihnen: "Aber Sie sollten sie an der Universität studiert haben."
Ein anderes Thema ist der Arbeitsrhythmus. "Lehrer" sind langsam, sie werden nicht verwendet, um reale Probleme schnell zu lösen.
Und last but not least - Lehren ist Geben. Wenn du unterrichten willst - du kannst dich nicht aufhalten;) Es ist nur ein Anruf von innen, ein unnachgiebiger Drang, dein Wissen zu teilen, die Dummheit um dich herum zu reduzieren und schließlich die Welt zu einem besseren Ort zu machen;)
quelle
JA!
Genau darüber schrieb Louis E. Frenzel vor einigen Jahren:
quelle
Nicht direkt verwandt, aber ...
Ich sehe das die ganze Zeit bei der Pfadfindertruppe meines Enkels. Die älteren Pfadfinder glauben, dass sie etwas "wissen", bis sie versuchen, es ihren Junioren beizubringen. Ich denke nicht, dass sich die Dynamik ändert, egal wie alt oder erfahren wir werden.
quelle
In vielen Antworten auf diese Frage wurde darauf hingewiesen, dass das Unterrichten von etwas bedeutet, dass Sie es zuerst lernen müssen und dass Sie besser werden müssen, um unterrichten zu können. Ich würde sagen, dass das fast richtig ist.
Wenn Sie sind verantwortlich für die Entwicklung der Kursmaterialien , dann werden Sie ein gründliches Verständnis der Materie gewinnen müssen. Wenn Sie das Material auf diesem Niveau lernen, werden Sie besser, vorausgesetzt, Sie müssen etwas lernen, das Sie noch nicht kennen.
Wenn Sie andererseits nur eine Fleischpuppe sind, die Kursmaterialien vorliest, die von einer anderen Person vorbereitet wurden, können Sie wahrscheinlich davonkommen, ohne das Thema zu kennen oder zu verstehen. Dies gilt insbesondere für Einführungskurse. Wenn Sie ein erfahrener Entwickler sind, der eine Anfängerklasse unterrichtet, müssen Sie wirklich etwas Wesentliches lernen?
quelle
Das Unterrichten erweitert nicht nur Ihre Programmierkenntnisse oder -fähigkeiten, es ist auch nützlich, Programmierartikel und Tutorials zu schreiben. Wenn Sie ein Thema anderen verständlich erklären können, bedeutet dies, dass Sie dieses Thema auch kennen und verstehen.
quelle
Ich denke, es hängt davon ab, wie gut Sie sich persönlich für die Vorbereitung entscheiden. Ich mag es nicht, dazu gebracht zu werden, wie ein Idiot auszusehen, und wenn ich unterrichte, bereite ich mich übermäßig darauf vor, in meinen Notizen viel detaillierter vorzugehen, als das, was ich im Unterricht vorbringe. Auf diese Weise fühle ich mich sicher, dass ich die meisten Fragen beantworten kann. Jedes Mal, wenn ich mich auf einen Kurs vorbereitet habe, fand ich einige feine Details, die ich bis dahin entweder vergessen oder übersehen hatte. Das Entwerfen von Übungen kann eine besondere Herausforderung sein.
Das Vorbereiten für Leute, die bereits Programmierer sind, ist ein ganzes Maß an zusätzlicher Anstrengung. Sie können erwarten, dass einige Leute in der Klasse es hassen, dass sie gebeten werden, Python als ihr geliebtes C # (oder was auch immer) zu lernen. Sie werden alles in Frage stellen, was Sie sagen. Möglicherweise haben Sie andere, die bereits einige Kenntnisse haben und am ersten Tag erweiterte Fragen stellen. Stellen Sie im ersten Fall sicher, dass Sie am Thema festhalten, und diskutieren Sie NICHT die Unterschiede zwischen den Sprachen, es sei denn, die Klasse verhält sich nicht feindselig. Kehren Sie einfach zu dem Material zurück, das Sie abdecken möchten. Im zweiten Fall kann auf fast alle fortgeschrittenen Fragen später in der Klasse Bezug genommen werden (so dass Sie Zeit haben, die Antwort nachzuschlagen, wenn Sie sie nicht kennen.) Das sollte Ihnen also Vertrauen geben. Ich bereite immer einige härtere Übungen für die Teilnehmer vor, weil sie es müssen, aber sie sind bereits mit dem Thema vertraut. Eine Art unabhängiges Studium für leicht gelangweilte Menschen. (Und sind sie überrascht, wenn ich diese Übungen für fortgeschrittene Themen für sie herausnehme, während alle anderen mit einer Übung kämpfen, die sie in fünf Minuten gemacht haben!)
Die meisten Programmierer möchten etwas lernen und sind gespannt darauf, etwas Nützliches zu tun. Sie können wahrscheinlich die Grundlagen auf ein Minimum beschränken, diese Art von Unterricht wird durch das Durchführen von Hello World-Übungen gelangweilt. Machen Sie die Dinge praktischer und wirtschaftlicher. Sie können planen, mehr Material mit Erfahrung zu besprechen als nicht erfahrene Programmierer, also mehr vorzubereiten. Wenn Sie die Übungen auf die Art der Arbeit abstimmen können, die sie ausführen, ist das sogar noch besser.
Die Schüler haben eine bemerkenswerte Fähigkeit, Dinge, die Sie sagen, auf einzigartige Weise zu interpretieren. Ihre Fehler könnten Dinge sein, die Ihnen niemals einfallen würden. Wenn Sie ihnen helfen, ihre Fehler zu beheben, und wenn Sie erklären, warum sie Fehler sind, helfen Sie Ihnen bei der Codeüberprüfung!
quelle