Hyvät, pahat ja rumat: Kun tekoäly koodaa softaa – Osa 1: Hyvät
Kolmiosaisessa blogisarjassa ruoditaan tekoälyavusteisen koodauksen hyvät, pahat ja rumat. Aloitetaan perusteista ja siirrytään sitten hyviin uutisiin ja siihen, mitä iloa tekoälystä on koodauksen tukena.
Tekoälyllä voidaan tuottaa muutamassa minuutissa jotain, mihin aiemmin kului tunteja tai päiviä. Ruudulle ilmestyy käyttöliittymä, testi menee läpi ja ensimmäinen demo näyttää vakuuttavalta. Tästä olisi helppo vetää johtopäätös, että myös ohjelmistokehitys olisi muuttunut helpoksi. Näin ei kuitenkaan ole, kertoo Web Developer Santtu Lehtinen blogisarjassaan.
Kolmiosaisessa blogisarjassa Lehtinen ruotii tekoälyavusteisen koodauksen hyvät, pahat ja rumat. Aloitetaan perusteista ja siirrytään sitten hyviin uutisiin ja siihen, mitä iloa tekoälystä on koodauksen tukena.
Tekoälyllä koodaaminen voi tarkoittaa montaa asiaa
Koodin kirjoittaminen on vain yksi osa ohjelmistokehitystä. Vaikeampia tehtäviä ovat oikean ongelman tunnistaminen, ratkaisun rajaaminen, kokonaisuuden suunnittelu ja lopputuloksen arviointi. Kun koodia voidaan tuottaa entistä nopeammin, näiden tehtävien merkitys ei pienene. Päinvastoin ne tulevat näkyvämmiksi.
Tekoälyavusteisesta koodauksesta puhutaan helposti yhtenä asiana, vaikka käytännössä sillä voidaan tarkoittaa hyvin erilaisia työtapoja. Yksinkertaisimmillaan tekoäly täydentää seuraavan rivin kehittäjän kirjoittaessa. Keskustelevalta avustajalta taas voidaan pyytää kokonainen funktio, testi tai ratkaisuehdotus. Koodausagentti puolestaan voi tutkia järjestelmän tiedostoja, muuttaa useita kohtia ja suorittaa testejä melko itsenäisesti.
Näissä tilanteissa tekoälylle annettu vastuu on aivan eri tasolla. Muutaman rivin ehdotusta on helppo arvioida osana omaa työskentelyä. Laajan, useita järjestelmän osia muuttavan kokonaisuuden tarkistaminen vaatii jo ymmärrystä siitä, mitä muualla voi rikkoutua ja millaisia seurauksia valituilla ratkaisuilla on.
Siksi ei riitä, että kysytään, käytetäänkö kehityksessä tekoälyä. Olennaisempaa on kysyä, mihin sitä käytetään, kuinka itsenäisesti sen annetaan toimia ja kuka sen tuottaman lopputuloksen hyväksyy.
Prototyyppi tekee ajatuksesta näkyvän
Omassa työssäni verkkokehittäjänä tekoäly on ollut arvokkaimmillaan silloin, kun ajatusta vasta muotoillaan. Sen avulla voidaan rakentaa nopeasti prototyyppi, jolla konseptia kokeillaan ja keskustelua konkretisoidaan. Prototyyppi ei ole valmis tai tuotantokelpoinen ohjelmisto, mutta se voi kertoa nopeasti, onko idea lupaava ja mitä siitä pitäisi oppia seuraavaksi.
Nopea kokeilu lyhentää matkaa ajatuksesta palautteeseen. Sen sijaan, että ratkaisusta keskustellaan vain abstraktilla tasolla, sitä voidaan katsoa, käyttää ja haastaa. Tekoälyn arvo ei tällöin synny valmiista koodista vaan nopeammasta oppimisesta.
Esimerkiksi uuden asiointipalvelun ensimmäisessä kokeilussa ei vielä tarvitse ratkaista lopullista tietomallia, kaikkia integraatioita tai jokaista poikkeustilannetta. Prototyypin tehtävä voi olla paljon rajatumpi: ymmärtääkö käyttäjä palvelun idean, löytääkö hän oikean toiminnon ja tuottaako ratkaisu tavoitellun hyödyn? Kun nämä kysymykset saadaan käsiteltyä aikaisin, turhaan toteutukseen ei ehditä sitoutua yhtä syvästi.
Hyvä lopputulos alkaa ongelman pilkkomisesta
Tekoäly toimii parhaiten, kun ongelma pilkotaan järkeviksi kokonaisuuksiksi. Epämääräinen pyyntö johtaa helposti ratkaisuun, jossa tekoäly joutuu arvaamaan sekä tavoitteen että toteutustavan. Kun tehtävä, rajat ja onnistumisen kriteerit ovat selvät, myös tuotosta voidaan arvioida selkeämmin.
Olen huomannut, että teknologioiden, arkkitehtuurin periaatteiden, koodaustyylin ja hyväksyttävien menetelmien määrittäminen parantaa tuloksia huomattavasti. Tekoäly ei silloin päätä sattumanvaraisesti, millainen järjestelmästä tulee, vaan työskentelee ihmisen tekemien valintojen sisällä.
Pilkkominen tuo esiin myös tehtävien väliset riippuvuudet. Ennen käyttöliittymän toteuttamista voidaan huomata, että tarvitaan päätös käyttäjien oikeuksista tai siitä, mistä tieto oikeastaan tulee. Tällainen havainto ei hidasta työtä, vaan auttaa välttämään myöhemmin kalliiksi käyviä muutoksia ja korjauksia. Tekoäly voi auttaa tunnistamaan olennaiset kysymykset, mutta päätösten pitää perustua järjestelmän ja liiketoiminnan tuntemiseen.
Ensimmäiseen vastaukseen ei myöskään tarvitse sitoutua. Tekoälyn kanssa voi vertailla vaihtoehtoja, etsiä heikkouksia ja jalostaa suunnitelmaa ennen varsinaista toteutusta. Usein juuri tämä ajatteluvaihe on arvokkaampi kuin ensimmäinen syntynyt koodipätkä.
Tekoäly ei korvaa osaamista vaan on osaavan tekijän työkalu.
Ota yhteyttä
Autamme kartoittamaan projektin lähtökohdat, tarpeet ja tavoitteet tarjouksen taustatiedoksi.
Tomi Kaitarinne
CRO, Founding Partner
+358 50 345 3874
tomi.kaitarinne@kuuki.fi