Salve, Habrarians!
In questo articolo voglio condividere la mia esperienza come docente di programmazione in C++ in un college universitario tecnico. È stata un'esperienza unica nella vita, che mi ha insegnato molto. Quando si parla di curiosità dal passato personale, questo episodio mi viene in mente tra i primi.
Partiamo.
Iniziamo con un po' di me.
Nel 2016 mi sono laureato con il massimo dei voti in "Sicurezza delle informazioni nei sistemi automatizzati". Durante il percorso di studi ho avuto l'opportunità di esprimere il mio potenziale nella scrittura di articoli scientifici, nella partecipazione a concorsi e bandi. Nel 2015 ho avuto la fortuna di vincere un concorso nazionale per giovani scienziati chiamato "UMNIK". Nel 2016, prima di completare la mia formazione, sono stato assunto da una grande organizzazione della città con il ruolo di "Specialista in sicurezza delle informazioni, crittografia e cifratura".
In breve, è andata così. Si potrebbe dire che avevo comunque una certa idea della programmazione.
E così siamo nel 2017. Dottorato. Mi è stato chiesto di insegnare C++ in un college per un semestre, promettendomi buoni incentivi per alleviare il carico del dottorando e nient'altro.
A dire il vero, ero sinceramente interessato a mettermi alla prova in questo compito.
Prima lezione
Settembre. La prima settimana di scuola. Sono arrivati gli studenti. "Il gruppo più difficile" - così li chiamavano.
23 persone. "Programmiatori".
Come da prassi, per iniziare mi sono presentato. Ho raccontato loro con moderazione il contenuto della parte "Iniziamo con un po' di me"…
Poi è iniziato l'orribile. Alla domanda "Cosa sapete fare?", gli studenti (da ora in poi li chiameremo così) hanno risposto che sapevano fare poco più di niente (questo significava che alcuni di loro sapevano com'era MS VS e potevano creare un progetto "Hello world")… Programmiatori. Ultimo anno…
Poi hanno dettagliato, "con colori vivaci", che non avevano imparato nulla e che erano completamente delusi dalla programmazione…
Quasi tutti i miei giorni fino alla lezione successiva sono trascorsi così:

… ma un giorno prima di essa è nata l'idea di applicare gli sforzi per correggere la situazione nelle menti e nelle coscienze di questi giovani. E così è iniziata la mia avventura.
Introduzione alla programmazione
Alla lezione seguente ho portato… un puzzle.
Sì-sì. Un puzzle. «Come addomesticare un drago». Le regole erano semplici. Il gruppo era diviso in 3 squadre. Ogni squadra assemblava la propria parte. Alcuni — la foresta, altri — la terra, altri ancora — il drago al centro dell'immagine. Mentre collezionavano il puzzle, raccontavo che raccogliere un puzzle è anche programmazione, che i programmatori usano spesso il codice di altri, che in ogni progetto ci sono diverse squadre, funzionalità, moduli…
Gradualmente al processo si unirono anche gli studenti più svogliati.
Quando ho finito di spiegare l'idea della programmazione nel concetto di business, processi e… puzzle, era tempo di stabilire le regole dell'apprendimento.
Ad ogni lezione, ogni studente doveva scrivere nel quaderno 10 termini IT. Qualsiasi. Ognuno aveva i propri. Il senso era che prendevo il quaderno di uno studente, trovavo tra tutti i termini i più pratici e chiedevamo a un altro studente. Quando un altro studente dice «Non ho annotato questo termine», non era punibile (per senso comune), ma quello studente doveva annotare i termini «mancanti» (come tutti coloro che non li avevano) e trovare i loro significati per la lezione successiva.
Così abbiamo proceduto. Ogni lezione iniziava con un bel random riguardante due o tre studenti. I ragazzi avevano entusiasmo per questo processo.
Argomenti delle lezioni
Iniziare l'insegnamento è molto importante fornire agli studenti una buona letteratura. A mio avviso, il libro ideale era:

