Ohjelmoinnin opetuksen merkityksestä.

Sorry, this text is in Finnish only.

Ohjelmoinnin opetus käynnistyy peruskouluissa ensi vuonna ja viimeisen vuoden aikana se on ollut useaan kertaan esillä mediassa. Reaktorin perustamat Koodikoulut ja Linda Liukkaan ja Juhani Mykkäsen Koodi2016-opas ovat erityisesti saaneet paljon julkisuutta ja herättäneet keskustelua. Ohjelmoinnin opetuksen alkaminen tuo myös tarpeen kouluttaa opettajia, sillä kovin harvalla on kokemusta ohjelmoinnista. Tähän tarpeeseen on vastannut mm. Koodiaapinen, joka on Aalto-yliopiston ja IT-kouluttajat ry:n yhteishanke. 

Olen omassa tutkimuksessani käsitellyt ohjelmoinnin opetusta, sekä koodin, tuon ohjelmia pyörittävän merkkijonon ymmärrystä viimeisien vuosien ajan. Ohjelmoinnin opetuksesta  käydystä keskustelusta voidaan tavoittaa muutamia linjoja, kuten keskustelun ohjelmoinnin tärkeydestä Suomen tulevaisuudelle ja tulevaisuuden ammateille. Toinen keskustelu käydään sopivan ohjelmointikielen tai ohjelmiston välillä: Joku kokee tärkeäksi yhden kielen opettamisen toinen taas jonkin aivan toisen. Kolmanneksi keskusteluissa liikkuu ohjelmoinnin opetuksen tärkeys logiikkaa tai matemaattista/laskennallista ajattelua harjoittavana taitona. Viimeiseksi mukana keskustelussa liikkuu myös robotiikka: Ohjelmoinnin opetuksen velvollisuus kun laskeutuu osittain myös käsityön osalle perusopetuksessa. Ohjelmoinnin opetuksessa tämä käsityön osuus nähdään usein robottien rakentamisena, sekä niiden ohjelmoimisena suoriutumaan erilaisista esteradoista. Robotti ikäänkuin toisintaa koodin loogista ajattelua: Miten käsken robottiani niin ettei se törmää esteeseen? Yhteistä kaikille näille keskusteluille on niiden funktionaalinen luonne. Koodi nähdään keskustelussa melko yksinkertaisena asiana, ja tärkeimpinä asioina nähdään keskustelu välineistä tai käytännön tavoista.

 Mielestäni ohjelmoinnin opetuksen suurin ongelma ei ole se millä välineellä opetetaan, millä oppiasteella, vaan se että koko ohjelmoinnin merkitystä ei ymmärretä.  Ongelma juontuu ohjelmoinnin käsittämisestä yksinkertaiseksi funktionaaliseksi aineeksi, jonka opetus voidaan integroida matematiikan ja käsityön oppiaineisiin. Oma mielipiteeni ja käsitykseni koodista on se, että koodi on kaikkea muuta kuin yksinkertaista. Koodia on kaikkialla ja se luo ja muuttaa yhteiskuntamme ja yksityisen elämämme rakenteita jatkuvasti. Koodi vaikuttaa toimintaamme työssä ja vapaa-ajalla. Se vaikuttaa niin kauppojen kassoilla kuin älypuhelimissamme. Tavaroiden internetin ja muiden uusien teknologioiden tullessa elämäämme koodin merkitys kasvaa entisestään. Toisin kuin moni muu yhteiskuntaamme rakenteisiin vaikuttava muutos, koodi varsin usein tulee meille kuin annettuna. Valitettavan vähän koodia rakennetaan yhteiskunnallisesti, sen eri merkityksistä keskustellen, vaan käyttämämme koodi on usein peräisin yrityksiltä, jossa sitä eivät työstä koodarit yhdessä sosiologien kanssa keskustellen, vaan lähinnä markkinatalouden ehtojen sanelemina. Näistä asetelmista katsottuna koodi esittäytyy monimutkaisena ilmiönä, jonka purkamiseen ei sovellu pelkkä ohjelmoinnin peruslogiikan opettaminen.
Yhdessä VTT:n tutkijan Mikko Dufvan kanssa tekemässä artikkelissa olemme tarkastelleet koodia ja koodin opetusta erilaisten paradigmojen ja metaforien avulla, tarkoituksenamme tarkastella koodia erilaisista tulokulmista. Tutkimuksemme perusteella koodia voidaankin tarkastella, ja voisi olla hyväksi tarkastella, funktionalistisen näkemyksen lisäksi tulkinnallisesta, emansipatorisesta ja postmodernista tulokulmasta. Jokainen näistä tuo koodia esille hieman eri tavalla. Tulkinnallisessa ajattelussa voimme katsoa koodia kulttuurina, sekä sitä miten koodi vaikuttaa kulttuuriimme ja miten koodin kulttuuri vaikuttaa yhteiskuntaan. Millaisia alakulttuureja koodi on synnyttänyt sekä miten nämä vaikuttavat kirjoitettuun koodiin. Miten ja miksi esimerkiksi free software movement syntyi? Voimme myös tulkita koodia poliittisena toimijana, jolloin kirjoitettu koodi ei näyttäydy objektiivisena kielenä, vaan koodin luomat rakenteet vaikuttavat elämäämme ja yhteiskuntaamme. ”Code is Law”-kuten Harvardin oikeustieteen professori Lawrence Lessig totesi jo 1999. Yhtenä esimerkkinä tästä voidaan pitää esimerkiksi internetiä, josta Lessig totesi: ”We can build, or architect, or code cyberspace to protect values that we believe are fundamental, or we can build, or architect or code cyberspace to allow those to disappear… …There is no choice that does not include some kind of building. Code is never found; it is only ever made, and only ever made by us. " (Lessig, Lawrence. Code and Other Laws of Cyberspace, 1999.)
Nyt yli viisitoista vuotta myöhemmin voimmekin nähdä miten internet on ollut useiden erilaisten arvojen tuojana ja taistelijana. Mikään käyttämämme koodi ei pohjaudu välttämättömyyksiin, vaan rakenne tulee koodin kehittäjän tarpeista tai tarkoitusperistä.

