Kära alla som undervisar i programmering: You're Doing It Wrong

Att lära ut kodning är hett. Codecademy berömt anmält sig New Yorks borgmästare som användare (och nyligen ropade in 10 miljoner dollar i riskkapital ), och det populära onlineundervisningsföretaget Khan Academy har precis lanserat en serie programmeringslektioner . Motreaktion följde: karriär programmerare har hånade tanken på kodning som läskunnighet, medan en akademisk studie hävdade det vissa människor kan koda, och andra kan helt enkelt inte.





Bret Victor , en tidigare gränssnittsdesigner för Apple, tror att de är Allt fel. I en förödande och övertygande interaktiv uppsats , hävdar han att DIY-programmeringssajter mestadels är värdelösa på grund av deras ogenomskinliga gränssnitt. (Genom att använda Khans onlinehandledning, han skriver , är som att försöka lära sig laga mat genom att sticka i slumpmässiga knappar på en omärkt mikrovågsugn.)

Men det är bara halva problemet. Victor tycker det programmerar sig själv är bruten. Det sägs ofta att för att koda bra måste du kunna tänka som en dator. För Victor är detta absurt bakvänt – och det är den verkliga anledningen till att programmering ses som fundamentalt svårt. Datorer är mänsklig verktyg: varför kan vi inte kontrollera dem på vår använda tekniker som faller naturligt för oss alla?

Huvudproblemet med programmering bottnar i det faktum att programmeraren måste föreställa sig programmets genomförande och aldrig ser data, sa Victor till mig. För att illustrera detta problem gör han en annan levande analogi till matlagning:



Uppenbarligen är detta ett fruktansvärt sätt att lära en nybörjare hur man lagar en maträtt. Victors större insikt är att det är ett fruktansvärt sätt för en erfaren kock att också skapa nya rätter. Kockar är inte tvungna att perfekt simulera allt mellan ingredienser och ny sufflé i sina huvuden innan de rör någon av maten; inte heller förväntar de sig att allt som händer mellan att sätta ihop ingredienserna och att dra ut sufflen ur ugnen ska döljas för dem. Men det är så mycket av arbetet med programmering faktiskt sker, enligt Victor.

Inte konstigt att programmering verkar vara något som bara de med en galen förmåga att manipulera abstrakta symboler någonsin skulle kunna göra. Vi har satt upp det så.

Victors uppsats är full av interaktiva exempel på hur man fixar detta (de är tyvärr inte inbäddningsbara, så definitivt klicka dig fram för att kolla in dem ): från omdesign Idus så att de visualiserar dataflödet från en instruktion till nästa, till att ompröva de grundläggande metaforerna som ligger bakom programmeringsspråken själva. (Spoileralarm: 45-åringen Logotyp får mycket mer kärlek än Bearbetning .)



Men i vilket syfte? Är programmering verkligen allt som är trasigt? Så vad händer om vi normala aldrig riktigt kan få kläm på det – är inte de nuvarande metoderna för att lära sig och skriva kod tillräckliga för att generera tillräckligt många programmerare för att hålla världen igång?

Men ja. Men bara om du prenumererar på programmerare som rörmokare analogi, vilket Victor med eftertryck inte gör. Bill Atkinson (skapare av Hyperkort ) ville att skapa programvara skulle vara som att rita eller skriva – något som alla kunde göra, säger Victor. Vi förväntar oss att alla ska kunna skriva ett brev. Möjligheten att skapa din egen programvara för ditt eget bruk är mycket kraftfull.

Victor pratar inte bara om att rulla din egen Twitter-klient. Det som verkligen är kraftfullt är förmågan att bygga/skriva vad han kallar utredbara förklaringar : interaktiva simuleringar av dina egna idéer och argument – ​​eller andras. Tänk om inkluderade nästa artikel du läste om global uppvärmning eller kärnsäkerhet en inbyggd modell för att undersöka dess påståenden? Detta är bokstavligen programmering som läskunnighet – det vill säga en förstärkning av tänkande — med potential att göras tillgänglig för vem som helst. Men bara om vi går utanför hörnen vi har målat in oss i om vad programmering är, hur man gör det och hur man lär ut det.



Ändå kommer miljontals utvecklare inte plötsligt att tänka om hur de gör sina jobb; miljontals verktyg, appar, programmeringsspråk och IDE:er kan inte designas om över en natt. Victor säger att det bara är mer anledning att börja slänga stiften nu. Thomas Kuhn, författare till Vetenskapliga revolutioners struktur , föreslog att när ett paradigmskifte inträffar antar de gamla forskarna aldrig det nya sättet att tänka, säger Victor. De går bara i pension och ersätts av en ny generation som tänker på det nya sättet.

[ Lärbar programmering av Bret Victor ]

Dölj