La programmazione didattica ti rende un programmatore migliore [chiuso]

40

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

Mi chiedevo se questo avrebbe davvero allargato 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 - che siano programmatori o studenti noob? (Nel mio caso sono programmatori .NET e Java intermedi)

Cosa dovrei aspettarmi da loro?

Una delle mie paure è - cosa succede se soffoco quando uno di loro ha fatto una domanda intricata. È normale?

    
posta greengit 11.11.2011 - 11:18
fonte

20 risposte

37

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

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

    
risposta data 27.09.2011 - 18:10
fonte
30

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

Le persone mantengono:

  • 10 percento di ciò che leggono

  • 20 percento di ciò che sentono

  • 30 percento di ciò che vedono

  • 50 percento di ciò che vedono e sentono

  • Il 70 percento di ciò che fanno

  • Il 90 percento di ciò che insegna

Seguendo questa logica, il modo migliore per IMPARARE qualcosa e conservare ciò che hai imparato è fare il massimo sforzo per insegnarlo a qualcun altro.

Anche se ho iniziato a frequentare la Comp Sci 101 a scuola, ho svolto un lavoro di tutorato per C ++ e in realtà non ho IMPARATO C ++ fino a quando non sono stato costretto a insegnarlo agli studenti in difficoltà. Era come se un'orgia di lampadine mi esplodesse in testa mentre aiutavo i non laureati CS con i loro incarichi.

    
risposta data 27.09.2011 - 18:27
fonte
10

Non ho insegnato sistematicamente a programmare da solo, ho solo cercato di spiegare qualche concetto o problema a più o meno estranei. È stata sempre un'esperienza interessante, e ho imparato qualcosa ogni volta.

In effetti, Jan Comenius ha notato già un paio di centinaia di anni fa che il modo migliore per comprendere veramente profondamente qualcosa è spiegarlo agli altri .

Quindi, prendilo per te - sarà un'esperienza preziosa e arricchente per te. Avrai sicuramente domande difficili o sorprendenti, va bene. Non cercare di fingere di sapere tutto - solo di essere onesti e dire loro qualcosa come "Non lo so, ma ti risponderò con una risposta". Ti rispettano solo per essere onesti.

    
risposta data 27.09.2011 - 18:11
fonte
5

Oltre a ciò che menzionano le altre risposte, non dimenticare che mentre insegna puoi anche imparare dai tuoi studenti se hai una mentalità aperta a riguardo.

Hai detto in un commento che la tua "conoscenza di Java / .NET è vicina allo zero". Questa è un'opportunità perfetta per imparare dai tuoi studenti. L'insegnamento non è una procedura a senso unico.

Se non conosci la risposta a una domanda, non cercare di nasconderlo. Il più grande disservizio che un insegnante può fare a uno studente è fingere di sapere qualcosa che loro non lo fanno. Nel migliore dei casi perdi la loro fiducia quando capiscono che non sai di cosa stai parlando, in peggio li induci in errore e trasmetti informazioni false che sono peggio di nessuna informazione.

    
risposta data 27.09.2011 - 22:18
fonte
4

