Takaisin oikeisiin töihin: Ville-dinon matka Reactin ihmemaahan

Tammikuun viimeisen lauantain iltana istuin junan ravintolavaunussa matkalla kohti kotia ja mietin mitä tehdä isona. Meillä oli ollut ala-asteen luokkakokous Jämsässä, jossa kaikki vuorollaan kertoivat elämästään peruskoulun jälkeen. Tuon reilun 30 vuoden aikana oli perustettu perhe, saatu lapsia ja tehty töitä.

Itselläni on takana loistava tulevaisuus kansainvälisessä telekommunikaatioalan busineksessa. Monen mutkan jälkeen jämähdin Nokialla tuotepäälliköksi. Sen sijaan että eteeni olisi auennut uusia positioita joita hakea, Suomessa alkoikin YT-neuvottelujen sarja. Onneksi sain hommattua itselleni hyvän paketin ja pidin kauan odotetun sapattivapaan, laman myötä hieman pidennettynä.

2014-2016 olin ison kiinalaisen antennifirman ainoa länsimaalainen työntekijä. Kiinalaisten kanssa kiersin pari vuotta maapalloa ympäri, mutta en oppinut talon tavoille (eivätkä he länsimaisille). Heidän myyntitekniikkansa oli kuin suoraan pölynimurikauppiaan käsikirjasta; väsytys, tuputus ja lipevät puheet kunnes asiakas ostaa tai suuttuu. Reissaaminen kiinalaisella standardilla (hotellit jaetussa huoneessa max 100€/yö paikasta riippumatta) alkoi myös käydä rankaksi. Työsopimuksen umpeuduttua jäin mielelläni Tampereelle auttamaan vaimoani ostamamme siivousfirman pyörittämisessä.

Nyt siivousfirmamme pyörii rutiinilla eikä minun päivittäistä panostani tarvita, eli olisi aika löytää töitä. LinkedInin kautta on tullut headhuntereiden kutsuja ympäri maailmaa, mutta en ole halukas lähtemään työn perässä Helsinkiin saatikka ulkomaille, ellei mitään erinomaisen hienoa löydy.

Siinä junassa oluen äärellä selasin Facebookia, josta pomppasi silmille Vincitin "Takaisin oikeisiin töihin" -mainos. Ideana on saada vanhoja, muihin hommiin eksyneitä dinosaurus-ajan koodareita takaisin ohjelmoinnin pariin. Itse ajauduin kolmen koodausvuoden jälkeen Nokialla support- ja manageeraushommiin, mutta olen pitänyt itseäni silti aina koodarina. Niinpä täytin hakemuksen samalla istumalla ennen kuin juna saapui Tampereelle.

Kuukautta myöhemmin olin jo lähes unohtanut Oikeat Työt kun sain sähköpostia Vincitin Pasi Kovaselta. Kurssi alkaisi 6.3., tarkoituksena tehdä oma sovellus Node.js ja React-Redux systeemeillä. Helppo homma, enää pitäisi tietää mitä ovat Node ja React. Vanhaan hyvään aikaan koodi tehtiin C-kielellä ja katsottiin oppikirjoista, jos ei osattu. Nyt Google-aikaan oppikirjoja ei tarvita, ja KVG kertoo että React on Facebookin kehittämä kuuminta hottia oleva selainsovelluksiin tarkoitettu JavaScript-käyttöliittymäkirjasto. Facebookin lisäksi se on käytössä mm. Instagramilla ja Airbnb:llä. Onneksi kävin Helsingin Yliopiston JavaScript Mooc-kurssin joku vuosi sitten, niin ei tarvitse ihan kaikkea alusta alkaen opetella.

Pasi kehuu mailissaan Udemyn react-redux -kurssia jonka ostin. Kurssilla koodataan opettajan perässä, hienoa jos vaan tajuaisi mitä ja miksi tapahtuu, termit ja systeemit kun ovat kaikki aivan uutta.

Ensimmäisellä tapaamisella Vincitillä oli aloittamassa reilut 30 dinoa. Ilta alkaa kysymyksellä ”Milloin olet viimeksi koodannut?”. Osalla oli vuosi, toisilla pari vuotta, mutta suurella osalla koodaus oli edelleen osa työnkuvaa ja nykysysteemit tuttuja.

Itse koodasin töissä viimeiset koodit tukiasemaan keväällä 2000, joten lähtökohta ei vaikuta lupaavalle. Ekana iltana käymme läpi ideat omiksi projekteiksi ja muodostamme tiimit. Ajatuksenani oli tehdä siivousfirmallemme nettisivu, josta nähdään, ovatko kohteet siivottu sovitusti. Saan tiimikaveriksi Petrin, jolla on onneksi tuoreempaa kokemusta koodauksesta. Muuten illan puheista en tajunnut juuri mitään, mutta pizza oli hyvää ja sitä oli riittävästi.

Seuraavat kaksi viikkoa menivät Udemyn kurssia seuratessa. Koodasin opettajan perässä pari sovellusta, joissa haetaan netistä säätietoja ja Youtube-videoita, mutta seuraava ohjelma ei suostu toimimaan millään. Etsin päivän virhettä omasta koodistani ja turhaudun. Toinen tapaaminen 20.3. Vincitillä painaa päälle enkä ole saanut oikeastaan mitään aikaan, sen verran kuitenkin että GitHub ja muut työkalut tulevat tutuksi.

