You are currently browsing sanna's articles.
Avaudunpa tässä vielä, kun aikaakin on monta kymmentä minuuttia.
Syksyn alussa meille kerrottiin, että luvassa olisi kahdeksan olo-tapausta. Mainittiin myös, että tapausten määrää oli vähennetty edellisvuodesta kahdella, koska viimeiset Olot oli koettu jo hieman turhiksi. Kun tämän vuoden kurssilaiset olivat kokoontuneet kahdeksan kertaa yhteen, ei lopusta ollut vielä tietoakaan. Osassa tapaamisista oli ollut vain pelkkä purkusessio ja vastaavasti näitä seuraavissa tapauksissa pelkkä uuden aiheen avaus, mistä johtuen kokoontumisien määrä kasvoi. Miksi näin? Miksei määrää olisi voinut vain pitää kahdeksassa ja käydä jokaisessa tapaamisessa sekä vanhan ongelman purku että uuden avaus? Hiukan kyseenalaista oli myös dialogikartan käytön opettelu olo-session aikana. Mihin kyseistä taitoa itse asiassa tarvittiin? En kokenut sen millään tavalla parantaneen aikaansaannostamme.
Vielä vaan jaksaa kysellä ja ihmetellä… Ei loppua näy
Yhdyn muihin: huh, mikä kurssi. Voiko sellasta ahdistuksen ja stressin määrää sanoin kuvailla? Syksyn läpi jatkuneet jokaviikkoiset deadlinet, osaamattomuuden tunne, motivaation puute ja muun elämän kärsiminen. Siinäpä päälimmäiset fiilikset.
“Meetkö koululle lauantaina?” oli peruskysymys, jonka kuulin ystäviltäni, kun he suunnittelivat yhteisiä aktiviteetteja. Vastaus oli lähes poikkeuksetta myöntävä. “Miten pitkään toi voi jatkua?” oli toinen kysymys, jota kuulin erityisesti joululomalla kertoessani päivän ohjelmasuunnitelmistani (koodaus).
Paljon on kurssin aikana opittu, mutta paljon on myös kiskottu hiuksia päästä. Yli muun minua häiritsi kurssin hallitsevuus. Se täytti jokaisen vapaan tunnin ja vei aikaa muilta kursseilta. Matematiikan opiskeluun ei juurikaan jäänyt mahdollisuuksia, kun 14 opintopistettä olivat kiinni juuri kyseisen viikon osasuorituksesta. Toisaalta ärsyttävää oli myös palautukset. Jokainen essee, käsitekartta tai java piti olla tietyssä muodossa palautettaessa. Palautuksen oikean muodon löytäminen oli alkuun hankalaa, ja ahdistusta ei suinkaan vähentänyt se, että arvosana saattoi riippua siitä, olenko osannut tehdä linkitetyn sisällysluettelon. En siis ollut myöskään opiskellut html:ää tai muita kurssille tullessani, joten näidenkin asioiden oppimiseen meni oma aikansa.
Ymmärrän toki, että tekstien muokkaaminen ja pakettien tekeminen on tärkeä ja hyödyllinen taito, mutta olisin mieluummin ottanut opin erillisenä kokonaisuutena niin, ettei olentojen ja luokkien tietämykseeni lasketa arvosteltavaksi sitä, kuinka käytän html:ää tai cmap toolsia.
Kaiken kritisoinnin rinnalla kurssista löytyy kuitenkin paljon positiivistakin. Osatehtävät olivat mielenkiintoisia, ja ongelmalähtöinen oppiminen sinänsä loistojuttu. Kurssin henkilökunta oli innostavaa ja osaavaa, mikä antoi motivaatiota. Esseet olivat itselleni oppimisen kannalta erittäin tärkeitä välietappeja ja jos niitä ei olisi ollut, ymmärrys olisi saattanut jäädä varsin pinnalliseksi. Kaiken huipennus, loppuprojekti, oli myös loppujen lopuksi huippujuttu. Niin suurta oppimista ja itseluottamuksen kasvua en ole kokenut monesti, kun saadessani itse suunnittelemani pelin toimimaan.
Varsin ristiriitaiset ovat tuntemukset tässä vaiheessa. Voi olla, että aika parantaa haavat, mutta ei välttämättä. Tällä hetkellä asia, jota kaipaan eniten on kunnon loma, vaan turha on toive. Parasta, mitä tämä kurssi opetti, on aikataulun hallinta ja oppimaan oppiminen. Takana ovat ne ajat, jolloin kaikki tuli eteen valmiina. Näitä taitoja tarvitsen varmasti tulevaisuudessakin. Ehkä tästä jäi kuitenkin kokonaisuudessaan enemmän positiivisia kuin negatiivisia asioita käteen. Nyt ainakin tuntuu siltä.
Kahdentoista edellisen kouluvuoteni aikana tarvittavat tiedot aseteltiin tarjottimella eteen oppituntien aikana, ja kotitehtäviä sekä projekteja tehdessä näitä tarjottimen antimia piti vain osata hyödyntää. Harvinaisen helppoa. Tämän opiskelutavan omaksuneena yliopistomaailma tarjosi jos nyt ei kylmää niin ainakin viileää kyytiä.
Studio1:n periaatteena on: jos et osaa, opettele ja jos et tiedä, hanki tietoa. Kukaan ei tarjoa luentoa aiheesta “miten saada aikaan eeppinen taistelu” eikä edes aiheesta “miten listaan tallennetaan tietoa, ja mihin sitä voi hyödyntää”. Alussa tiedon haaliminenkin oli varsin hankalaa, kun kyse oli aiheesta, josta minulla ei tosiaan ollut mitään käsitystä. Tuntui, ettei kirjaa voi lukea, kun en tiedä mistä siinä puhutaan ja toisaalta tuntui, ettei koodia voi kirjoittaa, kun ei ole lukenut kirjaa.
Vaikeinta aluksi olikin oppia ymmärtämään, mitä ohjelmointi on. Olisin kaivannut jonkinlaista alkuinfoa, jossa olisi kerrottu, että on olemassa erilaisia valmiiksi luotuja ohjelmointikieliä, joita tarvitsee vain hyödyntää, ja että java, tämän kurssin aihe, on yksi tällainen kieli muiden joukossa. Sen jälkeen olisi voitu esittää, miten jokin helppo asia toimii eri koodikielillä kirjoitettuna. Näiden opasteiden jälkeen olisin ollut paremmin valmis vastaanottamaan tietoa return-käskyistä ja konstruktoreista. Nyt kurssin alku meni itseltäni hieman ohi, kun en todellisuudessa ymmärtänyt, mitä minun haluttiin oppivan.
Ymmärrettyäni kielikysymyksen vastassa oli edelleen tiedon hankkimisen vaikeus. API vaikutti melko hämärältä miljoonine luokkineen, ja kaikki englanninkieliset tutoriaalitkin kannustivat lähinnä vain koodinpätkien kopioimiseen. Kalakirjakaan ei houkutellut ainakaan ulkoasullaan. Tässä vaiheessa olo-sessiot ja porukalla pohtiminen tuntuivat loistavalta vaihtoehdolta.
Ensimmäinen olo-sessio meni kuitenkin samaan kastiin aloitusluennon kanssa. Oli ihan kivaa pohtia vompatin syvintä olemusta, mutta se ei juurikaan auttanut alkuun javan oppimisessa. Olenkin sitä mieltä, että aluksi olisi voitu opettaa raa’asti vain javan perustoiminta, ja vasta myöhemmin laittaa opiskelijat pohtimaan, mistä tässä juuri opitussa asiassa on kyse. Myöhemmissä olosessioissa käsiteltävät asiat kuitenkin konkretisoituivat, ja tapaamisista alkoi oikeasti olla hyötyä oppimisessa. Ollisin tosin kaivannut oloiluihin vielä “kyselyvartti”-osiota, jossa olisi vapaasti voitu pohtia ohjelmoinnissa eteen tulleita ongelmia. Nyt sessioiden rakenne oli kuitenkin melko rajattu valmiiksi annetun virikkeen ja purun ympärille.
Kokonaisuudessaan voin sanoa, että vaikeinta ohjelmoinnissa on uuden kielen opettelu. Osatehtävät olivat suuria kokonaisuuksia ja niiden aikataulu oli varsin tiukka. Kertaukseen ei juurikaan ollut aikaa, mikä ei millään lailla parantanut tilannetta. Itseäni olisi helpottanut, jos olisi ollut mahdollisuus suorittaa jonkinlaisia pieniä osatehtäviä, jotka olisivat toistaneet oletetusti edellisessä tehtävässä opittua asiaa ja näin vahvistaneet oppimisjälkeä.
Kovin laajaa kokemusta ohjelmoinnin oppimisesta minulla ei ole, joten kaikki tilittämäni mielipiteet perustuvat täysin yhden kurssin antimiin. On sekin kurssi asiansa kuitenkin hoitanut, kun kykenen jonkinlaista koodia itsenäisesti tuottamaan.
Tullessani infolle, en tiennyt mitä ohjelmointi on. En ollut käynyt yhtäkään tietokonekurssia koulussa enkä muutenkaan tiennyt koneista juuri mitään. Kuvitelmani oli, että koodaaminen on jotain todella sairasta binääriluvuilla leikkimistä, josta voi tykätä vain tuoliinsa juurtuneet erakot. Nyt osittain toivon, että kuvitelmani olisi ollut totta.
Ensimmäisellä luennolla yritin pysyä mukana pedron kukkalähetyksissä ja tilaavievissä koreissa, mutta juttu oli lopulta niin korkealentoista, ettei keskittyminen oikein onnistunut. Seuraavaksi Hello Worldin koodattuani olo oli kuitenkin varsin jännittynyt; tätäkö on koodaaminen? Sehän ei ollut kovin vaikeaa. Ensimmäisen java-harjoituksen vyöryessä päälle pyörsin kuitenkin aatokseni. En ymmärtänyt tehtävänannosta juuri mitään. Miksi esineelle kirjoitetaan nimi ja paino, jos niitä ei tiedetä eikä niitä tarvitsekaan tietää? Miten voin laittaa metodin palauttamaan nimen, jota en tiedä eikä minun tarvitsekaan vielä tietää? Mikä “String nimi” on? Enhän ole määritellyt sitä missään. Viekö se tilaa “korissa”? Pääni oli täynnä ihmetystä, ja kaikkea en osannut muokata edes kysymyksien muotoon.
Hieman myöhemmin päädyin siihen tulokseen, että ohjelmoinnissa on kyse loogisesta ajattelusta. En kuitenkaan pystynyt keskittymään niinkään ongelmanratkaisuun sanan kuvannollisessa merkityksessä, koska minulle ongelmia tuotti jo pelkän koodin kirjoittaminen ilman yhtäkään loogista ongelmaa. En tuntenut silmukoita silloin, kun niitä olisi pitänyt käyttää enkä oikein ymmärtänyt, miten APIsta löytyvät miljoonat metodit voisivat lievittää tuskaani. Vähitellen, kun kokemus karttui, opin käyttämään erilaisia silmukoita ja muita rakenteita sekä ymmärtämään Apin hienouden. Se vaati kuitenkin itse kokeilua, koodaamista ja lisää koodaamista.
Ajan kuluessa ja uusien java-tehtävien tupsahtaessa eteen minulle valkeni pikkuhiljaa, mitä koodaaminen todella on. Se on mahdollisimman tehokkaiden algoritmien etsintää. Kaiken pitää esiintyä pinessä tilassa, kompaktisti ja siististi. Jokaisen sanan pitää olla lunastanut paikkansa. Toisaalta algoritmien pitää olla selkeitä toisaalta taas vain tehokkaita. Tässä vaiheessa aloin kiinnostua ohjelmoinnista hieman enemmän. Vieläkin touhua tosin hidasti se, että ennen kuin voi alkaa ratkoa ongelmaa, piti opetella jonkun uuden luokan ja sen metodien käyttö. Se oli ärsyttävää. Olisin halunnut päästä ratkomaan loogisuuksia, mutta siihen ei annettu mahdollisuutta kovan etenemisvauhdin takia.
Siitä johtuen toivoin toisinaan, että olisin päässyt rehellisesti vain pyörittelemään binäärilukuja kirjoitusvirheiden metsästämisen sijasta. Kaikkea vain ei voi aina saada. Nyt ainakin tiedän, millaista on java-kielellä ohjelmointi ja osaan käyttää monenlaisia luokkia ja rajapintoja. Siitäkin tiedosta olen varsin ylpeä.
Ja niin koitti sekin pimeä marraskuinen päivä, jolloin oli aika palauttaa viimeinen teoriatehtävä. (Koittipa myös se tammikuun päivä, jolloin eräs henkilö muisti unohtaneensa kirjoittaa aiheesta. Ei siitä sen enempää.) Tuo viimeinen tehtävä käsitteli säikeiden toimintaa ja käyttöä java-kielessä. Swingistä selvittyäni olin varautunut vähintään yhtä kylmään kyytiin ja suureen svengaamattomuuden tilaan säikeiden kanssa. Oli kuitenkin jonkinasteinen helpotus kun osoittautui, että säikeiden toiminta vaikuttaa ihan ymmärrettävältä touhulta, vaikka mitään käytännön kokemusta minulla ei asiasta ollutkaan.
Säikeiden perimmäinen tehtävä on pelastaa ihmiskunta rinnakkaisuuden haasteilta. Mikäli ohjelmaan olisi tarkoitus saada kaksi asiaa toteutumaan yhtä aikaa, nuo pienet huijarit suoriutuvat asiasta niin, että jakavat asiat pieniin osiin, joita sitten suorittavat vuorotellen. Varsin toimiva ratkaisu.
Säikeiden hallinnan tärkeimmät osa-alueet ovat prioriteettien määrittäminen sekä säikeen suorittamisen pysäyttäminen tai keskeyttäminen. Ne kun osaa, niin tietää jo paljon. Ainakin siltä nyt tuntuu.
Vaikka säikeiden toiminta oli mielestäni helpompaa ymmärtää kuin swingin, on kirjaviisaus kuitenkin aina kirjaviisautta. Käytännössä vähänkään vaativamman säiekoodin tuottaminen saattaisi tuttuun tapaan tuottaa harmaan hiuksen, kun taas swingi svengaa jo kohtuullisesti. Käytännön kokemus vasta opettaa. Kalakirja luo vain harhakuvitelmia.
Hämmentävästi toiseen ajankohtaan siirretty sessiomme alkoi entistä hämmentävämmin, kun Petri tuli poimimaan meidät oman vakioluokkamme edestä kuljettaen meidät täysin uuteen tilaan jonnekin kauas yläkerroksiin. Tämä uusi sijainti oli kuulemma ilmoitettu samassa viestissä, jossa oli kerrottu ajankohdan muuttumisesta, mutta yksimielisesti totesimme, ettei niin paljoa informaatiota voi ottaa vastaan yhdessä viestissä. Vielä uuteen tilaan siirryttyämmekin saimme soitella muutaman eksyneen lampaan perään ja ohjata heidät luoksemme ennenkuin pääsimme aloittamaan varsinaisen session.
Alkuun kertasimme robottimme (joka on muuten sikahyvä) toimintaa ja päätimme, että hoidamme tällä viikolla kuntoon myös edellisen viikon hieman unohtuneen tehtävän kirjoittaa koodaamistavoistamme blogiin. Sen jälkeen pääsimme itse asiaan, joka koski virheitä ja niiden välttämistä javaa koodatessa. Kuten aina tähän mennessä, myös tällä kertaa ensimmäisenä tajuntaamme räjähti sanat “plan B”. Varasuunnitelmaa ei korvaa mikään. Muitakin kikkoja virheiden välttämiseksi sateli tuttuun tapaamme kuin liukuhihnalta, ja esille tuli mm. kynän ja paperin käyttö kaavioiden piirtämisessä, testien tekeminen jokaisen “palikan” jälkeen sekä halutun tuotoksen ääneen sanominen. Kärsivällisyys on kaikkien mielestä välillä raastavaa, ja käännöksiä ja tarkistuksia ei todellakaan aina jaksaisi tehdä, mutta mitään niin hajottavaa ei olekaan kuin logiikkavirheet, joiden tuloa estääkseen itse kukin on valmis suuriinkin uhrauksiin. Ainakin toisinaan.
Kokonaisuudessaan purkumme oli ohi varsin nopeasti, ja sen enempää aikaa tuhlailematta käänsimme katseet kohti rekursion auvoista maailmaa.
