No johan oli setti.

Se on siinä. Phuksisyksyn koettelemus on viimein ohi, Studio 1 -kurssin viimeisinkin deadline saapuu nyt keskiyöllä ja paniikkiperjantait ovat takanapäin. Rankkaa tämä on ollut mutta palkitsevaa. En olisi ikinä uskonut kaikista kurssin aloittaneista että lopussa itse kukin osaisi koodata oman pelin/projektin!

Itselläni on luultavasti ollut suhteellisesti helpompaa kuin monilla muilla kurssitovereillani, lähinnä siitä syystä että takanani on ohjelmoinnissa jo viisi vuotta harrastelijataustaa. En kuitenkaan voi sanoa päässeeni vähällä, tai yrittäneeni vain luikahtaa vähin äänin ohi aikarajoista. Otin tavoitteekseni saada ohjelmointikierroksien koodit omalta osaltani valmiiksi ennen viimeisen viikon paniikkikoodailuja, ja hyvästä syystä.

Halusin auttaa.

Halusin auttaa muita, kun assarit eivät kerenneetkään kaikkien luoksi. Halusin saada muutkin ymmärtämään että koodaaminen on pohjimmiltaan mukavaa. Halusin jakaa taitojani, olla reilu ja parantaa infophuksien yleistä mielenterveyttä. Halusin olla epäitsekäs.

Sainkin tavoitteeni pidettyä hyvin yllä ensimmäisten kolmen koodauskierroksen aikana. Vaikka hifistelinkin omaa eeppisteä taisteluani ykköskierroksella, säädin automaattisen täytön kakkoskierroksen karttagenerointiin ja tein kolmannen kierroksen seikkailupelistä interaktiivisen, jäi minulla aikaa muiden auttamiseen ja kysymyksiin vastailuihin. Neljännen kierroksen aikana en varautunut tulevaan Infoähkyyn tarpeeksi ajoissa, joten oikeasti tehtävänannossa määritelty interaktiivinen peli tuli raapaistua toimintaan kiireessä. Pelistä jäi puuttumaan muutama ominaisuus, jotka assari poimikin sieltä mukavasti TODO-kommenttien joukosta.

Viides kierros oli puolestaan sen verran jännä ja mielenkiintoinen, että uppouduin siihen tosissani. Kyseessä oli vanhan kunnon miinaharavan koodaaminen. Kunnon nörttinä olen aikaani saanut tuhlattua Windowsin mukana tulleen Miinaharavan hakkaamiseen ja saavuttanut mukavia tuloksiakin. Halusinkin todella saada aikaiseksi pelin, josta löytyisi normaalin toiminnallisuuden lisäksi muutakin hienoa settiä: Vaikeusasteet, ennätyslistat ja mahdollisesti jopa nettipistelistan.

Aikaa ei sitten lopulta ollutkaan tälle kierrokselle niin paljoa, että kaikkea olisin saanut tehtyä. Swingin epäloogisuus ja oudot, kovakoodatut ominaisuudet (kuten se, ettei JButtonin taustaväriä saa muutettua, kun hiiri on sen päällä!) tuottivat suurta päänvaivaa. Aikani taisteltuani sain kuitenkin aikaiseksi varsin pelattavan pelin, jota jaksoin vielä myöhemminkin jatkokehitellä. Mutta eihän projekti olisi mikään, jos siinä ei jotain jännää bugia olisi!

Miinapeli à la Vesa

Ohjelmointikierrosten lisäksi tähän kaikkeen kuului myös teoriatehtävien tekemistä. Opin niidenkin yhteydessä jälleen itsestäni jotain uutta – käsitekartat eivät vain suju. Tietorakenteista ja Swingistä tekemäni käsitekartat eivät loistaneet muuten täydet pisteet saaneiden kolmen esseen joukossa. Teoriatehtävistä paras oli ehdottomasti poikkeukset ja väkersinkin niistä mukavan esseen. Jaoin kirjoitelmani myös muille studio-ykkösläisille ja sain siitä kiitollista palautetta. Lämmitti todella paljon mieltäni kuulla, että siitä oli ollut apua tenttiin lukemisessa.

Kaikkien OngelmaLähtöinen Oppiminen -sessioiden ja teoria- sekä ohjelmointikierrosten jälkeen oli edessä vielä oman projektin vääntäminen. Vanhemmat infolaiset olivat pelotelleet meitä raukkoja phukseja sillä, että se syö koko joululoman. Ihan näin ei kuitenkaan käynyt, vaan elämäni lakkasi pyörimästä vasta uuden vuoden tienoilla. Jokaisen päivän sisältö oli projektin deadlineen mennessä sama: Herää, koodaa, syö, koodaa, hajoa, koodaa, nuku. Asetelmaa ei auttanut se, että olin asettanut projektilleni riman korkealle.

