La programmazione dell'insegnamento ti rende un programmatore migliore [chiuso]


40

Mi considero un programmatore intermedio di Python e mi è stata offerta l'opportunità di diventare un trainer per una classe di programmazione Python per principianti.

Mi chiedevo se questo potesse davvero ampliare il mio repertorio di programmazione. Qualcuno ha avuto un'esperienza illuminante dopo aver addestrato con successo un gruppo di persone?

Dipende anche da quelle persone, siano essi programmatori o studenti noob? (Nel mio caso sono programmatori .NET e Java intermedi)

Cosa dovrei aspettarmi da loro?

Una delle mie paure è: cosa succederebbe se soffocassi quando uno di loro fa una domanda aggrovigliata. È normale?


Non preoccuparti (soffocando) di non conoscere una risposta. Con i tuoi studenti che indicano un'area che non hai familiarità ti consente di sapere cosa devi imparare per insegnare agli studenti del prossimo anno.
Martin York,

Grazie. Ma la formazione NON è all'università - è un'opportunità unica per formare alcuni dipendenti Java / .NET di un paio di piccole società di sviluppo web.
treecoder,

34
Insegnare nulla vi farà meglio a esso , perché l'insegnamento obbliga a capire a fondo esso . Inoltre, si è sostanzialmente ri-studiare è come si sta insegnamento.
Jake Berger,

2
Sii il tuo io naturale ed esprimi la conoscenza. Gli studenti sono persone come te e me che intendono imparare ascoltandoti in classe. Quando i tuoi studenti ottengono distinzioni elevate o escogitano fantastiche soluzioni ai loro problemi grazie al tuo insegnamento, lo mostreranno. La soddisfazione che potresti ricavarne potrebbe sfidare facilmente l'espressione.
vpit3833,

2
Tutti i trainer che io abbia mai intervistato; hanno fallito l'intervista per la posizione di sviluppatore. La programmazione non è solo teoria. Per essere un programmatore migliore devi imparare "e" esercitarti creando app del mondo reale.
Muhammad Hasan Khan,

Risposte:


37

Nella mia esperienza, l'insegnamento della programmazione mi ha reso migliore. Mi ha costretto a comprendere meglio i concetti che avevo precedentemente accettato o dato per scontato. Quando ho dovuto articolare idee vecchie per me ma nuove per gli studenti, in diversi modi (perché non tutti imparano allo stesso modo dagli stessi esempi), alla fine ha portato a una comprensione più profonda del materiale per me.

E sì, a volte gli studenti fanno domande a cui non conosci la risposta. Va bene, puoi dire loro che non lo sai, trovare una possibile spiegazione e promettere di esaminarlo prima della lezione successiva.


1
@greengit Ti suggerirei di confrontare le lingue, ma assicurati di sapere davvero di cosa stai parlando quando dici che una lingua è migliore di un'altra perché alcuni studenti potrebbero non essere d'accordo e avere validi argomenti contrari. Confrontarli e mostrare come Python semplifica le diverse attività rispetto a Java / .NET è un ottimo modo per aiutare a presentare i concetti.
Ryan Matthews,

2
Direi di mantenere i confronti al minimo e concentrarmi su come fare le cose in Python. Presumo che abbiano già familiarità con costrutti di base come assegnazione di variabili, loop / iterazione, funzioni, ricorsione, strutture di flusso di controllo, ecc ... Può aiutare a progettare un progetto che costruiscono durante il corso (se è abbastanza lungo per quello) .
FrustratedWithFormsDesigner,

3
@greengit Non far finta di sapere qualcosa che non conosci. Se non sai abbastanza per fare un confronto, usalo come punto di apprendimento e chiedi al tuo studente di spiegare come funziona in Java / .NET e provare a fare un confronto insieme.
Davy8,

2
@greengit Penso che sia d'aiuto non dare per scontato che devi sapere tutto sull'argomento. È come aspettarsi che tu faccia un lavoro senza la possibilità di cercare riferimenti. Sii d'accordo con il fatto che non avrai tutte le risposte, ma puoi aiutare a indirizzare i tuoi studenti alle risposte. Forse dai loro termini chiave a Google.
Davy8,

