Dette skrev jeg i november 2012 for å prøve å få dannet et lokalt programmeringskurs for barn. Ingen nappet, men det dannet spiren til «Lær Kidsa Koding!» Mye har gått anderledes enn hva jeg tenkte her. Blant annet ble vi ikke en del av Dataforeningen, men ble dannet med «fadderskap» derfra og fra IKT-Norge. Diskusjonen om programmeringsspråk var riktig for en faggruppe, men prematur for en bevegelse.
Spillprogrammerer-skole for barn?
Av Simen Sommerfeldt (@sisomm, simen.sommerfeldt@bouvet.no simen.sommerfeldt@gmail.com)
Opprinnelig versjon November 2012
Jeg har mailet en del med Jens Christian ifb. dette. Han har holdt et spillprogrammerings-kurs for barn på Vassbonn skole.
Innledning
jeg vet ikke hvordan det gikk til, men plutselig holdt Jens Chistian Brynildsen (@jenschr) et tretimers kurs i spillprogrammering for barn på Kolbotn bibliotek. (Thomas Hagen gjør noe lignende i det samme miljøet.)
Jeg hadde selv lært sønnen litt Python, og tenkte at et spillprogrammeringskurs måtte være bra. Brynildsen er flashprogrammerer (www.flashgamer.com) og tok med seg noe de hadde laget på en Hackathon slik at barna hadde et utgangspunkt. Tre timer er selvfølgelig alt for kort tid til å lære ordentlig spillprogrammering. Vi fikk skrapt litt i overflaten. Men han hadde tenkt veldig riktig for å lære bort IT til barn: Det er gøy, de fikk fort visuell tilbakemelding på hva de gjorde, og det var ETT abstraksjonsnivå (Flash builder) å forholde seg til.
Hvorfor er det viktig at barn og unge lærer mer enn bare Facebook og Excel?
Som kjent blir det tomt for olje før eller siden. Derfor bør vi ha en lokal, bærekraftig, eksportrettet IT industri. Å ha barn som kan programmering er en av de beste forutsetningene for dette!
Urealistisk forståelse av digital kompetanse. Kompetanse på to nivåer
Samfunnet er gjennomdigitalisert. I mange bedrifter og institusjoner økes nå bevisstheten om at IT ikke lenger er en støttefunksjon, men faktisk må tas på alvor som en hovedpremissgiver, og må integreres i de andre funksjonene. Vi som er programmerere, skjønner hva som er på baksiden.
Samtidig pågår det en annen utvikling: Forbruker-IT blitt mer og mer integrert i tingene rundt oss (biler, kjøleskap!), samtidig som det gis færre muligheter til å “gå bak fasaden” og tilpasse. Riktig interaksjonsdesign er å gi brukeren så få valg at det blir umulig å trå feil. En ulempe ved dette er at vi mister helt forståelsen av hva en datamaskinene faktisk gjør, samtidig som vi bruker dem mer og mer.
Min ungdoms Commodore 64 lot meg – tvang meg – til å programmere den. Spill fikk vi ved å taste inn lange remser med programmer som vi fant i blader. Jeg tror min generasjon IT-folk var heldige som fikk denne krevende introen. De som kommer etter oss har fått IT presentert som noe glatt og elegant som bare funker. Ikke noe du må skru på. Derfor var det mye enklere å rekruttere studenter til IT-utdanning tidligere. Nå har det blitt så mange abstraksjonsnivåer at det er nesten umulig for en forbruker å forstå hva som skjer. Gjennom å lære å programmere litt, gis barna et innblikk i hvordan en kan sette sammen ting. De fundamentale mekanismene er like inni et flash-spill og en minibank.
Grunnleggende digital kompetanse er å kunne bruke verktøyene riktig for å gjøre oppgavene dine bedre. Jeg snakker om Windows, om å bruke Word, Excel og Facebook. Fra høyskoler og universiteter hører jeg at mange av IT-studentene faller av det første halvåret. Enkelte tror at siden de er så flinke i Facebook og Spotfiy, vil studiet gå lekende lett! Men så møter de veggen når de blir konfrontert med at en ingeniørutdanning faktisk krever at de lærer matematikk og algoritmer.
Nå mener jeg ikke at alle som skal delta på disse barnekursene skal bli ingeniører, men gjennom å delta på et slikt forstår de faktisk mer av hva som skjer «under panseret» Nå begynner vi å snakke om god digital kompetanse!
(I mars 2013 er fokuset mitt anderledes enn det som står under, sjekk meetup :-))
Programmerer-skolen!
Jeg foreslår et åtteukers kurs der barna til slutt har laget kult spill! Vi kunne hatt det på kveldsbasis eller på lørdager og lånt lokaler på en skole eller et bibliotek eller noe slikt. Det er naturlig å starte forsiktig med et pionérkurs med få deltagere, og samle erfaringer før vi går videre. I min erfaring er ikke barn klare til å programmere før de er ca 11 år. Før det blir det for abstrakt for dem. Jeg har ikke kilder som understøtter dette, men ha snakket med flere andre som har opplevd at det plutselig “løsnet “ med programmering da barna fylte ca. 11
Kunne Dataforeningen spilt en rolle her?
Jeg sitter i Østlandsstyret i Dataforeningen. Vi har et kjempenettverk av fagfolk over hele landet som kan bidra, og selve hensikten med kurset er veldig i takt med dataforeningens formål. Gjennom å kjøre dette i dataforeningen får vi også tilgang på Media og kan spre kurset til flere steder i landet.
Hvordan komme i gang med et enkelt lokalt prosjet?
Her er noen idéer til hvordan den kan komme videre. Dette er kun noen løse tanker, og den nystartede meetup´en vil vise hva vi velger!,
-
En liten(?) gruppe jobber videre med målsetning, identifisering av viktige valg vi må ta, og hvilke kriterier som skal gjelde for disse (Februar: Nå har vi laget en meetup)
-
Etablere en prosjektgruppe som kan lage et pioneropplegg. Legge opp et virtuelt prosjektrom et sted der vi kan lagre ting (dokumenter, planer, etc)
-
Lage et pedagogisk holdbart opplegg som sikrer progresjon samtidig som så mange som mulig klarer å henge med
-
Etablere et nettsted med dokumentasjon, timeplaner, bilder, diskusjoner, etc. Kanskje det holder med en Facebook-gruppe?
-
Fikse et opplegg for påmelding og timeplaner og slikt.
-
Skaffe en partner for å fasilitere det med lokaler og slikt (kulturskolen?)
-
Sørge for å ha et oppsett for maskiner som gjør at de slipper å streve med å installere alt mulig. Det ideelle hadde vært å hatt noen klare ubuntu images for f.eks VirtualBox slik at alt blir likt.
-
Markedsføre det i media eller lokalt
Appendiks
Hva slags programmeringsspråk og miljø skal man velge?
Jeg kunne ikke dy meg, men startet med å fundere litt over plattform. Imidlertid skal vi ikke forskuttere noen beslutning om dette.
Her er noen artikler:
– Teaching your kids how to write computer programs
– Stackexchange: Recommendation for a platform to teach game development to kids
– 36 Resources To Help You Teach Kids Programming
– Ruby for kids: Programming for the fun of it
– Kidsruby
Jeg har listet opp noen kriterier for hva vi kan velge:
-
Gir raske resultater
-
Få abstraksjonsnivåer å forholde seg til
-
Tilbyr et bra IDE slik at barna enkelt kan fokusere på programmering
-
Egner seg for å lage interaktive spill
-
Lærer barna programmering
-
Utbredelse
-
Open Source slik at vi kan fikse ting om det trengs
-
Gratis
Java/C#/Mobilprogrammering er ikke med i oversikten!
Jeg har selv erfaring med Java og C/C++, men mener at disse språkene ikke tilbyr et enkelt nok utgangspunkt. Jeg forsøkte en gang å lære sønnen Java, men innså at Python er mye lettere å starte med for et barn. For å programmere for en mobil må barna ha tilgang til en dyr smartphone, og det er ikke gitt at alle vil kjøpe den samme (iPhone, Android, WinPhone)
Flashprogrammering har den store fordelen at du forholder deg til ETT abstraksjonsnivå (vs HTML, javascript) samtidig som de får umiddelbar, visuell respons, og det er gøy! De kan senere embedde dette ei webside for å vise til venner. Er Flash døende sier du? Javisst kanskje det. Men det spiller egentlig ingen rolle. Vi skal leke oss, og har du først lært ett programmeringsspråk så kan du fort lære et annet. Utfordringen er å knekke den første nøtta. Å skjønne at du faktisk må lage en algoritme som du må få maskinen til å forstå gjennom et programmeringsspråk. I tillegg er ActionsScript 3.0 så likt JavaScript at det gir en fin inngang til webprogrammering. Utfordringen er at dette er kommersiell software som det koster penger å jobbe med
Jeg har selv lekt litt med Scratch sammen med sønnen min. Det er gøy til et visst punkt, men Scratch har et par svakheter: Programmering med symboler og piler blir ikke kraftig nok til å gjenspeile gode algoritmer, og hvis du skal lage noe så avansert som et spill, blir det fort så kaotisk at en mister fordelen ved å bruke symboler.
NB: Jens Christian brukte FlashDevelop http://www.flashdevelop.org som er et Open Source prosjekt. De bruker Adobe sin Open Source SDK (compiler og alt sånn), men har ellers ingenting med dem å gjøre. Helt gratis og bygget med C#. Han sier:
“Det jeg tenkte å bygge en egen kurs-editor med heter Brackets: http://brackets.io og det er et Open Source prosjekt som derimot er finansiert av Adobe. Tanken var å lage et program der barna kunne slippe ganske mye syntax og bare fokusere på programmeringen og det visuelle. Når man lagrer/kjører et prosjekt ville Editoren pakke med de ekstra klassene man trengte og vise resultatet i en nettleser.”
Vi kan også gå for HTML 5 og javascript. Utfordringen med dette er at de er relativt ferske, at browserstøtten er begrenset, og at det etter min erfaring ikke finnes noe godt utviklingsmiljø som gjør det enkelt å jobbe med for barn.
Ruby og Python er erfaringsvis er enkelt å komme i gang med. Ruby for kids ser faktisk ut til å ha et spilbart system gjennom Gosu. Python har noe lignende med PyGame. Sønnen min på tolv leker seg meg PyGame stadig vekk
Lego Mindstorms og Arduino kan være kjempegøy. Det er jo fysisk! Utfordringen med Mindstorms er at fokus flyttes over på Legobygging. Og her har du i likhet med Scratch visuell programmering, med de ulempene det medfører. Dessuten er det dyrt.
Det finnes ferdigbygde biler for Arduino som kan programmeres med C. Men disse koster penger.
Et forsøk på en sammenstilling
score 0-5 |
Flash |
HTML5 |
Scratch |
Ruby/Python |
Python |
Mindstorms |
Arduino |
Gir raske resultater |
5 |
3 |
5 |
3 |
3 |
5 |
5 |
Få abstraksjons-nivåer |
5 |
3 |
5 |
5 |
5 |
5 |
5 |
Bra IDE |
5 |
3 |
5 |
3 |
3 |
5 |
3 |
Egner seg for å lage spill |
5 |
5 |
3 |
4 |
2 |
3 |
3 |
Lærer barna programmering |
5 |
5 |
1 |
5 |
5 |
1 |
5 |
Utbredelse |
5 |
3 |
3 |
5 |
5 |
5 |
5 |
Open Source |
0 |
5 |
5 |
5 |
5 |
0 |
5 |
Gratis |
0 |
5 |
5 |
5 |
5 |
0 |
0 |
30 |
32 |
32 |
35 |
33 |
24 |
31 |
Ut fra denne sammenligningen ser det ut til at Ruby/Python stiller sterkt. Men det er bare foreløpig! Her kan det oppstå mange interessante diskusjoner!