Projektini ajatuksena oli nimittäin tehdä peli, jossa pelaaja-palloa vedetään kuminauhalla ja paukautetaan liikkeelle. Pallon pitää pomppia seinien kautta paikasta A paikkaan B, mahdollisesti käyden siinä välillä turva-alueilla. Painovoimakin pelissä oli, ja viimeisessä kentässä sen suunta piti jopa vaihtaa osumalla erikoisalueisiin. Fysiikan mallinnuksen saaminen täydellisyyteen raastoi hermoja, mutta sain kuitenkin aikaiseksi jotain, mistä voin olla tyytyväinen ja ylpeä. Pikku bugi siihen lopulta vielä jäi, mutta mitäs moisista. Projektiani pääsee pelaamaan myös suoraan Java Web Startin avulla seuraavasta linkistä: Rubber Band Ball.

Olkoon pelini sympaattinen pallura henkisesti mukananne, kun kevät viimein koittaa.

Se on siinä!

Päällimäisenä Studio 1 syksystä jäivät mieleen deadlinet. Kyseiset päivämäärät ja kellonajat loivat selkärangan koko raastavalle fuksisyksylle, jolle ei ainakaan koodauksen puolesta näkynyt loppua vielä edes jouluaattona. Kyseisten ajankohtien väliin hukkuivat niin fuksisitsit kuin ensilumi. Viime syksynä elämän tapahtumat on vaikea sijoittaa viikonpäiville tai kuukausille, mutta koodikierrosten ja teoriapalautusten väliin ne löytävät paikkansa mainiosti. Tuntui jopa jotenkin oudolta, kun sunnuntai-iltana katsoessani seuraavan viikon kalenteria, ei sieltä löytynyt enää lauantaipäivän huumaa ja kliimaksia: kello n. melkein kuuden Rubyric-hetkeä.

”Kuolemanviivoista” kuitenkin selvittiin ja nyt viimeisen deadlinen porteilla odotan pääsyä Studio 1 vapaaseen maailmaan. Maailmaan ilman OLO-sessioiden ”Post-it”-sotaa. Onko se kirkkaampi ja parempi kuin sitä edeltänyt vai kohtaanko seuralaisteni kanssa vain lapsuuden jouluista tutun ilmapalloefektin? Ehkä olemme odottaneet loppua turhaan ja ehkä Studio 1 oli elämiemme parasta aikaa.

Studio 1 opetti paljon. Nykyisin osaan tehdä käsitekarttoja ja vihaan tavallisia miellekarttoja, joista ei ole jälkipolville mitään informatiivista hyötyä. Aivoni viittaavat nykyisin Javan kuullessaan tietokoneohjelmiin eikä kahvikuppilogoon. Tärkeimpänä oppina pidän kuitenkin sitä, että aina löytyy joku ihminen, joka on taistellut tai taistelee parhaillaan saman ongelman kanssa kuin itse ja parhaassa tapauksessa kaltaiseni on valmis auttamaan. Kieltämättä osaan nykyisin koodata mitä hienoimpia sovelluksen palasia, mutta kyseiset tiedot ja taidot ovat täysin hyödyttömiä, jos en uskaltaisi tulla ulos ongelmieni kanssa. Vaikka aluksi epäilin, Studio 1 opetti paljon muutakin kuin koodaamista.

Viime kesänä pääsykoetulosten mukana tuli taiteltu A4-kokoinen paperi, joka oli ensimmäinen kosketus Studio 1 maailmaan. Tarkkaa sanamuotoa en muista, mutta kyseinen paperi loppui sanoihin, jotka kehottivat valmistumaan matkaan. Kyseiset sanat olivat oikeassa. Henkilökohtaisesti Studio 1 on ollut hyvin pitkä tie. Ensimmäinen koodikierrokseni alkoi lannistavalla ”ykkösellä”, joka kuitenkin kehittyi viimeisen koodikierrokseen saavuttaessa melko hienoksi ”vitoseksi”. Vaikka en missään vaiheessa joidenkin elämäntapakoodareiden arkipäiväistä kuutosta saanutkaan, koin onnistuneeni edes jossain. Viimeistään oman androidprojektini toi onnistumisen ja osaamisen tunteita. Nyt viikko projektin palautuksen jälkeen nämä tunteet ovat yhä vahvistuneet. Onnistuin kurssin aikana pääsemään kiinni johonkin, mistä minulla ei ollut aavistustakaan vielä viime kesänä.