1
+1 per l'ammissione quando non si conosce la risposta. Vedo che troppi istruttori semplicemente inventano qualcosa sul posto piuttosto che ammettere di non sapere tutto. Ho anche avuto dei bravi istruttori che avrebbero usato come un'opportunità, per far trovare agli studenti la risposta, insegnando come cercare le cose. Questo deve essere fatto con cura in modo da non scoraggiare le persone dal porre domande.
Jim C,

30

Un vecchio studio dell'Università del Texas ha prodotto i seguenti risultati.

Le persone mantengono:

  • Il 10 percento di ciò che leggono

  • Il 20 percento di ciò che ascoltano

  • Il 30 percento di ciò che vedono

  • Il 50 percento di ciò che vedono e sentono

  • 70 percento di quello che fanno

  • Il 90 percento di ciò che insegnano

Seguire questa logica il modo migliore per IMPARARE qualcosa e conservare ciò che hai imparato è fare del tuo meglio per insegnarlo a qualcun altro.

Anche se ho frequentato Comp Sci 101 a scuola, ho fatto un lavoro di tutoraggio per il C ++ e in realtà non ho imparato il C ++ fino a quando non sono stato costretto a insegnarlo agli studenti in difficoltà. Era come un'orgia di lampadine che mi esplodevano in testa mentre aiutavo i non laureati CS con i loro compiti.


2
+1. Il mio limite di voto è stato raggiunto :( Vi prego di indicarmi il link se presente.
treecoder

22
Forse dovresti smettere di fare riferimento a quella tabella. willatworklearning.com/2006/05/people_remember.html
Shawn D.

5
@ShawnD. Ho pensato tanto ... perché sai cosa dicono, l'84% delle statistiche è composto. Penso che soprattutto dovrebbe essere preso per il messaggio più grande. Conservo molto di più di ciò che insegno di ciò che leggo. Questo è un dato per me come una naturale osservazione di me stesso. Questo è stato il punto che sto cercando di chiarire.
maple_shaft

3
Belle statistiche, +1. Le mie esperienze sono sostanzialmente le stesse. Abbiamo un detto qui: quelli che possono, lo fanno. Coloro che non possono fare, insegnano. Chi non sa insegnare, insegna sport. Sto scherzando :)
Falcon,

2
@Falcon, una versione diversa dell'ultima frase è "Coloro che non possono insegnare, gestire" ;-)
Péter Török,

10

Non ho insegnato sistematicamente a programmare me stesso, ho solo cercato di spiegare alcuni concetti o problemi a più o meno estranei. È sempre stata un'esperienza interessante e ogni volta ho imparato qualcosa.

In effetti, Jan Comenius ha già notato circa duecento anni fa che il modo migliore per comprendere veramente qualcosa è spiegarlo agli altri .

Quindi provaci - sarà un'esperienza preziosa e arricchente per te. Avrai sicuramente domande difficili o sorprendenti - va bene. Non cercare di fingere di sapere tutto, sii onesto e digli qualcosa del tipo "Non lo so, ma ti risponderò con una risposta". Ti rispetteranno meglio solo per essere onesti.


5

Oltre a quanto menzionato dalle altre risposte, non dimenticare che durante l'insegnamento puoi anche imparare dai tuoi studenti se sei di mentalità aperta.

In un commento hai menzionato che la tua "conoscenza di Java / .NET è vicina allo zero". È un'opportunità perfetta per imparare dai tuoi studenti. L'insegnamento non è un processo a senso unico.

Se non conosci la risposta a una domanda, non cercare di nascondere questo fatto. Il più grande disservizio che un insegnante può fare a uno studente è far finta di sapere qualcosa che non sa. Nel migliore dei casi perdi la loro fiducia quando scoprono che non sai di cosa stai parlando, nel peggiore dei casi li induci in errore e trasmetti informazioni false che sono peggio di nessuna informazione.