Emansipatorinen tulokulma on myös tulkinnallinen näkemys koodista, mutta keskittyy erityisesti koodin voimasuhteisiin. Siinä missä tulkinnallinen tulokulma avaa koodin käsitettä kulttuuriseen ja poliittiseen suuntaan, sen kummemmin arvioimatta eri tarkoitusperiä, emansipatorinen tulokulma kysyy minkälaisia arvo- ja valta-asetelmia koodi synnyttää? Luoko koodi voimaannuttavia vai rajoittavia käytänteitä? Voimme esimerkiksi tarkastella miten personoidut haut vaikuttavat meihin: Miten on perusteltavissa se, että minun Google-hakutulokseni eroavat kaverini hakutuloksista hakiessamme samalla hakusanalla? Miten personointi auttaa meitä ja mitä se puolestaan sulkee? Ja laajemmassa mittakaavassa voimme miettiä koodin suhdetta yksityisyyteen tai sitä minkälaisia valta-asetelmia muodostuu kun yksittäiset kaupalliset toimijat keräävät meistä ennennäkemättömän paljon tietoja käyttääkseen tätä tietomäärää pääasiassa markkinointiin. Entä miten tämä sama tietomäärä päästessään muihin käsiin vaikuttaisi elämäämme? Koska infrastruktuuria koodin ja datan luomiseen ei ole rakennettu, on tämän tietomäärän haltijalla huomattava valta-asema. Emansipatorinen tulokulma sitoo koodin eettisiin ja yhteiskunnallisiin kysymyksiin ajankohtaisella tavalla. 


Viimeisenä tulokulmana postmoderni tuo esiin koodin ilmaisuksellisia mahdollisuuksia tavalla, jota ohjelmointi-keskustelussa ei huomata. Kyse ei ole tuotteistettujen robottien ohjelmoinnista, vaan koodi voi toimia ilmaisun välineenä, siinä missä kynä tai sivellin. Aivan kuin kaikki taiteellisen tuottamisen välineet, koodi mahdollistaa asioiden kommentoinnin tavalla mikä ei ole mahdollista muutoin. Koodi ilmaisun välineenä ei tarkoita vain robottikisoja vaan taiteellista ilmaisua, jolla voidaan puuttua esimerkiksi yhteiskunnan rakenteisiin mielenkiintoisilla tavoilla. Robotin ei tarvitse olla kone, joka selviytyy vaikeista reiteistä, vaan se voi olemassaolollaan esittää kysymyksiä koodin suhteesta yhteiskuntaan, valtasuhteisiin tai vaikka osallistua tekoäly-keskusteluun. Tai se voi toimita tunnetilojen ja mielenalojen ilmaisijana, siinä missä muukin taide.  Postmoderni tulokulma nimenomaan pureutuu koodin sisältä koodin luomiin ongelmiin. Sen sisällä taiteellinen ilmaisu tuo koodin käsin kosketeltavaksi ja ymmärrettäväksi ilmiöksi.


Ohjelmoinnin opetuksen tullessa yleissivistystä antavaan peruskouluun yllä esitettyjen kysymysten soisi tulevan osaksi opetusta. Mielestäni nämä asiat tuovat myös esille puitteita tämän hetken ohjelmointikeskustelussa. Tarvitsemme laajempaa keskustelua aiheesta, sekä laajempaa asiantuntemusta. It-alan yrittäjät toki ymmärtävät koodia, mutta opetuksessa se on hieman sama kuin taidetta opettaisi kouluissa markkinointifirma. Toki markkinointifirman graafikolta onnistuu opettaa tietoa sommittelusta ja väreistä, mutta tulokulma on täysin erilainen. Laajempi keskustelu ja kaikkien opettajien mukaan ottaminen ohjelmoinnin opettamiseen voisi tarjota ratkaisuja. Uuden OPS:in myötä tulevaa ilmiöpohjaisuutta hyödyntämällä voitaisiin ohjelmoinnista ja koodista luoda mielekkäitä kokonaisuuksia, jotka rakentavat oppijan käsitystä koodista syvemmällä ja mielekkäämmällä tasolla. Funktionaalisuutta tarvitaan, mutta ilman muita tulokulmia kokonaisuus uhkaa jäädä liian laihaksi.