Työmäärä kurssin aikana oli mitä oli ja ylempien tahojen suhtautuminen asioihin välillä vähintääkin suututtava, mutta selvisin hengissä. Yksikään koodi tai teoria ei lähtenyt NullPointerina tai tullut takaisin bumerangina. Kurssin aikana toivoin, että jälkipolvien ei tarvitsisi kärsiä samaa kuin itse jouduin, mutta nyt kalkkiviivoilla toivon, että jokainen infolainen tulee jatkossakin kärsimään saman hapokkuuden kuin jokainen häntä ennen. Ihminen oppii parhaiten uimaan, kun hänet heitetään veteen ja pinnalle päästyään yritetään hukuttaa yhä uudelleen ja uudelleen.

Vaikka itse en bumerangia kohdannut, haluan jälkipolville jättää muiston Abban muodossa:

Boomerang is love

Se on hänessä

Niin mikä? No Studio 1 tietysti. Tästä hetkestä on hädin tuskin uskaltanut unelmoida, mutta nyt se hetki tosiaan on käsillä. Tämä suorastaan eeppinen kurssi piti sisällään niin paljon tuskaa, hikeä ja kyyneleitä, ettei sellaista toivoisi kenenkään kokevan. Niiden vastapainoksi kuitenkin matkaan tarttui paljon muistoja ja itsensä ylittämisen kokemuksia. Kurssin aikana tulikin todistetuksi, että myös sokea kana voi löytää sen jyvän joskus, kun tarpeeksi uskoo ja yrittää.

Lue loppuun

Loppupähkinöintiä

Paljon aikaa siihen meni, ja jotain sai vastineeksi. Ärsyttävää kurssissa oli apupyörittä aloittaminen ja homman määrä (ja kurssin pituus 5kk). Positiivista kurssissa (esimerkiksi verrattuna muiden käymään python-kurssiin) olivat tehtävänannot (pelejä) ja luennot (ne jotka JK luennoi). Myös pienryhmissä pähkäileminen oli mukavaa touhua.

Tärkein anti oli Javan muuttuminen jostain tuntemattomasta työkaluksi. Nyt koen että saan koodaamalla aikaan tahtomani, ja että voisin vaikka jatkaa pelien pienimuotoista koodaamista myöhemmin. En karsastanut ideaa koodaamisesta vaan halusin oppia sen. Asenteeni ehkä helpotti omaksumista, vaikka perjantai paniikin paniikki sitä heikensi. Lopetinkin sitten kerrasta koodin koodaamisen pe-la yöllä.

Esseet ja käsitekartta olivat tietyllä tavalla avuliaita oppimismuotoja, mutta niiden arvosteluperusteet jäivät minulle epäselviksi. Katsoin esseistäni pari kertaa teoriaa koodatessa, mutta muuten en olisi kaivannut niiden työmäärää kurssille.

Ja jottei loppuläpätys ole lyhyempi kuin muilla:

STJ0

Studio1 TJ0! Elämäni tähän asti pisin syksy on takana, niin hyvässä kuin pahassa. Studio1:n laajuus tuli yllätyksenä ja työmäärä oli uuvuttava. Viikot jakautuivat teorianpalautusviikkoihin ja koodinpalautusviikkoihin vuorotellen. Siinä välissä otettiin kerran jos toisen häppää uusien opiskelukavereiden kanssa. Välillä vähän matikkaa ja tuotantotalouden kirjekurssia. Siinä syksy tiivistettynä.

Studio1 oli erittäin työläs ja puuduttava kurssi. Naama meni norsunvi… siis ärsytti aina kun Eclipse aukesi perjantaina, ja nullpointereiden kanssa painittiin yömyöhään. Onneksi riitti muutakin tekemistä, sillä 30 vuotta vanhaan käyttöliittymään pohjautuvaa seikkailupeliä ”kehitettäessä” ei sitä kuuluisaa itsensä toteuttamista ollut näköpiirissä ja flow jäi usein saavuttamatta.

No, neljän kierroksen jälkeen ruudulla näkyi pisteitä, jotka liikkuivat enemmän tai vähemmän, mutta vain kun ruutua klikkasi, sillä muutenhan se ei päivittynyt. Fiilis oli tämä: 

Onneksi seuraava kierros olikin miinaharava. Kierros sujui vaivattomasti ja lopputuloksena oli peli, jota ihan oikeasti pystyi pelaamaan. En vähättele aiempien kierrosten opettavuutta, mutta syvältä niitä oli tehdä. Kierrokset ohi olivat.