+1 per "puoi anche imparare dai tuoi studenti se sei di mentalità aperta" L'ho sperimentato quando ho insegnato alcune lezioni notturne, anni fa.
DevSolo,

4

Sì, otterrai una comprensione più profonda. Ho fatto esperienze simili come le altre risposte che ottieni qui.

Ho fatto un'esperienza aggiuntiva: sono diventato più veloce nelle analisi degli errori. Insegni alle persone, quindi fanno errori, a cui non hai mai pensato. Quando li aiuti, ottieni un occhio per il codice problematico (almeno, l'ho fatto).

Una delle mie paure è: cosa succederebbe se soffocassi quando uno di loro fa una domanda aggrovigliata. È normale?

Penso che sia normale. E i miei studiosi non hanno avuto problemi, quando ero onesto (e ho fornito la risposta in seguito). Al contrario, hanno visto che nessuno deve sapere tutto. La cosa più importante è sapere come ottenere informazioni. Una delle mie lezioni migliori è stata quando non conoscevo la risposta e abbiamo cercato insieme il manuale per ottenere la risposta. Successivamente, hanno saputo leggere i manuali.


4

Ho insegnato a livello tecnico college (ma non sullo sviluppo di software). Ecco la mia opinione:

Ti renderà un programmatore migliore?

Non 1: 1. Non otterrai la stessa esperienza di come scriveresti programmi, ma non è affatto una cosa negativa (continua a leggere).

Amplia il tuo repertorio di programmazione?

Assolutamente. Avrai nuove sfide e dovrai (ri) imparare alcune cose che non hai mai saputo o che hai dimenticato negli anni. Alcuni di questi saranno utili in futuro. Ti presenta molte nuove sfide e concetti. Dovrai affrontare i problemi tecnici da nuove prospettive e puoi imparare molto prendendo quella prospettiva e risolvendo quei problemi. Se riesci a insegnare efficacemente a qualcuno ciò di cui hanno bisogno per comprendere i problemi tecnici, spesso migliorerà la tua conoscenza delle materie ed estenderà i tuoi domini di conoscenza. Inoltre, dici che conoscono già un'altra lingua, alcuni sostengono che uno dei modi migliori per migliorare sia l'apprendimento di nuove lingue.

Dipende anche da quelle persone?

Lavorare con professionisti in un dominio vicino cambia radicalmente la struttura. Sanno già come comunicare con i computer, per scrivere programmi. La sintassi e la logica saranno veloci per loro da imparare. Faranno domande stimolanti nella prima settimana.

Cosa dovrei aspettarmi da loro?

Mi aspetto che trarranno maggiori benefici se si ha la capacità di mettere in relazione il contenuto del corso con le lingue che già conoscono: "Sì, la materia è simile a Java in questi modi , ma diversa per questi motivi ". Mi aspetterei che il ritmo che imparano sia abbastanza rapido, in modo tale che dovresti aspettarti di investire una buona quantità di tempo fuori dalla classe in preparazione (di nuovo, molto da imparare, ma gli argomenti interesserebbero la maggior parte degli sviluppatori).

E se soffocassi quando mi viene posta una domanda aggrovigliata. È normale?

Bene, sono esperti come te, ma in un'altra area (sebbene correlata). le spiegazioni possono essere difficili e non ci si può aspettare di sapere tutto o di avere la stessa area di competenza di tutte (combinate). La capacità di dire "Non lo so" è una buona qualità per un insegnante. Se anche loro hanno esperienza, puoi spesso rispondere a una breve discussione ("Oh, risolviamo il problema usando questa tecnica "). In caso contrario, dovresti trovare la risposta entro la sessione successiva (per te e per loro).


3

Quando puoi insegnare con successo agli altri qualcosa, che sia programmazione o no, allora lo capisci davvero. Essere in grado di insegnare agli altri qualcosa sicuramente ti farà anche meglio delle tue capacità. Gli studenti ti faranno domande che ti sorprenderanno e ti faranno pensare all'argomento in modo diverso. Diventerai abile nel presentare il materiale in più di un modo che ti porterà anche a una migliore comprensione della materia.

