Disclaimer: scrivo codice per passione, presto lo scriverò per lavoro e ho una forma mentis da tecnico. Più che scrivere codice mi piace risolvere il problema, magari usando _anche_ del codice.
Oggi ho visto, nella redazione distribuita di Digitalia, ho visto un interessante tweet, che riportava la notizia di corsi di programmazione nelle scuole estoni.
[...] L'idea del progetto, infatti, è cambiare radicalmente l'atteggiamento dei bambini nei confronti dei computer e dell'informatica, dando loro le prime competenze perché acquisiscano un rapporto "padrone" e consapevole con la tecnologia. Per farlo, secondo Lauringson, l'unico modo è cominciare il più presto possibile a capire come funzionano le cose. [...]
For the youngest students, the new courses won’t be strictly focused on learning programming languages like Java, Perl and C++. Rather they’ll ease kids into the necessary skills for coding like logic, which has the benefit of some overlap with subjects like math and potentially, robotics.Certo, l'idea di insegnare a programmare non è nuova. Probabilmente nessuno si ricorda dell'interessante progetto Colobot, un piccolo progetto polacco precursore di tutte le iniziative per “imparare a programmare”, partendo dal famoso CodeYear all'economica scheda programmabile Raspberry Pi per finire al ProgeTiiger di cui stiamo parlando ora.
Siamo sicuri di aver necessità di imparare a programmare? O dovremmo forse imparare a pensare?
Ben vengano iniziative che permettano di migliorare capacità come il ragionamento logico e critico, ma non è corretto insegnare ai bambini a scrivere codice: non è ciò che serve.
Il codice è un mezzo, non il fine. Se serve a migliorare le capacità di modellizzazione e problem solving sono favorevole, ma è inutile, se non dannoso, dire "per domani voglio 30 righe di codice in [[linguaggio]]". Inoltre, bisogna considerare il non poco importante problema della "scrittura a casaccio di codice", senza effettivamente capire come funzionano le cose e comprendere i problemi, la scomposizione in sottoproblemi, il tempo di esecuzione, l'uso corretto delle strutture dati... tante cose importanti che distinguono un buon programmatore da un code monkey.
"Il mondo è stato cambiato da persone che sanno programmare, dobbiamo insegnare come programmare ai giovani di domani", potreste dire. No, il mondo ora ha prodotti tecnologici di altissimo valore semplicemente perché degli appassionati hanno creato ciò che gli serviva o gli è venuto in mente. Il lavoro di programmatore è un lavoro che richiede passione, molto più di altri lavori: non è una passione trasmissibile a tutti; e soprattutto non tutti possono essere programmatori: possono mancare le capacità, la voglia, lo stimolo... è inutile forzare l'insegnamento di qualcosa che non applicheranno in pratica.
Ripeto: più di concentrarci sulla capacità di scrivere codice, bisognerebbe preoccuparci di ragionare. Sembra una stupidaggine, ma non tutti sfruttano il potente calcolatore all'interno del cranio nel migliore dei modi. Imparare a pensare, a ragionare, porsi dubbi, cercare soluzioni, applicare le conoscenze e sfruttarle per risolvere problemi. Competenze.
Programmando si possono assumere diverse competenze - per esempio scomporre i problemi in sottoproblemi o formalizzare in maniera chiara delle soluzioni - ma sono abilità che si possono apprendere indipendentemente dalla programmazione. Basta solo pensare, rimuginare, analizzare, tentare di capire.
Spero di essere stato chiaro, se volete rispondere al post scrivete un commento o (se avete bisogno di più spazio) scrivete sul vostro blog/tumblr e fatemelo sapere. Stay updated!