Sì, avrai 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 commettono errori, non hai mai pensato. Quando li aiuti, ottieni un codice problematico (almeno, l'ho fatto).

One of my fears is -- what if I choked when one of them asked a tangled question. Is this normal?

Penso, è normale. E i miei studiosi non hanno avuto problemi, quando ero onesto (e ho fornito la risposta più tardi). 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. Dopo di ciò, hanno saputo leggere i manuali.

    
risposta data 27.09.2011 - 19:56
fonte
4

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

Ti renderà un programmatore migliore?

Non 1: 1. Non acquisirai la stessa esperienza di quando scriveresti programmi, ma non è affatto una brutta cosa (continua a leggere).

Potrebbe ampliare il tuo repertorio di programmazione?

Assolutamente. Avrai nuove sfide e dovrai (re) imparare alcune cose che non hai mai saputo o dimenticato nel corso degli anni. Alcuni di questi saranno utili in futuro. Ti presenta molte nuove sfide e concetti. Avrai bisogno di affrontare i problemi tecnici da nuove prospettive, e puoi imparare molto prendendo quella prospettiva e risolvendo questi problemi. Se riesci a insegnare efficacemente a qualcuno ciò di cui hanno bisogno per capire i problemi tecnici, spesso migliorerai le tue conoscenze delle materie e estendere i tuoi domini di conoscenza. Inoltre, hai detto che conoscono già un'altra lingua, alcuni dicono che uno dei modi migliori per migliorare è l'apprendimento di nuove lingue.

Dipende anche da quelle persone?

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

Cosa dovrei aspettarmi da loro?

Mi sarei aspettato che ne trarrebbero maggior vantaggio se avessi la possibilità di mettere in relazione i contenuti del corso con le lingue che già conoscono: "Sì, subject è simile a Java in questi modi , ma diverso per questi motivi ". Mi aspetterei che il ritmo che imparano fosse abbastanza veloce, tale che dovresti aspettarti di investire una buona quantità di tempo al di fuori della lezione in preparazione (ancora, molto da imparare, ma gli argomenti interesserebbero la maggior parte degli sviluppatori.)

Cosa succede se soffoco quando mi viene posta una domanda intricata. È normale?

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

    
risposta data 04.10.2011 - 02:53
fonte
3

Quando riesci a insegnare con successo agli altri qualcosa, che tu stia programmando o meno, allora lo capisci davvero. Essere in grado di insegnare agli altri qualcosa ti rende sicuramente più bravo anche nell'abilità. Gli studenti ti faranno domande che ti sorprenderanno e ti faranno riflettere sull'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 ho davvero capito qualcosa.

    
risposta data 27.09.2011 - 18:10
fonte
3

Direi che sicuramente fa la differenza. Dalla mia esperienza personale, lo difendo a causa dei 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. Questa è la ragione particolare per avere guadagni di conoscenza incompleti durante la lettura.

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

risposta data 27.09.2011 - 18:55
fonte
3

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

Inoltre ti aiuta a costruire legami con altri sviluppatori che possono poi tradursi in efficaci relazioni con i team di sviluppo.

    
risposta data 27.09.2011 - 19:08
fonte
2

Oltre a ciò che tutti gli altri hanno elencato ("Devi conoscere bene il materiale" ecc.) se stai scrivendo materiale per il corso, è una buona pratica per scrivere la documentazione, perché i documenti, siano essi note di corso o documenti tecnici - Sono scritti per 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 di documentare ciò che hai fatto e non ciò di cui lo stakeholder / lettore ha bisogno sapere.

Quando scrivi per gli studenti della tua classe è più facile esercitarsi e sviluppare quella mentalità di documentazione utile, poiché sei nelle immediate vicinanze del tuo stakeholder / lettore. Diavolo, se sei davvero fortunato uno studente metterà la mano in aria e ti dirà che le tue note fanno schifo, e poi hai imparato qualcosa su cui puoi migliorare.

    
risposta data 27.09.2011 - 18:27
fonte
2

Sì. Ho spesso scoperto che non ho capito veramente bene qualcosa fino a quando non ho cercato di spiegarlo a qualcun altro, in particolare qualcuno senza tutte le ipotesi e le parole d'ordine che un professionista costruisce nel corso degli anni, sia in prima persona (come insegnante o mentore), o anche rispondere alle domande online (come qui su Stack Overflow!).

Inoltre, gli studenti possono portare una visione diversa o una (strana?) metodologia 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", ricercarlo o cercarlo e aiutare gli studenti a trovare la risposta più velocemente e con una probabilità maggiore rispetto a quella degli studenti.

    
risposta data 27.09.2011 - 18:33
fonte
1

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

    
risposta data 27.09.2011 - 18:50
fonte
1

Direi di no. Essere un insegnante non ti rende migliore, l'apprendimento ti rende migliore. Se devi imparare ad essere un insegnante, allora diventerai migliore. Insegnare ti aiuta solo a mantenere ciò che sai, ma nel mondo dell'IT cambia ogni giorno. Per questo motivo, non puoi semplicemente contare sull'insegnamento, devi prendere il tuo ... culo ... dal divano e imparare.

Ho incontrato alcuni professori di informatica che erano ignoranti quando si trattava del loro campo reale. Avevano certificati, corsi, carte sul muro, un sacco di "spettacolo". Certo, potevano parlare, ma se mai si fosse discostati dall'orario previsto, avrebbero fluttuato, balbettato e fallito. Non potevano gestire la pressione delle cose che cambiano. Non sono cambiati con i tempi, hanno insegnato quello che sapevano, che era obsoleto.

Quindi cambiamo discorso, ho avuto alcuni professori che sono stati fantastici. Erano sviluppatori, sviluppatori senior, lead developer, direttori dello sviluppo di applicazioni, poi sono diventati programmatori. Conoscevano gli scenari del mondo reale, sapevano che il 99% delle cose nei libri di testo non preparava le persone per il lavoro nella vita reale, quindi lo hanno cambiato, lo hanno mantenuto attuale.

12 anni fa il mio insegnante di informatica di livello 11/12 mi ha offerto un'offerta. Se durante l'anno scolastico sono stato in grado di rompere i suoi sicurezza / firewall ecc. A scuola, mi avrebbe dato un A + (100%) nel corso, indipendentemente dal mio lavoro. Diamine, l'ho aiutato a pianificare il corso mentre lavoravo da jr. lo sviluppatore allora. L'offerta che mi ha dato lo ha reso (all'epoca) un esperto di sicurezza di Windows NT. Ho ottenuto il 100%, ho dovuto rubare la sua UN / PW e poi chiuderlo fuori ... era l'unico modo alla fine ... Ma inutile dire che è migliorato come insegnante e IT per l'insegnamento - ha lavorato CON la sua classe - non sulla propria agenda.

Quindi, dove disegna la linea? Disegnala sull'atteggiamento dell'insegnante. Se quell'insegnante vorrà imparare, migliorerà. Se quell'insegnante sta cavalcando l'onda, viene pagato e potrebbe interessare di meno - peggioreranno.

    
risposta data 27.09.2011 - 19:31
fonte
1

Dovendo risolvere dozzine di "perché il mio codice non funzionerà?" 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 simularlo nella mia testa.

    
risposta data 27.09.2011 - 21:31
fonte
1

Basato sulla mia esperienza personale di insegnante. Direi NO .

Perché, mentre comprendi meglio le basi, insegnando ai bambini e / o ai nuovi arrivati, non stai apportando miglioramenti che riguardano la tua professione attuale.

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

Potresti voler dire - 'ma tu puoi studiare gli algoritmi fondamentali', - e io ti dico - 'ma tu dovresti studiarli in università'.

Altro argomento è il ritmo di lavoro. Gli "insegnanti" sono lenti, non sono abituati a risolvere velocemente problemi reali reali.

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

    
risposta data 27.09.2011 - 23:55
fonte
1

YES

Louis E. Frenzel ha scritto su esattamente questo qualche anno fa:

Write a paper or article or teach what you have learned. You have to know it to write it or teach it. There's no better way to learn for yourself than to have to explain it to others.

    
risposta data 03.10.2011 - 20:54
fonte
1

Non direttamente correlato, ma ...

Vedo che succede sempre alla truppa di boy scout di mio nipote. Gli scout più anziani pensano di "sapere" qualcosa finché non provano a insegnarlo ai loro juniores. Non penso che la dinamica cambi molto, non importa quanti anni abbiamo o diventiamo esperti.

    
risposta data 04.10.2011 - 02:14
fonte
1

Molte delle risposte a questa domanda hanno evidenziato che insegnare qualcosa significa che devi prima impararlo e quindi devi essere migliore per essere in grado di insegnare. Direi che questo è quasi giusto.

Se sei responsabile per sviluppare il materiale del corso , allora dovrai acquisire una conoscenza approfondita dell'argomento. Imparare il materiale a questo livello ti renderà migliore, supponendo che tu abbia bisogno di imparare qualcosa che non conosci già.

Se, d'altra parte, sei solo un pupazzo di carne che legge i materiali del corso preparati da qualcun altro, allora probabilmente puoi andartene senza conoscere o capire l'argomento. Questo è 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?

    
risposta data 11.11.2011 - 13:30
fonte
0

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

    
risposta data 27.09.2011 - 19:54
fonte
0

Penso che dipenda dal modo in cui decidi personalmente di prepararti. Non mi piace essere fatto sembrare un pazzo, quindi quando insegno, mi preparo troppo, nei miei appunti prendiamo più dettagli di quelli che tendo a portare in classe. In questo modo mi sento sicuro di poter gestire la maggior parte delle domande. Ogni volta che ho preparato una lezione, ho trovato alcuni dettagli che avevo dimenticato o trascurato fino ad allora. La progettazione di esercizi può essere particolarmente stimolante.

Preparare le persone che stanno già programmando con i programmatori è un intero livello di ulteriore sforzo. Puoi aspettarti di avere alcune persone nella classe che odiano che gli venga chiesto di imparare Python, il 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 mantenere l'argomento e NON entrare nel discutere le differenze tra le lingue a meno che la classe non si stia comportando in modo ostile. Ritorna semplicemente al materiale che stai per coprire. Nel secondo caso quasi tutte le domande avanzate possono essere rimandate a più tardi nella lezione (dandoti il tempo di cercare la risposta se non la conosci). Questo dovrebbe darti sicurezza. Preparo sempre degli esercizi più duri per le persone che stanno frequentando la classe perché devono, ma hanno già familiarità con l'argomento. Una sorta di studio indipendente per il facile annoiato. (E sono sorpresi quando tiro fuori quegli esercizi tematici avanzati per farli fare mentre tutti gli altri stanno lottando con un esercizio che hanno fatto in cinque minuti!)

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

Gli studenti hanno una notevole capacità di interpretare le cose che dici in un modo unico. I loro errori potrebbero essere cose che non ti verrebbero mai in mente. Aiutandoli a correggere i loro errori e spiegando perché sono errori ti aiuteranno nelle revisioni del codice!

    
risposta data 27.09.2011 - 22:01
fonte

Leggi altre domande sui tag