Essere in grado di insegnare agli altri è sempre stata la mia cartina di tornasole per capire se capisco veramente qualcosa.


3

Direi che sicuramente fa la differenza. Dalla mia esperienza personale, difendo questo per i seguenti motivi: -

  • Durante la lettura, a volte la mente diventa abbastanza pigra da ignorare i dettagli o iniziare ad assumere le cose invece di dare una lettura approfondita per comprendere la parte superiore interessata. Questo è il motivo particolare per cui hai acquisito conoscenze incomplete mentre leggi te stesso.

  • In caso di insegnamento, è tutta insieme una storia diversa. Qui non si possono fornire ipotesi ma fatti, quindi si fa una lettura approfondita per insegnare. Inoltre, gli insegnanti sentono che è sua responsabilità fornire la conoscenza completa e corretta, che richiede nuovamente un'ulteriore correzione di bozze.


3

Assolutamente si. L'insegnamento ti offre una piattaforma per perfezionare la tua conoscenza del materiale e migliorare il tuo livello di presentazione.

Inoltre, ti aiuta a creare legami con altri sviluppatori che possono successivamente tradursi in relazioni efficaci tra i team di sviluppo.


2

Oltre a ciò che tutti gli altri hanno elencato ("Devi conoscere bene il materiale" ecc.) Se stai scrivendo materiale per il corso, è buona norma scrivere documenti, perché i documenti, siano essi appunti del corso o documenti tecnici, sono scritti trasferire conoscenza, anche nell'industria.

Ma quando sei nell'industria, spesso la documentazione è per qualcuno che non hai incontrato e che non incontrerai, quindi è facile cadere nella trappola della documentazione di ciò che hai fatto e non di ciò che gli stakeholder / lettori devono sapere.

Quando scrivi per gli studenti della tua classe è più facile esercitarsi e sviluppare quella mentalità di documentazione utile, dato che sei molto vicino al tuo stakeholder / lettore. Diamine, se sei davvero fortunato uno studente metterà le mani in aria e ti dirà che i tuoi appunti fanno schifo, e poi hai imparato qualcosa su cui puoi migliorare.


2

Sì. Ho scoperto spesso di non aver capito bene qualcosa fino a quando non ho cercato di spiegarlo a qualcun altro, in particolare a qualcuno senza tutte le ipotesi e le parole d'ordine che un praticante ha costruito nel corso degli anni, sia in prima persona (come insegnante o mentore) o persino rispondere a domande online (come qui su StackTranslate.it!).

Inoltre, gli studenti possono fornire una diversa comprensione o metodologia (strana?) Al problema, ampliando lo spazio della soluzione.

Un insegnante, per essere utile, potrebbe non avere la risposta sulla punta della lingua, ma può dire "Non lo so", cercarlo o cercarlo e aiutare gli studenti a trovare la risposta più velocemente e con una maggiore probabilità di quanto possano gli studenti da soli.


1

Quando sei costretto a spiegare qualcosa dai primi principi, ti costringerà sicuramente a capirlo meglio. Uso spesso questa idea quando cerco bug nel codice, trascino qualcuno e cerco di spiegare loro come funziona il codice. Di solito trovo il bug in pochi minuti. Stessa idea


1

Direi di no. Essere un insegnante non ti migliora - l'apprendimento ti migliora. Se devi imparare ad essere un insegnante, allora migliorerai. L'insegnamento ti aiuta solo a conservare ciò che sai, ma nel mondo dell'IT tutto cambia ogni giorno. Per questo motivo, non puoi semplicemente fare affidamento sull'insegnamento, devi togliere il tuo culo dal divano e imparare.

Ho incontrato professori di informatica che erano ignoranti quando si trattava del loro campo reale. Avevano certificati, corsi, documenti sul muro, molti "spettacoli". Sicuramente potevano parlare, ma se MAI uscissi dal programma del corso prescritto, svolazzerebbero, balbetterebbero e fallirebbero. Non potevano gestire la pressione delle cose che cambiano. Non sono cambiati con i tempi, hanno insegnato ciò che sapevano, che era obsoleto.

