Helle haittaa koodaamista, osa 1




Minulla oli kovasti suunnitelmissa, että kesälomalla ehdin hyvin käydä Aalto Yliopiston ja Reaktorin Elements of AI –kurssin ja Code Academyn koodauskursseja läpi, Suomen kesä ja yllättävä helleputki oli toista mieltä. No en valita, koska rakastan aurinkoa ja nautin tästä, että kerrankin täällä tarkenee. Koodaamisen ehtii oppia syksymmälläkin, kyllähän tässä maassa niitä koodareille soveltuvia pimeitä päiviä riittää. Mutta tosiaan tarkoitus oli kesän aikana syventää ymmärrystäni koodaamisesta eli ohjelmoinnista ja eri ohjelmointikielistä ja kirjoittaa blogia tästä oman osaamisen kasvattamisesta. Nyt, kun helleputki on jatkunut jo niin kauan, että maltan olla välillä sisällä, päätin kirjoittaa kolmiosaisen sarjan, jossa paneudun enemmänkin asioihin, joita olen oppinut tässä kahden ja puolen vuoden IT-urallani. Puhutaan ihan perusjutuista, mutta minulle nämä olivat uutta ja näitä ei todellakaan selitetä missään, joten olen oppinut kaiken itse, tutkimalla ja kyselemällä.

Olen aiemminkin maininnut, että tykkään jotenkin luetteloida asioita ja mielestäni se auttaa myös lukijaa hahmottamaan kokonaisuuden, lisäksi silloin pysytään paremmin rajatussa aiheessa, joten tässä taas kolmen kohdan lista asioista, joita olen oppinut ja joita tämä juttusarja käsittelee:

1. Ohjelmointi ja ohjelmistot, softamyyjä vai koodari?
2. Pilvipalvelut ja lyhenteet (SAAS, PAAS, RAAS, SLA), mikä ihmeen pilvi?
3. Tieto eli Data, miksi aina Big Data, miksei ”kaikki Data”, onko tekoäly pelkkää hypetystä?

1. Ohjelmointi ja ohjelmistot
Kun aloitin urani pankkimaailman jälkeen RPA:n (Robotic Process Automation) eli ohjelmistorobotiikan parissa, kaverini kysyi ”oletko siis softamyyjä?” ja jo tuo lause pisti miettimään, mitä hän oikein tarkoittaa. Tiesin kyllä, että softa eli software on suomeksi ohjelmisto ja kun puhun ohjelmistorobotiikasta, täytyy sen liittyä ohjelmistoihin. Mutta siis RPA:ssa automatisoidaan ohjelmistojen käyttämistä. Jotenkin tosi nurinkurista, että ensin on kehitetty valtava määrä ohjelmistoja, joiden piti helpottaa ihmisten arkea ja vähentää paperin määrää. Nyt ihmisten pitää käyttää niin monia eri ohjelmistoja, jotka eivät tietenkään kommunikoi keskenään, että pitää kehittää robotteja, jotka käyttävät näitä ohjelmistoja, jotta ihmisten aikaa säästyy järkevämpään tekemiseen, kuten innovointiin ja uuden liiketoiminnan kehittämiseen.

En siis ollut varsinaisesti softamyyjä, vaan myin ratkaisua, joka helpottaa ihmisten arkea ja tekee olemassa olevalla softalla asioita, joita ihmiset ovat tehneet tähän asti. Koodaaminen tapahtuu puolestaan taustalla ja jokainen robotti koostuu riveistä ja riveistä koodia, joilla annetaan robotille käskyjä tehdä erilaisia asioita. Koodaamista eli erilaisten ohjelmointikielien kirjoittamista tai ”skriptaamista” on valtavasti erilaista ja koska näitä ei vielä ymmärretä laajemmin, niin aina puhutaan vain yleisesti koodareista. Riippuu siis siitä, että oletko kehittämässä jotain applikaatiota eli sovellusta esimerkiksi älypuhelimelle vai nettisivuja, että mitä ohjelmointikieltä sinun tulee osata. Toistaiseksi kaikki on laajan yleisön mukaan yhtä massaa ja siksi myös luemme jatkuvasti uutisista, että ”koodareista on pulaa ja heidän palkkansa ovat tähtitieteellisiä”, pitäisi aina muistaa tarkistaa, että mistä ohjelmointikielestä ja sen osaamisesta nyt olikaan pulaa. Aivan, kuten kielten opiskelu, jokainen kieli on erilainen, mutta luultavasti esimerkiksi kiinaa osaaville maksetaan enemmän kuin ruotsia osaaville ja heistä on myös pulaa. Sama pätee myös koodaamiseen.

