Paras keino opettaa koodausta?

Syksyllä 2019 pääsin kokeilemaan siipiäni ohjelmointikerhon ohjaajana Raision seurakunnassa. Kerho jatkuu edelleen, ja ”opintomatkani” kerhossa on ollut aikamoinen.

Opetuskokemukseni on aiemman työni kautta, jossa toimin laitespesialistina ja koulutin kaikki uudet käyttäjät virtaussytometrian saloihin. Useimmat koulutettavat olivat väitöskirjatyöntekijöitä, joten lasten opettamisesta kokemukseni oli vähän hatara. Alle kouluikäisten kanssa työskentelystä olen saanut kokemusta useamman vuoden ajalta pyhäkoulun vetäjänä. Kuitenkin alakouluikäiset (9-10 vuotiaat) olivat ihan uusi ikäryhmä.

Samoin ohjelmoinnin opetus oli uutta. Olen koko elämäni ohjelmoinut ja nykyisessä työssäni väännän päivittäin koodia. Miten vaan siirtää tuo tietotaito pienille ihmisille siten, että he oppisivat koodausta ja toisaalta harjoitustehtävät olisivat innostavia?

Havaitsin nimittäin melko nopeasti, että edellä mainitut kaksi asiaa olivat hieman toisensa poissulkevia. Asioiden omaksumiseen ja omaan oivallukseen parasta olisivat yksinkertaiset harjoitukset, joissa on selkeitä esimerkkejä loopeista ja if-else-rakenteista. Näiden harjoitusten ongelma on että ne ovat pidemmän päälle vähän tylsiä, ja pienten ihmisten kiinnostuksen ylläpitämiseksi tarvitaan mieluummin jotain näyttävämpää. Näyttävät ohjelmat ovat taas monimutkaisempia.

Hyvä paimen-peli. Peli löytyy Scratchista https://scratch.mit.edu/projects/360725015/

Itse päädyin tarjoamaan kerholaisille valmiita koodeja paperilla, jossa kuvattiin millaiset blokit mikäkin Scratch-hahmo tarvitsi. Koodinpätkien vieressä oli kuvausta, mitä mikäkin pätkä koodia oikein teki. Tässä tausta-ajatuksena oli tarjota malleja, miten erilaisia asioita toteutetaan ja toisaalta näytti, että samat kaavat toistuivat ohjelmointitehtävästä toiseen. Uskoisin että pikku hiljaa useimmille alkoi hahmottumaan, mitä ohjelmissa konepellin alta useinmiten löytyy.

Välillä kokeilin ”haastetehtäviä”, jossa kerholaiset kokeilivat generoida annettujen ohjeiden mukaan koodin omasta päästään. Huomasin että vaikka periaatteessa samoja asioita oli tehty useat kerrat aiemmissa koodiesimerkeissä, olivat haastetehtävät tosi hankalia. Se sai minut pohtimaan, olenko nyt täysin epäonnistunut opettamisessa, kun koodia ei syntynytkään kuin vettä vaan.

Kun muistelin omaa lapsuuttani ja alkuaskeleitani ohjelmoinnin parissa (GWBasicilla), totesin että itselläni se oppiminen tapahtui alussa käytännössä kokonaan apinoinnin kautta, eli kopioin (lähinnä isoveljen) koodia ja sitä kautta sain aikaiseksi jotain toimivaa. En ole varma, missä vaiheessa taitoni olivat sillä tasolla että aloin soveltamaan vapaammin ja tuottamaan omaa koodia. Se ei ollut kuitenkaan mikään nopea prosessi, joten uskon että valmiiden mallien tarjoaminen kerhossa ei välttämättä ole ollut huono ratkaisu.

Varsinkin kun niillä ollaan kerhossa aikaansaatu aika hauskoja pelejä!