Quindi giriamo di nuovo questo, ho avuto alcuni professori che sono stati fantastici. Erano sviluppatori, sviluppatori senior, sviluppatori principali, direttori dello sviluppo di applicazioni, poi sono diventati programmatori. Conoscevano scenari del mondo reale, sapevano che il 99% delle cose nei libri di testo non preparava le persone al lavoro nella vita reale, quindi le hanno cambiate, mantenute aggiornate.

12 anni fa il mio insegnante di informatica di livello 11/12 mi ha fatto un'offerta. Se durante ogni anno scolastico riuscissi a infrangere la sua sicurezza / firewall ecc. A scuola, mi darebbe un A + (100%) nel corso, indipendentemente dal mio lavoro. Cavolo, l'ho aiutato a pianificare il corso mentre lavoro come jr. sviluppatore allora. L'offerta che mi ha fatto lo ha reso (all'epoca) un esperto di sicurezza di Windows NT. Ho ottenuto il 100%, ho dovuto rubare il suo UN / PW e poi bloccarlo ... era l'unico modo alla fine ... Ma inutile dire che è migliorato come insegnante e in IT grazie all'insegnamento - ha lavorato con la sua classe - non nella sua agenda.

Allora, dove disegni la linea? Disegnalo sull'atteggiamento dell'insegnante. Se quell'insegnante è disposto a imparare, migliorerà. Se quell'insegnante cavalca l'onda, viene pagato e se ne può fregare di meno, peggioreranno.


-1 Totalmente in disaccordo. Come puoi vedere, sei davvero in minoranza qui. La tua opinione è importante, ma penso che potresti imparare qualcosa dalla maggior parte delle risposte degli insegnanti qui. Scusa, non ho resistito all'ultimo gioco di parole, stavo solo leggendo un post sulla ricorsione.
junky

1

Dover risolvere dozzine di "perché il mio codice non funziona?" i problemi durante l'insegnamento delle sessioni di allenamento in un corso introduttivo di programmazione mi hanno reso molto più bravo a comprendere il codice al volo e a simularlo nella mia testa.


1

Basato sulla mia esperienza di insegnante. Direi NO .

Perché, mentre ottieni una migliore comprensione delle nozioni di base, insegnando ai bambini e / o ai neofiti, non stai apportando alcun miglioramento relativo alla tua professione attuale.

Perché succede? - perché la programmazione si sta sviluppando più velocemente di quanto le persone possano studiare. Vengono visualizzati nuovi linguaggi e framework, nuovi strumenti, nuovi concetti, nuovo hardware. E il programmatore professionista DEVE conoscere il suo dominio. Altrimenti, nessuno avrebbe avuto bisogno di lui.

Potresti voler dire - "ma puoi studiare algoritmi fondamentali", - e ti dico - "ma avresti dovuto studiarli all'università".

Altro argomento è il ritmo di lavoro. Gli "insegnanti" sono lenti, non sono usati per risolvere velocemente i problemi del mondo reale.

E, ultimo ma non meno importante, l'insegnamento è dare. Quando vuoi insegnare - non puoi fermarti;) è solo una chiamata dall'interno, un bisogno irremovibile di condividere le tue conoscenze, ridurre la stupidità intorno a te e, infine, rendere il mondo un posto migliore;)


Ecco perché trarrai beneficio dall'apprendimento dei tuoi studenti che potrebbero aver acquisito più di recente nuove conoscenze correlate che non conosci o prospettive a cui non avevi pensato
junky

1

SÌ!

Louis E. Frenzel ha scritto esattamente questo alcuni anni fa:

Scrivi un articolo o un articolo o insegna ciò che hai imparato. Devi saperlo per scriverlo o insegnarlo. Non c'è modo migliore per imparare da soli che doverlo spiegare agli altri.


1

Non direttamente correlato, ma ...

Vedo che succede tutto il tempo nella truppa di Boy Scout di mio nipote. Gli scout più anziani pensano di "conoscere" qualcosa fino a quando non provano a insegnarlo ai loro giovani. Non penso che i cambiamenti dinamici siano molto importanti, indipendentemente dall'età o dall'esperienza acquisita.