A suo tempo ho dovuto leggerlo furtivamente abbracciando Microsoft Visual Studio. Allora sono riuscito a capire la programmazione praticamente da zero. L'opzione ideale.
Entri con discrezione dagli studenti e dici: «Per diventare programmatori, dovete semplicemente leggere e provare tutto ciò che c'è in questo libro», e lanci il libro sul tavolo. L'importante è non confondere i libri nel tuo zaino…
Prima di ogni tema, dovevo senza dubbio prepararmi a fondo. Leggevo lo stesso Lafore e alcune altre fonti interessanti dalla rete.
Dovevo spiegare quasi dalle basi. Inoltre, dovevo capire dove fossero le lacune delle conoscenze di base degli studenti in modo deduttivo.
Array -> Gestione della memoria (costruttori) -> Riferimenti -> Come funziona la memoria -> Memorie -> Cosa è un'unità fisica -> Rappresentazione binaria dei dati…

Un crash test delle conoscenze fondamentali sulla programmazione piuttosto impegnativo. Non sono più un programmista, sono uno storico!
E così, le battaglie storiche si susseguono per diverse coppie consecutive. Un giorno, nel nostro ufficio, arriva il segretario del dipartimento, e vedendo il gruppo, sbatte gli occhi, si sofferma e chiude la porta. Come mi hanno detto in seguito, era in shock che QUESTA gruppo stava così attento e mi ascoltava con interesse... Ehi, facile.
Lavori di laboratorio
Le prime informazioni applicate - i primi "laboratori". In tutto il semestre, il gruppo ha completato 10 lavori di laboratorio. Nei primi realizzavano le più semplici console a+b, e negli ultimi scrivevano, anche se in console, applicazioni abbastanza interessanti, come il calcolo del valore di un integrale di una certa funzione arbitrariamente data utilizzando uno dei tre metodi - problemi simili erano presenti nell'esame finale - nel lavoro di corso.
Solo che l'approccio alla valutazione non era consueto. Durante l'intero studio all'università mi sono trovato davanti al fatto che essere intelligenti e saper consegnare i lavori di report non è la stessa cosa. Questo mi infastidiva profondamente.
— Raga, ho pensato. Costruiamo relazioni "concettuali". Se qualcuno di voi pensa che la programmazione non gli serva - la porta è lì. Vi insegno gratuitamente. Voglio vedere qui solo curiosi, appassionati, che non sono indifferenti. Gli altri vi prego di non sprecare tempo - dissi il primo giorno di valutazione dei lavori di laboratorio. Dopo di che, 5 persone hanno immediatamente smesso di partecipare alle lezioni. Era logico e previsto. Con gli altri c'era la possibilità di fare qualcosa di sensato.
— ... non mi interessa vedere come qualcun altro ha fatto il lavoro, purché venga consegnato. Potete non essere programmisti, ma dovrete essere persone qui..
Ecco come appariva:
caso studente eccellenteUn studente si siede con me per consegnare il lavoro.
— Lo hai fatto tu?
— Sì.
— Che cos'è questo?
— *risponde correttamente*.
*Chiedo ancora su un paio di punti. Risponde correttamente*
— accettato. Ottimo.
caso chiacchierone — Lo hai fatto tu?
— Sì.
— Che cos'è questo?
— *risponde in modo INCORRETTO / non risponde*.
*Chiedo ancora su un paio di punti. Lo stesso risultato*
— NON accettato. FALLO. Aspetto per un ripasso.
caso studente buono — Lo hai fatto tu?
— Sì.
— Che cos'è questo?
— *risponde correttamente, ma non con sicurezza, è in difficoltà*.
*Chiedo ancora su un paio di punti. Lo stesso risultato*
— accettato. Bene.
caso studente sufficiente — Lo hai fatto tu?
— No.
— Perché?
— È difficile. Mi ha aiutato... *nomina onestamente un studente eccellente del gruppo*
— Hai capito?
— Sì, quasi tutto.
— Che cos'è questo?
— *risponde correttamente*.
*Chiedo ancora un paio di cose. Risponde più o meno correttamente, a volte completamente a caso, anche se il 50% è corretto e il 50% errato*
— accettato. Bene.
Non ha senso descrivere gli altri casi. Sì, il «buono» può essere scontento che il «sufficiente» riceva lo stesso voto, basandosi sull'onestà. A quel punto, tutto dipende dall'umore. O chiedo al «ben votato» di guardare il pavimento, perché «ora condividerò un pizzico di saggezza», e poi spiegherò il fondamento dell'approccio, descrivendo cosa ha un valore maggiore nella vita e chiarendo che è stato molto più difficile per il «sufficiente» passare rispetto a lui, il «buono», e così via...
… oppure, come ai tempi, disegnerò un piccolo dente nella casella del registro di fronte a questo scontento e la prossima volta aggiungerò personalmente il lavoro di laboratorio per lui. Semplicemente. Per non «sottrarre» ai compagni.

