Tekoäly on odottanut meitä

Aloitin tietojenkäsittelytieteen opinnot nuorena, heti muutama kuukausi ylioppilaaksi valmistumisen jälkeen. Tietojenkäsittelytiede oli minulle luonnollinen ja luonteva ala: olin ollut aina kiinnostunut tietokoneista ja ohjelmoinnista, enkä pitänyt itseäni (silloin) niin matemaattisena ja luonnontieteellisenä ihmisenä, että olisin lähtenyt opiskelemaan diplomi-insinööriksi. Tietojenkäsittelytieteessä minua houkutti ohjelmointi ja se oli peruste lähteä alalle opiskelemaan.

Jos on kovin kiinnostunut ohjelmoinnista ja koodista itsestään, tietojenkäsittelytieteen ja tietotekniikan opinnot saattavat olla pettymys. Aika äkkiä käy ilmi, että ohjelmointi on opinnoissa vain työkalu ja hyvinkin tärkeä sellainen. Kukaan ei pysty implementoimaan algoritmeja tai hakemaan tietokannoista mitään, jos ei pysty kirjoittamaan koodia.

Tietojenkäsittelytieteen ja tietotekniikan opinnoissa suhteellisen iso painoarvo annetaan kuitenkin sille miten ohjelmistoja suunnitellaan. Vaatimusmäärittely tai requirements engineering on aika suuressa osassa opintoja, mitä erilaisimmissa kursseissa. On ohjelmistotuotannon kursseja, tietojärjestelmän mallintamiseen liittyviä kursseja ja mitä erilaisimpia ohjelmistoprojektien johtamisen kursseja, unohtamattakaan kursseja joiden nimi on suoraan vaatimusmäärittely joko suomeksi tai englanniksi.

Kaikkien näiden kurssien merkitys on hyvin yksinkertainen: ei kirjoiteta juurikaan koodia vaan pyritään kirjallisin (tai graafisin) keinoin mallintaa ja määrittää sitä, mitä nyt ollaan ratkaisemassa.

Itse aiheena vaatimusmäärittely on nätisti sanottuna hieman tylsää ja kuivahkoa. Vaatimusmäärittelyprosessin mukaisesti ensiksi kerätään vaatimuksia käyttäjiltä tai muilta sidosryhmiltä, sitten niitä hieman priorisoidaan, analysoidaan, kirjoitetaan auki, validoidaan ja vielä palataan alkuun koko prosessissa kun opitaan siitä mitä on tehty. Lopulta sitten joku saa tarkkoja määritelmiä siitä mitä nyt oikein pitäisi koodata ja saa kirjoittaa koodia, joka sitten joskus toimii.

Tekoälyn myötä ohjelmistokehitys on muuttunut. Tekoäly pystyy tuottamaan ihan kelvollista koodia ja kynnys lähteä itse tekemään haluamiaan kikkareita ja palikoita on matala, koska tekoälygeneroidun koodin käyttökelpoisuus on usein ihan riittävää siihen nähden miten nopeasti tuloksia saa aikaan.

Mutta mitä vibe-koodaus sitten oikeastaan pohjimmiltaan on ja miten siinä onnistuu? Itse ajattelen, että vibe-koodauksessa ohjelmistokehitys tiivistyy pitkälti työksi vaatimuksien ympärillä: sen sijaan, että kirjoitetaan määritelmiä toisille ihmisille, ne kirjoitetaankin tekoälylle joka tuottaa sitten haluttua koodia.

Vaatimusmäärittelyn ydin on siinä, että vaatimukset ovat selkeitä ja niiden pohjalta pystytään tekemään jotain järkevää. Kun työskentelemme toisten ihmisten kanssa kontekstissa, joka on jokaiselle tuttu niin ihmiset pystyvät täydentämään vaatimuksien puutteita, tunnistaa epäjohdonmukaisuuksia ja tuottaa kelvollista ilman lisätäsmennyksiä. Toisaalta, mitä kauempana työ on määrittelystä sen kriittisempää on hyvä määrittely. Tekoälyn kanssa ongelmana on se, että mitä epämääräisempiä vaatimukset ovat sitä epämäärisempää tekoälyn tuotos on. Eli suomeksi: tarvitaan hyviä määrittelyjä ja hyviä määrittelijöitä.

Siihen meillä on tietojenkäsittelytieteen koulutus ja vaatimusmäärittelyn kurssit. Onpa hyvä, että meillä on vaatimusmäärittely!

Kommentoi

This site uses Akismet to reduce spam. Learn how your comment data is processed.