Adoro correlazioni come questa!
junky

1

Molte delle risposte a questa domanda hanno sottolineato che insegnare qualcosa significa che devi prima impararla e quindi devi diventare migliore per poter insegnare. Direi che è quasi giusto.

Se sei responsabile dello sviluppo dei materiali del corso , allora si dovrà acquisire una conoscenza approfondita della materia. Imparare il materiale a questo livello ti renderà migliore, supponendo che tu debba imparare qualcosa che non conosci già.

Se, d'altra parte, sei solo un burattino di carne che legge i materiali del corso preparati da qualcun altro, allora probabilmente puoi scappare senza conoscere o capire l'argomento. Ciò è particolarmente vero per i corsi introduttivi. Se sei uno sviluppatore esperto che insegna a una classe per principianti, hai davvero bisogno di imparare qualcosa di sostanziale?


Sono principalmente d'accordo, tuttavia penso che molti dei post dicessero che tu impari attraverso il processo di insegnamento, specialmente quando ti vengono poste domande dai tuoi studenti , piuttosto che la preparazione di materiale che pensi di sapere (anche se c'è ancora valore In ciò).
junky

0

Non solo l'insegnamento aumenta le tue conoscenze o abilità di programmazione, ma è anche utile scrivere articoli di programmazione ed esercitazioni. Se riesci a spiegare un argomento ad altri in modo comprensibile, significa che conosci e comprendi anche quell'argomento.


0

Penso che dipenda da quanto bene decidi personalmente di prepararti. Non mi piace farmi sembrare uno sciocco, quindi quando insegno, mi preparo molto più nei dettagli delle mie note rispetto a ciò che tendo a sollevare in classe. In questo modo mi sento sicuro di poter gestire la maggior parte delle domande. Ogni volta che mi sono preparato per una lezione, ho trovato alcuni dettagli che avevo dimenticato o trascurato fino ad allora. Progettare esercizi può essere particolarmente impegnativo.

Preparare le persone che sono già programmatori esistenti è un ulteriore sforzo. Puoi aspettarti di avere alcune persone nella classe che odiano il fatto che gli viene chiesto di imparare Python vice loro amato C # (o qualsiasi altra cosa). Sfideranno tutto ciò che dici. Potresti avere altri che hanno già qualche conoscenza e faranno domande avanzate il primo giorno. Nel primo caso, assicurati di rimanere in argomento e NON discutere delle differenze tra le lingue a meno che la classe non si comporti in modo ostile. Ritorna semplicemente al materiale che stai per coprire. Nel secondo caso è possibile fare riferimento a quasi tutte le domande avanzate più avanti nella classe (dandoti il ​​tempo di cercare la risposta se non la conosci). Quindi questo dovrebbe darti fiducia. Preparo sempre alcuni esercizi più difficili per le persone che frequentano la classe perché devono, ma hanno già familiarità con l'argomento. Sorta di studio indipendente per i facilmente annoiati. (E sono sorpresi quando tiro fuori quegli esercizi di argomento avanzato che possono fare mentre tutti gli altri stanno lottando con un esercizio che hanno fatto in cinque minuti!)

La maggior parte dei programmatori, tuttavia, ama imparare e sarà desideroso di iniziare a fare qualcosa di utile. Probabilmente puoi mantenere le basi fino a un minimo, questo tipo di classe è annoiato facendo esercizi di tipo Hello World. Rendi le cose più pratiche e utili per il business. Puoi pianificare di coprire più materiale con esperienza rispetto ai programmatori non esperti, quindi più da preparare. Se riesci a rendere gli esercizi specifici per il tipo di lavoro che svolgeranno, è ancora meglio.

Gli studenti hanno una straordinaria capacità di interpretare le cose che dici in un modo unico. I loro errori possono essere cose che non ti verrebbero mai in mente di fare. Aiutarli a correggere i loro errori e spiegare perché sono errori ti aiuteranno nelle recensioni del codice!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.