Voti
Il processo di apprendimento, come il mondo intero, è letteralmente sommerso da prezzi e voti.
Gli studenti sono anche persone, però le «cifre», a mio parere, dovevano essere «scosse» anche qui.
Durante il semestre a tutti è stato assegnato un compito bonus. Registrarsi su , caricare un progetto vuoto in C++, fare 2 aggiornamenti, committarli e pusharli. Per queste azioni sono stati assegnati 15. Sì-sì, non 4, non 5, ma 15. Tre ci sono riusciti. Per il tipo psicologico dello studente, questo era in qualche modo chiaro, ma poi c'è stato un altro caso.
Una volta, la nostra lezione è stata spostata in modo che diventasse l'ultima, e per di più attraverso un paio di finestre. Tuttavia, sono comunque venute 15 persone. Non volevo spiegare un nuovo argomento per un tale eroismo, poiché ci eravamo già abbastanza bene avanzati con gli argomenti + il prossimo argomento non era molto semplice per cervelli affaticati (i miei e quelli degli studenti). Quindi ho deciso di parlare di filosofia.
— Annuncio un'attrazione di generosità senza precedenti. Tutti mi dicono quale voto dargli per questo incontro.
Tutti volevano un «cinque».
— Considerate, ce l'abbiamo già, — dissi. Tutti si sono rallegrati.
Silenzio.
— E perché nessuno ha voluto 7-cu o 10-cu?
Tutti hanno spalancato gli occhi e hanno iniziato a sorridere stupidamente.
— E lei metterà? Nel registro?! — si è sentita una voce dal banco di dietro.
— Certo! — dissi, — annuncio un blitz sui termini, chi risponde a 10 delle mie domande — mette 20 nel registro, senza inganno, chi non risponde — perde (meno dieci). -10 (meno dieci).
«Il team si è animato, è iniziato un dibattito», tutti avevano voti guadagnati onestamente. Due si sono offerti. Con alcune piccole imprecisioni hanno risposto a turno a 10 domande sulla pila, la coda, il costruttore, il distruttore, il garbage collector, l'incapsulamento, il polimorfismo, le funzioni hash...
A ciascuno nel registro è stata disegnata 20… ma l'importanza del registro e dei voti è diminuita agli occhi di tutti. Ora mi dispiace di non aver chiesto se volevano «condividere» il loro voto con qualcuno. Penso che avrebbero condiviso... D'ora in poi ognuno ha presentato il «laboratorio» con conoscenze e onestà.
Da questo momento è comparso un altro tipo di consegna del laboratorio:
case onestamenteNonLuiMaLuiHaProvato — Lo hai fatto tu?
— No.
— Perché?
— È difficile. Mi ha aiutato... *nomina onestamente un studente eccellente del gruppo*
— Hai capito?
— Sergey Nikolaevich, sinceramente — non capisco nulla, ho scritto io stesso i commenti accanto a ogni riga — non fa per me, farò il trattorista
— Che cos'è questo?
— *legge il commento accanto alla riga*.
— …
— …
— In cosa si differenzia il Belarus MTZ dal Don 500 e dal K700?
— ??!.. Il primo è un trattore a ruote di produzione di Minsk, spesso utilizzato in tipi di agricoltura leggera e media. Ha anche delle ruote piccole davanti e grandi dietro. Don 500 è principalmente un mietitrebbia, mentre il K-700 «Kirovec» è un trattore a ruote sovietico per uso generale con elevata capacità di attraversamento, classe di trazione 5.
— Accettato. Bene (!!!).
— Grazie, Sergey Nikolaevich!!!
Nella mia patria, parlare di trattori è quasi come qui parlare di SOLID.
Genio
Ho avuto un genio nel mio gruppo. Uno studente che dalla prima lezione si è presentato in notevole ritardo e non ha voluto unirsi a tutti per assemblare quel puzzle. Allora gli ho chiesto di fare ciò che avevo programmato per tutti nella lezione successiva: scrivere su un foglio di carta chi è, cosa lo appassiona, cosa gli interessa. Alla fine, il «genio» aveva 2-3 righe: qualcosa come «sto scoprendo la vanità dell'esistenza»…
… Oh, Dio, nel mio gruppo c'era in una sola persona una sorta di secondo Laozzi e Kojima ...