Kirjoitan myös mitä ohjelman pitäisi tehdä, eli backlogin. Tapaamisessa kuulen että muillakin on ollut samoja ongelmia kurssin kanssa joten pitäköön Udemy kurssinsa, nyt alkaa oman ohjelman teko vaikka en vielä mitään Reactista tajuakaan. Lupaan tapaamisessa, että seuraavalla kerralla meillä on toimiva demo jossa voi käydä kuittaamassa kohteen siivotuksi. Nyt ei ole pizzaa, mutta saatiin hauskat tarrat läppäriin.

Vanhin tyttäreni koodaa työkseen, joten pyydän Nooraa auttamaan minut alkuun. Nykyään kuulemma kukaan ei tee koodia alusta alkaen vaan ensiksi kopioidaan sopiva pohja jostain ja sen päälle aletaan tehdä omaa koodia.

Nooralla on sopiva harjoitustyö pohjaksi, sitä muokkaamalla saan ensimmäisen Dino Siivous Oy -tekstin ruudulle. "Perse edellä puuhun, jos tarpeeksi maksetaan" on vanha tuttu motto ja toimii tässäkin. Tosin maksajasta ei ole tietoa, mutta on hienoa saada jotain näkyvää aikaiseksi.

Petri tekee backend -puolelle SQLite-tietokannan ja saan frontin juttelemaan sen kanssa. Noora ja poikaystävänsä Jaakko käyvät kylässä ja saan pari tuntia teho-opetusta aiheesta. Tajuan etten tajua vieläkään mistään mitään, mutta sen verran saan koodia kasaan että 3.4. tapaamisessa meillä on toimiva demo; listalta valitaan kohde, joka voidaan kuitata siivotuksi.

Kolmannessa tapaamisessa puoleen kutistunut dino-porukka alkaa tulla tutuksi. Parilla tiimillä meidän lisäksi on jotain demottavaa, meitä kehutaan ja kannustetaan jatkamaan. Joku kertoo että nyt on tullut uusi React Mooc. Mooc-kurssi vaikuttaa lupaavalta. Hienoa tutustua aiheeseen suomenkielellä.

Alan pääsemään aiheesta jyvälle ja lisään ominaisuuksia: aikaleima, kohteen lisäys ja sotkeminen. Pääsen kikkailemaan perinteiseen tyyliin, kun koodaan itse pätkän joka kertoo minä päivänä kohde on siivottu ja montako päivää edellisestä siivouksesta on.

Petri toteuttaa seuraavaan tapaamiseen 17.4. bäkkärille käyttäjän tunnistuksen, jota Petrin kanssa demoamme. Näytän myös että meillä alkaa olemaan jo kohtuullisen paljon kasassa. Lisäksi ylin loppukäyttäjä, eli vaimoni, on tyytyväinen. Vincitin Pasi ja Sami nauravat että seuraavalla, viimeisellä kerralla tämähän on sitten valmis myyntiin.

Nähtyäni karun käyttöliittymän Vincitin isolta ruudulta saan päähäni, että osoitelistauksen sijaan meillä pitää olla kartta. Joten sen sijaan että koodaisin käyttäjien tunnustusta alan kikkailla kartan kanssa. Saankin Googlen kartan näkyviin kohtuu helposti, mutta yritys geokoodata osoite lat-lon koordinaateiksi lähettää Googlen servereille niin monta kutsua että vaihdan Open Street Mapsiin odotellessa Googlen leppymistä.

Kartan kanssa tuli painittua joku päivä, mutta kohtuullisen helposti sain aloitusruuduksi kartan jossa on vihreitä tai punaisia pallukoita sen mukaan onko kohde siivottu vai ei. Kohdetta klikkaamalla tulee streetview kartta ja tarkemmat tiedot talosta sekä mahdollisuus kuitata talo siivotuksi.

Vappu ja viimeinen tapaaminen painaa päälle, joten on aika tehdä käyttäjän tunnistus. Petri on koodannut bäkkärille passport.js -systeemin jolle pitäisi saada frontin tuki. KVG näyttää taas tsiljoona esimerkkiä, mutta homma ei meinaa aueta. Pari päivää menee selvitellessä mistä on kyse ja miten homma periaatteessa pitäisi toimia. Muutama päivä tappelua CORS ym. tietoturvasäätöjen kanssa ja saan vapuksi homman toimimaan kohtuudella.

Ennen viimeistä tapaamista 8.5. teen vielä fronttiin login-kyselyn; eli jos käyttäjä ei ole kirjautunut niin näytetään vain login-kentät ennen kuin pääsee ohjelmaa käyttämään. Vaimon ensimmäinen ja ainoa kesälomaviikko alkaa, lähdetään mökille ja lupasin etten siellä koodaa. Viimeiseen tapaamiseen tulen mökiltä suoraan, onneksi demossa kaikki toimii ja taas saadaan pizzaa sekä upea Dino-viiri luun kera.

"Takaisin oikeisiin töihin" oli hieno kokemus. Luulin jo että nykyinen ohjelmointi on karannut liian kauaksi siitä mitä olen aikoinaan osannut. Olin varma etten pärjäisi enää koodaustöissä, mutta ei se osaaminen ole minnekään kadonnut. Vanha sanonta on että ohjelmointi on kuin pyörällä ajoa: kun sen kerran oppii, niin ikuisesti osaa. Toki nykyiset menetelmät ja ympäristöt vaativat totuttelua ja uutta tulee koko ajan nopeaan tahtiin, mutta Vincitin Dino-kurssin myötä tajusin että pystyn omaksumaan uudet systeemit kohtuullisen nopeasti

Enää pitäisi keksiä mille alan isona. Koodaaminen on kivaa ja haastavaa, mutta en haluaisi unohtaa laajaa osaamistani muilla alueilla kuten tuotehallinnan tai -tuen puolella.

Ville Vainio

Ville Vainio

Liity keskusteluun