Olen siis oppinut, että ohjelmointikieliä on monenlaisia ja kaikki ohjelmistot perustuvat koodiin. Kehittämällä hyvää loogista päättelykykyä, kehität myös ”kielipäätä” ja opit helpommin koodaamisen logiikan. Ohjelmistot on puolestaan kehitetty helpottamaan ihmisten arkea ja työntekoa, kuten esimerkiksi pankissa kassajärjestelmä. Ohjelmistoja voidaan integroida eli laittaa keskustelemaan keskenään, mutta aina se ei ole mahdollista tai se on todella kallista ja aikaa vievää, tällöin ohjelmistorobotiikka on hyvä vaihtoehto. Esimerkiksi sairaaloissa on useita järjestelmiä, jotka sisältävät potilastietoja ja lääkärit ja sairaanhoitajat joutuvat täyttämään moneen paikkaan samoja tietoja.

Ohjelmistorobotiikkaan on kehitetty omia teknologioita, joista tunnetuimpiaovat  Blue Prism ja UiPath, joiden kanssa pärjää myös ilman koodirivien kirjoittamista. Niissä on sisällä graafinen käyttöliittymä, jonka avulla prosesseja mallinnetaan vuokaavioiden avulla kuten prosessikaavioissa. Tämä on varmasti vauhdittanut RPA:n kasvua, kun liiketoiminnan ihmisetkin voivat ohjelmoida helposti omia robotteja. Ohjelmistorobotiikkaa on kuitenkin mahdollista myös koodata ja yleisimpiä ohjelmointikieliä ovat Python ja C# (joka lausutaan C sharp). Koodaamalla on mahdollista tarttua ohjelmointirajapintojen (Application programming interface, API) kautta tietokantoihin ja rakentaa roboteista muun muassa nopeampia. Muuten robotilla menee todella paljon aikaa odottamiseen, jos sille opetetaan ohjelmistojen käyttöä samojen käyttöliittymien kautta kuin ihmisille. Käyttöliittymien vasteajathan on optimoitu ihmiskäyttäjille. Käyttöliittymä on siis yksinkertaistettuna se ikkuna, johon tehty selkeät valikot ja nappulat, mitä ihmiset painelevat, kun käyttävät jotain ohjelmistoa. Rajapinta puolestaan tarjoaa mahdollisuuden tarttua siihen ”varsinaiseen tietoon”, minkä käyttämistä käyttöliittymä helpottaa.

Ohjelmistojen toimivuutta täytyy myös testata, koska niissä voi olla virheitä eli bugeja tai ne eivät kestä kovaa kuormitusta, jos yhtäkkiä valtavat massat käyttävät samanaikaisesti samaa ohjelmistoa, esimerkiksi jokin konserttilippujen varausjärjestelmä. Tätä ohjelmistojen testaamista on myös mahdollista automatisoida ja silloin puhutaan testiautomaatiosta. Se on myös eräänlaista robotiikkaa ja monet sekoittavatkin sen myös RPA:han. Teknisesti nämä kaksi, testiautomaatio ja ohjelmistorobotiikka ovatkin lähellä tosiaan, mutta ohjelmistorobotiikassa nimenomaan automatisoidaan liiketoimintaprosesseja ja ohjelmistoja, joita liiketoiminnassa käytetään. Testiautomaatiossa puolestaan automatisoidaan taustaprosesseja ja varmistetaan ohjelmistojen toimivuus.

Tässä oli näitä ensimmäisiä oppeja softasta ja koodaamisesta. Seuraavalla kerralla sitten aiheena pilvipalvelut ja siihen liittyvä termistö, joka sai ainakin minut varsin solmuun, kun ihan untuvikkona opettelin erilaisia kirjainlyhenteitä. Koodaamisesta ja robotiikasta tulen kirjoittamaan vielä lisää jatkossa. Nyt takaisin aurinkoon!