
Yhteenveto Solita-yhtiön toistaiseksi kolmiosaisesta YouTube-keskustelusarjasta, jossa on aiheena tekoäly sovelluskehitysprojektissa. Keskustelijat ovat Sami Köykkä ja Marko Taipale. Videot julkaistaan yrityksen kanavalla Discovering, uncovering and hype-busting GenAI
Videoiden esittelyteksti, joka kertoo taustat:
Solita and ISS have initiated the world’s first comparative study in a real consumer project to better understand the potential of GenAI. Two teams, one mission: one team uses modern, agile software development methods, and the other harnesses the power of generative AI at every step. Both are building the same ERP pricing tool but with radically different approaches. We are here to share experiences and learnings from our groundbreaking GenAI Twin project with our customer ISS, a leading facility management company. Our mission is to experiment in practice and learn fast – discover, uncover and hype-blast GenAI. What can we do with GenAI tools, and what is still hype? Where is the value?
Keskustelijat eivät kerro suoraan, mitä kaikkia tekoälytyökaluja he käyttävät. Riveiltä ja rivien välistä voi kuitenkin päätellä, että niitä ovat ainakin OpenAI:n ChatGPT, Microsoft Copilot ja arvatenkin Microsoft Azure ja sen tekoälyalusta.
1. Could software be done in a day?
Solitan tiimissä on seitsemän jäsentä. Jo nyt, prototyyppivaiheessa, ovat havainneet, että toisenlaista on. Tekoäly on auttanut esittämään keskeisiä kysymyksiä, kuten: mitä me oikeastaan olemme tekemässä? Mitä yritämme saada aikaan? Tiimiläiset syöttävät toinen toisilleen informaatiota ja tekoäly tekee raskaan työn. Vertaavat työskentelyä parviälyyn. Hyvin poikkeuksellista on se, että mukana on koko ajan myös asiakkaan edustaja. Perinteisesti asiakkaan pitäminen mukana projektissa pidempiä aikoja on ollut vaativaa.
Prototyyppivaihe on iterointia. Normaali kuuden viikon iterointisykli on nyt vain 15 minuuttia. On aikaa tehdä useita protoja ja asiakas voi valita, millä jatketaan. Voidaan jopa vaihtaa tavoitetta lennossa. Enemmän kuin kokonaisajan säästöä, aikaa käytetään korkeammalla abstratiotasolla. “Entä jos?”-kysymyksille voidaan nyt etsiä vastauksia saman tien. Normaalisti ne on kuitattava mielenkiintoisiksi mutta jätettävä, koska niihin ei ole budjetoitu eikä varattu projektiaikaa. Myös ns. “nauruversioita” voidaan tehdä. Jos niistä ei ole mihinkään, aikaa ei ole hukattu kuin muutamia minuutteja.
Keskustelijat olivat yhtä mieltä siitä, että täydellisen kehotteen (prompt) rakentelu on turhaa ajanhukkaa. Sen sijaan ihminen orkesteroi, käskyttää tekoälyä, ja edetään pienin askelin.
Jotta prototyypin käyttöliittymää päästään aloittamaan, määrittelyjen pitää yleensä olla tehtynä. Nyt voivat sen sijaan edetä seuraavasti: pyytävät tekoälyä tekemään tietomallin; sitä viilataan asiakkaan toiveiden mukaan; valmiista tietomallista syntyy oma tekoälysovelluksensa; pyytävät sitä laatimaan hyvän kehotteen käyttöliittymän tekemiseksi. Ovat siis saaneet kaksi tekoälyä keskustelemaan keskenään. Puolessa tunnissa heillä oli prototyyppi valmiina sovellustesteineen.
Tekoälyn kanssa pitää varoa kaninkoloja ja sitä, ettei tekoäly pääse niskan päälle. Sinun ihmisenä on oltava se, joka kertoo tekoälylle, mitä tehdään, ei päinvastoin. Sovelluskehitystiimissä on kuitenkin luultavasti henkilöitä kumpaankin junaan. Toisille on luontevampaa tehdä työtä käskettyä, toisille käskeä itse.
2. Who’s the driver in a GenAI project?
Tiimi hyödyntää tekoälyavustajia. Yksi niistä on virtuaalinen tuoteomistaja (product owner PO), jolla on syötetty kaikki projektidokumentointi. Kielimalli tietää kaiken SCRUMista, joten PO on sille tuttu käsite. Tiimi voi siis sivuuttaa aloitustason ja kysyä heti vaikka että “Mihin pystyt? Mitä voit tarjota?” Muita informaatiolähteitä, joita tekoälylle on syötetty: Slackin keskustelulokit ja litteroidut Microsoft Teams -istunnot. Mutta koska ollaan kansainvälisessä pilvipalvelussa, keskusteluista on pitänyt poistaa oikeat henkilönimet, joten pseudonymisointia varten on tehty paikallinen malli. Ideoivat myös Jira-tikettijärjestelmän rästilistan priorisointia tekoälyn avulla. Avustajat pystyvät myös ennen pitkään juttelemaan keskenään, arvioivat keskustelijat.
Avustajaa on kokeiltu myös raportoijana. Sairaslomalta palanneelle on annettu avustaja, joka on seurannut kaikkea puhuttua ja kirjoitettua. Keskustelijoiden mukaan palannut sai vajaassa puolessa tunnissa koosteet kaikesta, josta oli lomallaan jäänyt paitsi. Sami kertoi tehneensä itselleen henkilökohtaisen avustajan, jolta hän voi kysellä aina kun ei ymmärrä, mistä puhutaan. Vaikka hänellä onkin ohjelmoijatausta, hän ei hallitse kaikkia Solitassa käytettyjä tekniikoita. “Kerro minulle, mikä on .NET”. Sen, mitä tekoäly vastaa, voi aina validoita tiimin jäsenillä. Mutta kaikki apulaiset eivät ole olleet menestyksiä. Esimerkiksi “Scrum Master” osoittautui pedantiksi. Ei joustanut ja asetti aivan liian tarkkoja aikarajoja tekemiselle.
Microsoft Copilot jakaa mielipiteitä, mutta se on kieltämättä tehokas työkalu. Se tekee mm. lennossa Microsoft Teams -kokousten litteroinnin, ja sen kanssa voi saman tien aloittaa keskustelun. “Selitä minulle, mitä viimeisen viiden minuutin aikana on puhuttu.” Solitassa on testattu myös sitä, että kuuntelija on ollut päällä kokouksessa, jossa tiimiläiset eivät itse ole olleet osallisina. Sami kertoi olleensa varmuuden vuoksi itse paikalla hiljaisena osallistujana pitämässä huolta, että kaikki toimii.
Kun informaatiota syntyy runsaasti, tekoälyn nykyiset rajoitteet tulevat esiin. Asiakkaan edustaja oli ollut lounaalla puolisen tuntia ja palatessaan kysynyt tekoälyltä, mistä oli puhuttu, jolloin kuuntelija oli alkanut hallusinoida ruusuista sun muista. Koko päivän mittaisesta sessiosta se saattaa muistaa vain aamupäivän osuuden.
Ongelman ydin on RAG.
Solitan tiimi syöttää kaikki dokumentit tekoälylle, joka rakentaa niistä vektoritietokannan. Jos tekoälyä pyydetään esimerkiksi palauttamaan jonkin tietyn asian keskeiset tekstikappaleet, tekoäly kerää niitä kannasta tietyn määrän. Oikeat kappaleet eivät välttämättä kuitenkaan sisälly juuri niihin. Ongelmaa voi yrittää kiertää kehotteen muistilla: teet valtavan kehotteen, jossa on koko materiaali ja kysymys perässä. Mutta se ei ole kestävää kehitystä. Sitä paitsi, jos käytät maksullista tekoälyä, iso kehote tulee kalliiksi. Kehote, jossa on mukana kokonainen kirja, maksaa kolmisen euroa joka kerta.
Lainaan pätkän Simon Willisonia The Pragmatic Engineer -podcastin jaksosta AI tools for software engineers, but without the hype (vahvennukset minun):
[…] a very fancy acronym for a very simple trick. It stands for retrieval augmented generation. All it means is the user asks a question, you search your documentation for things that might be relevant to that question. You copy and paste the whole lot into the model, and these models can take quite a lot of input now, and then put the user’s question at the end. That’s it. Super, super simple.
Yeah, so RAG, it’s the Hello World of building software on top of LLMs. You don’t get it to print Hello World, you get it to answer questions about your documentation. I’ve implemented like 30 lines of Python. I’ve got one version that’s like two dozen lines of Bash, I think.
It’s very easy to get the basic version working, but getting good RAG working is incredibly difficult because the problem is that if you built the system and you know how it works, you are naturally going to ask questions of it in the right kind of format.
The moment you expose it to real human beings, they will come up with an infinite quantity of weird ways that they might ask questions.
And so the art of building good RAG systems, the reason that it could take six months to actually get it production ready is figuring out, “Okay, there were all of these different ways that it can go wrong.” And the key trick in RAG is always how do we fill that context?
How do we pick the information that’s most relevant to what the user is asking, which is really hard. That’s actually like … It’s an information retrieval problem. It’s what search engineers have been trying to figure out for 30 years, and there’s a lot of depth to that field.
So RAG, just like everything else in language models, it’s fractally interesting and complicated. It’s simple at the top, and then each little aspect of it gets more and more involved the further you look.
Avustajista ei ole enää kovin pitkä matka agentteihin, jotka suorittavat tehtäviä. Alustavia testejä on jo tehty. Tiimi käytti esimerkiksi agenttia kopioimaan tekstiä avustajien välillä.
Mikä on ihmisen rooli agenttien maailmassa? Keskustelijat olivat sitä mieltä, että agentit saavat tehdä perustyöt ja ihminen voi siirtyä astetta ylemmälle tasolle, vaativampien ongelmien pariin. Vertasivat agenttia taskulaskimeen: yksikään matemaatikko ei ole menettänyt työtään siksi, että taskulaskin on keksitty. Mielenkiintoinen vertaus oli se, että tulevaisuudessa ihminen saattaisi toimia kääntäjän (compiler) roolissa: määrittelee ja selittää ongelmia tietokoneelle.
3. How will GenAI change software development?
Aivan aluksi Solitan tiimi kävi tietysti läpi markkinoilla olevia tekoälytyökaluja, testasi, valitsi sopivat yms. Mutta hyvin pian alun teknisestä vaiheesta siirryttiinkin tiimipsykologiaan ja tiimin rakenteeseen. Työskentely on sekavampaa kuin mitä ennalta kuvittelisi, ei kovakoodattuja rooleja, ketterämpää kuin ketteryys.
Keskustelun ehkä mielenkiintoisin jakso koski työnjakoa.
Solitan AI-tiimissä on kaksi roolia: kuljettaja (driver) ja navigaattori. Vain kuljettajalla on tietokone, muilla ei. Navigaattorit auttavat kuljettajaa ongelman ratkaisemisessa. Rooleja kierrätetään vartin välein. Sami vertasi tätä siihen tapaan, jota hän ja kaverit käyttivät silloin kun Commodore64 ja Amiga olivat uusia: yksi istui puikoissa, toiset istuivat vieressä ja kommentoivat. Tällainen työskentely on kuitenkin niin kuluttavaa, että tiimin on pakko pitää välillä “välitunteja”.
Marko painotti psykologisen turvallisuuden tärkeyttä (psychological safety). Ketään ei arvostella. Virheet eivät ole pahaksi, koska korjausliikkeet ovat nopeita.
Kuljettaja päättää, joten roolissa on vapausastetta. Onnistumiset ovat pieniä mutta onnistumisia joka tapauksessa. Eikä kokouksia! Asiakkaillakin on tunne, että heistä on ollut hyötyä. Perinteisesti asiakkaan edustajan on täytynyt omaksua paljon informaatiota, jota sitten pikkuhiljaa käytetään kokouksissa. Nyt otetaan pieniä askelia mutta oikeassa asiayhteydessä, ja päätöksenteon sykli on nopea. Sami vertasi tekoälyä päänsisäiseen tukirankaan (mental exoskeleton).
Mikä siis muuttuu? Yksi Samin kielikuvista oli Lego-rakennussarja. Peruspalikoista siirrytään isompiin rakenteisiin, jotka koostuvat näistä peruspalikoista. Tiimin koostumus saattaa ajoittain muuttua, sitä voidaan vahvistaa projektin ulkopuolisilla, vaikka päivä kerrallaan. Testaajia, graafikkoja, tietoturvan edustajia jne. Perehdytykselle tiimistä saattaa olla paljonkin apua. Keskustelijat olivat sitä mieltä, että menestystä ei ratkaise niinkään kokemus kuin innokkuus kokeilla uutta.
Mutta sopiiko nopeatempoinen, jakamiseen perustuva, uutta kokeileva pienryhmätyöskentely kaikille? Ei sovi. Tietotyöläisissä on kuitenkin runsaasti introvertteja. Minkälainen rooli heillä siis voi olla? Solitan testiprojektissa ei nähtävästi ole tätä käytännön tosiasiaa vielä juuri käsitelty, mikä ei sinänsä ole yllätys. Marko mietti, että ainakin ajajan rooliin istumista kannattaa lykätä, jos sitä ei koe omakseen. Osallistuu ensin jonkin aikaa navigaattorina. Tiimin on myös hyvä ymmärtää hidastaa, ettei tahti kiihdy liikaa, varsinkin alussa kun innostus on suurinta. Sitäpaitsi: “Nothing bad in good old slow thinking”.
PS. Marko kertoi, miten solitalaisille oli esitelty tapaa, jolla Tesla ja SpaceX toteuttavat päivittäisessä työssään yrityksen tavoitetta. Esimerkiksi SpaceX:n päämärä on kuulemma asuttaa maailmankaikkeus 1000 vuoden kuluttua. Tästä tavoitteesta on johdettu jatkuvasti päivittyvä suorituskykymittari (KPI). SpaceX on siinä vaiheessa maailman valloitusta, että KPI tarkoittaa tällä hetkellä samaa kuin “miten saada kilo materiaa avaruuteen mahdollisimman halvalla?” Käytännössä siis raketista pyritään saamaan painoa pois.