Pääassari pelotteli meitä joulukoodaussessioilla projekti-infossa, ja itselläni jäi vähän sellainen ”kuivana kakkoseen”-fiilis. Päätin valita aiheen, josta todennäköisesti selviydyn, joten päädyin matopeliin. Swing oli edellisestä kierroksesta tuttu, joten en lähtenyt rakentamaan peliäni pelottavien uusien kirjastojen varaan. Pitkät päivät kirjastossa tuottivat tulosta ja peli valmistui kuin valmistuikin ajoissa. Lopputulosta katsellessa fiilistä kuvaa aika tarkalleen seuraava kuva (katso kuva 1)

Image

kuva 1.

Paljon tuli kärsittyä, paljon tuli opittua. Kurssi ainakin avasi koodaamiseen liittyviä haasteita. Avasi myös Aallon opetukseen liittyviä haasteita. Tämän tekstin myötä, ohi on.

Lopun sanat

Studio 1

”Te ette selviä studio 1:stä” tuntui alkuunsa kummalta liioittelulta – ei kai se ohjelmointi nyt niin vaikeaa voinut olla? Pian kuitenkin selvisi, että kurssi on kyllä ansainnut maineensa.

Oli täsmälliset tehtävänannot ja assarit ja paniikit, mutta silti tuntui, kuin phuksiparat olisi heitetty kylmään veteen. Samalla kun muutama kymmenen phuksia yrittää samanaikaisesti selvitä luokkakohtaisten metodien saloista ja paikalla on vain muutama assari, on kaaos jo melko valmis. Onneksi oli olo-sessiot, niiden infopläjäykset ja post-it-lappujen kirjoituskilpailukisat. Teoriat oli hyvin sidottu vuorovaikutuksen yhteyteen, vaikka välillä annettujen tiedonetsintätehtävien tiedonetsintä jäikin hieman lyhyehköksi.

Vaikka esseet ja käsitekartat tuntuivat aina tulevan huonoon väliin, osoittautuivat ne kuitenkin varsin hyödyllisiksi varsinkin projektia tehdessä – ainakin omia Swing-esseitä tuli lueskeltua projektin teon yhteydessä.

Vauhtiin pääsemisessä kesti aikansa, ja tehtävänannot vaikeutuivat ja monimutkaistuvat aikalailla samaa tahtia oppimisen kanssa. Kun lähtötietoa koodaamisesta oli tasan nolla, oli opittavaa paljon, ja se piti tehdä vauhdilla. Perjantainen paniikki muuttui jo aikalailla tutuksi, kun viimeisten päivien aikana tuli tahkottua suurin osa koodista. Ja jokaisen DL:n jälkeen tulikin jo seuraava tehtävänanto päälle, joten tehtäviin oli harvoin aikaa keskittyä enempää kuin se viikko. Muista kursseista ei sitten puhutakaan.

Itselleni suuri helpotus oli päästä eroon seikkailupelistä. Siinä vaiheessa kun oli vihdoin oppinut ymmärtämään, että Google on ystävä, oli mukava aloittaa ns. tyhjältä pöydältä. Myös se, kuinka työnsä tulokset pääsi näkemään heti graafisen puolen ansiosta, oli varsin palkitsevaa. Viimeinen tehtävänanto olikin mielestäni kaikista antoisin.
Projekti kuulosti alkuunsa varsin kauhistuttavalta – että pitäisi keksiä aihe ja arkkitehtuuri ja itse koodikin ihan itse? Heti alkuunsa minulle oli kuitenkin selvää, etten haluaisi alkaa räpeltämään peliä, vaan olisi mukava tehdä jotain oikeasti hyödyllistä, eikä (minun taidoillani) jotain vähintäänkin rumaa ja yksinkertaista tasohyppelyä. Kaveripiirissä käytyjen ideointipiirien jälkeen ideaksi syntyi kryptausohjelma. Tosin sellaiselle tarvitsisi vielä jonkin alustan, joten päätin sijoittaa ohjelman sähköposti-clientin yhteyteen.

Projekti opetti enimmäkseen kolme asiaa: Google on jumala, paras koodausaika on kymmenen jälkeen illalla ja kaikki parhaat ideat tulevat aina viimeisten tuntien aikana. Oli myös eräs asia, jota en edes projektin aika oppinut: aloittamaan ajoissa. Toisaalta taas, projekti oli Rubyricissä jo 23.31, joten mitä turhia.

Studio 1 jäi mieleen intensiivisenä, työntäyteisenä, välillä hermoja raastavana, mutta siltikin palkitsevana kokemuksena. En kylläkään tiedä, onko Java mukava työkalu vai ohjelmoijien hermojen riistämiseksi tehty kidutusväline.