Cari tutti Insegnare alla programmazione: lo state facendo male

L'insegnamento della codifica è caldo. Codecademy notoriamente iscritto Il sindaco di New York come utente (e ha recentemente raccolto 10 milioni di dollari di capitale di rischio ), e il popolare programma di insegnamento online Khan Academy ha appena lanciato una suite di lezioni di programmazione . Ne è seguito un contraccolpo: i programmatori di carriera hanno deriso l'idea di codificare come alfabetizzazione, mentre uno studio accademico ha affermato che alcune persone possono programmare e altre semplicemente no.





Bret Victor , un ex designer di interfacce per Apple, pensa che lo siano tutto sbagliato. In un saggio interattivo devastante e persuasivo , sostiene che i siti di programmazione fai-da-te sono per lo più inutili a causa delle loro interfacce opache. (Utilizzando i tutorial online di Khan, lui scrive , è come cercare di imparare a cucinare infilzando i pulsanti a caso su un forno a microonde senza etichetta.)

Ma questo è solo metà del problema. Victor pensa che la programmazione stessa è rotta. Si dice spesso che per programmare bene devi essere in grado di pensare come un computer. Per Victor, questo è assurdamente all'indietro, ed è il vero motivo per cui la programmazione è vista come fondamentalmente difficile. I computer sono umano strumenti: perché non possiamo controllarli su nostro termini, utilizzando tecniche che vengono naturalmente a tutti noi?

Il problema principale con la programmazione si riduce al fatto che il programmatore deve immaginare l'esecuzione del programma e non vede mai i dati, mi ha detto Victor. Per illustrare questo problema, fa un'altra vivida analogia con la cucina:



Ovviamente, questo è un modo terribile per insegnare a un principiante come cucinare un piatto. L'intuizione più grande di Victor è che è anche un modo terribile per uno chef esperto di creare nuovi piatti. Gli chef non sono costretti a simulare perfettamente tutto tra gli ingredienti e il nuovo soufflé nelle loro teste prima di toccare qualsiasi cibo; né si aspetterebbero che tutto ciò che accade tra l'assemblaggio degli ingredienti e l'estrazione del soufflé dal forno venga loro nascosto. Ma è così che si svolge gran parte del lavoro di programmazione, secondo Victor.

Non c'è da stupirsi che la programmazione sembri qualcosa che solo quelli con un'abilità bizzarra nel manipolare simboli astratti potrebbe mai fare. L'abbiamo impostato in questo modo.

Il saggio di Victor è denso di esempi interattivi su come risolvere questo problema (sfortunatamente non sono incorporabili, quindi sicuramente clicca per verificarli ): dalla riprogettazione IDE in modo che visualizzino il flusso di dati da un'istruzione all'altra, fino a ripensare alle metafore di base che sono alla base dei linguaggi di programmazione stessi. (Avviso spoiler: il 45enne Logo riceve molto più amore di in lavorazione .)



Ma a che scopo? La programmazione è davvero tutto un casino? E se noi normali non riuscissimo mai davvero a prenderci la mano: gli approcci attuali per l'apprendimento e la scrittura del codice non sono adeguati per generare abbastanza programmatori per far girare il mondo?

Beh si. Ma solo se ti iscrivi ai programmatori come l'analogia degli idraulici, cosa che Victor categoricamente non fa. Bill Atkinson (creatore di Hypercard ) voleva che la creazione di software fosse come disegnare o scrivere, qualcosa che tutti potevano fare, afferma Victor. Ci aspettiamo che tutti siano in grado di scrivere una lettera. La capacità di creare il proprio software per i propri usi è molto potente.

Victor non sta solo parlando di lanciare il tuo client Twitter. Ciò che è veramente potente è la capacità di costruire/scrivere ciò che lui chiama spiegazioni esplorabili : simulazioni interattive delle tue idee e dei tuoi argomenti, o di quelli di altri. Cosa succede se il prossimo editoriale che hai letto sul riscaldamento globale o sulla sicurezza nucleare includeva un modello integrato per esaminare le sue affermazioni? Questo è letteralmente programmare come alfabetizzazione, cioè un'amplificazione di pensiero —con il potenziale per essere messo a disposizione di chiunque. Ma solo se usciamo dagli angoli in cui ci siamo dipinti su cosa sia la programmazione, come farlo e come insegnarlo.



Tuttavia, milioni di sviluppatori non ripensano improvvisamente al modo in cui svolgono il loro lavoro; milioni di strumenti, app, linguaggi di programmazione e IDE non possono essere riprogettati da un giorno all'altro. Victor dice che è solo un motivo in più per iniziare a sgretolare le fondamenta ora. Thomas Kuhn, autore di Struttura delle rivoluzioni scientifiche , ha suggerito che quando si verifica un cambiamento di paradigma, i vecchi scienziati non adottano mai il nuovo modo di pensare, afferma Victor. Si ritirano e vengono sostituiti da una nuova generazione che pensa in modo nuovo.

[ Programmazione apprendibile di Bret Victor ]

nascondere