Con mia sorpresa, nelle prime due lezioni rispondeva davvero brillantemente alle domande sui termini, ma l'effetto non è durato a lungo. Il «genio» ha smesso di frequentare le lezioni e la prossima volta è venuto solo per la consegna del primo laboratorio, che ha non superato per motivi oggettivi. Poi, a causa delle assenze, ha naturalmente accumulato debiti, che, come pensava lui, io ero semplicemente obbligato a considerare, così dire, «fraternalmente».
La mancata partecipazione alle lezioni + l'eccessiva autostima contraddicevano i principi stabiliti per la frequenza delle mie lezioni. «Il Genio» aveva solo due opzioni: riabilitarsi (il percorso previsto) o trascurare le lezioni e sperare in un «tre», assegnato dal decanato, per liberarsi del fannullone.
Beh, questo è «Il Genio»... qui bisognerebbe agire in modo «geniale». Questo giovane non ha trovato nulla di meglio che scrivere in un dialogo generale su VK (dove ero io e tutti gli studenti di questo gruppo) un'ira tirata piena di insulti e offese nei miei confronti.
Eh… Delusione.
Mi ha colpito di più che, prima di concludere il processo di operazione punitiva da parte della direzione del collegio, abbia deciso di scusarsi con me. Per cosa? — sinceramente non lo capisco. A quel punto ero già da tempo indipendente dalle critiche, soprattutto quelle così palesemente stupide. La mia personalità non è stata colpita, ma i processi — ci sono processi, come insegnante non potevo non comunicarlo. Come si è rivelato, durante il suo percorso di studi si erano accumulati così tanti reclami che questo caso si è rivelato l'ultimo. È stato espulso. Dall'ultimo anno del collegio professionale.
Forse mi osserva già da tempo attraverso il mirino di un fucile da cecchino, ma, a dire il vero, non me ne frega niente.
Eh, genialità, sei proprio insensibile...
Epilogo
Per me, l'esperienza di insegnamento è stata una delle più formative. Mi ha aiutato a consolidare le conoscenze fondamentali di programmazione dopo gli studi all'università. Ho sentito in me la fiducia nella professione scelta (nello spettro delle specialità disponibili). È particolarmente importante che «il gruppo più indisciplinato» abbia sviluppato rispetto e amicizia nei miei confronti — questo ha un grande valore. Sono riuscito a trovare la via verso i loro innovatori interiori, cercando di impartire realtà, e non queste priorità stereotipate. Peccato che non siamo arrivati ai «puzzle» nel coding — quando ognuno avrebbe dovuto fare una parte del codice e, unendo tutte le parti, avremmo ottenuto un programma funzionante...
Spero che un giorno ognuno di loro lo senta... nel frattempo, qui sotto sono raccolti degli screenshot con i feedback di alcuni studenti dopo 2 anni.

È ancora presto per trarre conclusioni sul successo della carriera di programmatore di qualcuno di loro, visto che attualmente la maggior parte di questo gruppo studia all'università. Solo il tempo lo dirà.
Spero che l'articolo sia stato utile. Grazie per l'attenzione!
Successi creativi e un atteggiamento positivo, colleghi!
Fonte: habr.com
