Blog

GitHub Copilotin hyödyt (ja sudenkuopat)

NOV 7, 2023

Useimmat organisaatiot, joiden kanssa keskustelemme, harkitsevat tekoälyavusteisten koodaustyökalujen käyttöönottoa. Kehittäjien kahvipöytäkeskusteluissa aihe on ollut vahvasti esillä jo jonkin aikaa, ja jotkut saattavat käyttää työssään henkilökohtaista lisenssiä. Huolta herättävät kuitenkin immateriaalioikeuksien mahdolliset vuodot, etenkin jos organisaatiot eivät käytä tekoälyavusteisissa työkaluissa business- tai enterprise-lisenssejä.

Tuomas Leppilampi

GitHub Copilot on tekoälyavusteinen pariohjelmointityökalu, joka on koulutettu miljardien koodirivien avulla, pääasiassa avoimen lähdekoodin projekteista. Copilot muuttaa luonnollisella kielellä kirjoitetut kehotteet koodausehdotuksiksi kymmenillä ohjelmointikielillä, ehdottaa koodin automaattista täydennystä ja tarjoaa muita ominaisuuksia, kuten chatbotin (ChatGPT:n tapaan).

Kuten minkä tahansa teknologian kohdalla, tiiminvetäjät ja Scrum Masterit epäröivät ottaa mahdollisia häiriötekijöitä käyttöön kesken sprintin tai releasen. Uusien työkalujen lisäämiseen kehitysprosessiin löytyy harvoin täydellistä hetkeä, joten on usein syytä tarkastella tarkemmin seuraavia aiheita:

  • Miten Copilot muuttaa ohjelmistoalan ammattilaisten arkea?

  • Mitä riskejä Copilotin käyttöön liittyy, ja miten niitä voidaan vähentää?

  • Mitä lyhyen ja pitkän aikavälin hyötyjä tämä uusi teknologia tuo?

Miten Copilot muuttaa ohjelmistoalan ammattilaisten arkea?

Copilot ei ole tarkoitettu vain sovelluskehittäjille. Kuka tahansa koodin parissa työskentelevä voi käyttää sitä, kuten data-insinöörit tai infrastruktuurin ylläpitäjät. Käyttötapauksia on runsaasti, ja ohjelmistoalan ammattilaisten yhteisöt ovat vasta alkaneet tutkia Copilotin tarjoamia mahdollisuuksia. Se voi myös auttaa ymmärtämään legacy-koodia tai meille vieraita ohjelmointikieliä. Se on erityisen vahva ohjelmointikielten välisessä kääntämisessä. 

Eficoden ja useiden asiakkaidemme kokemusten perusteella suosittelemme käyttämään tekoälyavusteisia työkaluja nykyisten työtapojesi kehittämiseen. Copilot ei ole erityisen hyvä tarjoamaan kokonaisvaltaisia ratkaisuja tai päättelemään liiketoimintalogiikkaa olemassa olevista koodikannoista. Copilotin käyttöliittymään integroitu chatbot tuo kuitenkin lisäkyvykkyyksiä ratkaisun suunnitteluun ja sen loppukäyttäjävaikutusten ymmärtämiseen. Ohjelmistokehittäjistä ei tule arkkitehtejä näiden uusien työkalujen avulla, vaikka tekoälyavusteisten työkalujen ensimmäisillä käyttökerroilla niiden voima voi tuntua vahvalta. Kaikkia perinteisiä ohjelmistokehityksen rooleja tarvitaan nyt ja tulevaisuudessa.

Copilot loistaa vakiokoodin luomisessa ja monimutkaisten syntaksien muistuttamisessa. Jo tämä voi vapauttaa viikosta useita tunteja luovempaan työhön. Lisäksi mahdollisuus luoda testeillesi runko on keskeinen apu, kun oman koodin testaaminen tuntuu haastavalta. Parhaassa tapauksessa aloitat muotoilemalla testiskenaariot ja toteutat vaikeasti hallittavaa mutta tehokasta testivetoista kehitystä (TDD).

Laajemmassa mittakaavassa laadun parantaminen on jopa kiinnostavampaa kuin nopeuden lisääminen, joka on yleensä ensimmäinen ajatus tekoälyavusteisia työkaluja harkittaessa. Sellaisten testien keksiminen, joita kehittäjä ei olisi itse tullut ajatelleeksi, parantaa suoraan tuotteen laatua. Se tarjoaa kehittäjille myös uusia näkökulmia kehitettävään tuotteeseen sekä omiin käsityksiin siitä, mitä laatu tarkoittaa ja miten se varmistetaan.

Tekoälyavusteisten työkalujen käytön mahdollisten riskien vähentäminen

Kun pystyt yhtäkkiä viimeistelemään koodifunktiosi ennätysajassa ja jopa kirjoittamaan niille testit samanaikaisesti, kaikkivoipaisuuden tunne voi sokaista. Tämä korostuu erityisesti silloin, kun kaikki näyttää toimivan täydellisesti oman repositoriosi suojaisassa nurkassa ja testit menevät jatkuvasti läpi.

Todellinen riski on, ettet ymmärrä, mitä olet luomassa. Saatat hyväksyä koodausehdotuksia ja testejä, jotka toteuttavat jotain muuta kuin ratkaisusi tarvitsee. Nopeasta toteutuksesta ja riittävästä testikattavuudesta ei ole apua, jos koodi tekee jotain muuta kuin odotetaan. Joskus Copilot tarjoaa yksinkertaisesti vääriä ratkaisuja. On helppo juuttua yrittämään ehdotuksen toimimaan saamista, vaikka lähestymistapa olisi väärä.

Tekoälyavusteiset ratkaisut tulisi ottaa käyttöön hallitusti. Yritykselle tai organisaatiolle olennaiset ohjeet ja esimerkit ovat erittäin hyödyllisiä. GitHubin tuoreen tutkimuksen mukaan 81 % kehittäjistä uskoo tekoälytyökalujen auttavan heitä tekemään parempaa yhteistyötä.

Kun vähemmän kokenut kehittäjä commitoi koodia, mentorin on järkevää varmistaa, että olemme toteuttaneet oikean asian, testaus on riittävää ja kehittäjä pystyy tarvittaessa selittämään muille luomansa koodin. Jokainen on vastuussa commitoimastaan koodista, vaikka tekoälyavustaja olisi tuottanut siitä suurimman osan. 

Muutamia vinkkejä riskien välttämiseen:

  • Liitä luotu koodifunktio takaisin Copilotin chat-moduuliin ja pyydä sitä selittämään toiminta selkokielellä.

  • Pyydä chatbottia selittämään koodi kuin ruoanlaittoresepti. Se tiivistää usein toiminnot erittäin tehokkaasti.

  • Pyydä chatbottia ehdottamaan koodille testejä, mukaan lukien reunatapaukset, negatiivinen testaus ja mockaus.

  • Pyydä ehdotuksia koodin tyylin parantamiseen. Työkalu kirjoittaa todennäköisesti parannetun koodin valmiiksi, jolloin voit tarkastella muutoksia diffillä ja oppia niistä.

  • Käytä hetki aikaa funktioparametrien todella hyvien nimien pohtimiseen, sillä Copilot ymmärtää tarkoituksesi silloin paremmin.

  • Pyydä oikeaa ihmistä käymään läpi työn merkittävät kokonaisuudet ja se, miten käytit tekoälyavusteisia työkaluja niiden luomiseen, ennen kuin siirrät työn eteenpäin.

Yleisesti kokemuksemme kertoo, että kokeneet tekniset asiantuntijat voivat ottaa Copilotin käyttöön ilman suurta perehdytystä tai ulkopuolista tukea. Käyttöönottoon käytetty aika saadaan yleensä takaisin jo saman viikon aikana.

Teknistä uraansa aloitteleville mentorin kanssa työskentely varmistaa, ettei Copilotin käytöstä tule kilpailua omaa aiempaa tasoa vastaan, vaan tapa oppia nopeasti ja suhtautua virheiden tekemiseen varmemmin.

Lyhyesti sanottuna kuka tahansa voi ottaa GitHub Copilotin käyttöön, kunhan tiedostaa vastuut, jotka odottavat tuotetun toiminnallisuuden viemisessä eteenpäin. Varaudu käymään ratkaisu läpi pyydettäessä ja varmista, että pystyt selittämään jokaisen vaiheen sekä sen, miksi valitsit kyseisen toteutustavan.

Mitä lyhyen ja pitkän aikavälin hyötyjä tekoälyavusteiset työkalut tuovat?

Useimmat keskustelukumppaneistamme tavoittelevat parempaa tuottavuutta ja tehokkuutta – eli käytännössä arvon tuottamista nopeammin tekoälyavusteisten työkalujen avulla. Arvoketjuanalyysia koskeva tutkimus kertoo, että vain pieni osa ohjelmiston toimittamiseen loppukäyttäjille käytetystä ajasta kuluu koodaukseen. Vaikka koodaukseen käytettäisiin julkaisun aikana 20 % ajasta, sen puolittaminen ei ole kokonaiskuvassa kovin merkittävää.

Tuottavuutta kiinnostavampi alue on Developer Experience (DX). Työn mielekkyys ja mahdollisuus oppia samalla, kun pysyy kehitettävän ohjelman kontekstissa, parantavat varmasti henkilöstön pysyvyyttä.

Organisaatiosi kehittäjät pysyvät todennäköisemmin pidempään, jos tarjoat heille työkaluja, joiden avulla he voivat keskittyä luovaan työhön ja välttää tylsät tehtävät. Useimmat kehittäjät pitävät uusien ongelmien ratkaisujen suunnittelusta, ja Copilot auttaa varaamaan aikaa juuri siihen.

GitHub Copilotin käytön lyhyen ja pitkän aikavälin hyödyt ulottuvat kehittäjien arjen parannuksia pidemmälle, joten ohjelmiston elinkaarta on tarkasteltava kokonaisuutena. Erityisesti meidän kannattaa viedä DevOps-parannustoiveitamme eteenpäin. Miten voimme ottaa testausympäristöt käyttöön nopeammin? Voimmeko estää ympäristöjen välisten konfiguraatioerojen aiheuttamat ongelmat? Mitkä ovat julkaisunopeuden ja laadun pullonkaulat? Miten varmistamme, että tuottamamme lopputulokset ovat arvokkaita asiakkaillemme?

Voimmeko tuotekehitystiimien kanssa tehtävässä yhteistyössä varmistaa, että olemme ymmärtäneet vaatimuksen oikein ja muuttaneet sen vastaavaksi tekniseksi määrittelyksi? Tekoälyavusteisten chatbot-työkalujen ja koodausavustajien yhdistelmä tarjoaa keinon tarkastella ratkaisemiimme haasteisiin eri näkökulmista. Teknisten määrittelyjen kirjoittaminen tai vaatimusten muotoileminen uudelleen tekoälyavusteisilla työkaluilla on erittäin hyödyllistä. Vaatimusten tarkastelu eri näkökulmista voi auttaa meitä tekemään parempaa yhteistyötä ja keskustelemaan niiden merkityksestä loppukäyttäjiemme kanssa.

Lyhyellä aikavälillä GitHub Copilot voi auttaa meitä oppimaan ja säilyttämään keskittymisen työskennellessämme integroidussa kehitysympäristössä (IDE). Mahdollisuus pysyä luovassa työnkulussa ja välttää turhauttavat tehtävät parantaa kehitystiimiemme työpäiviä. Pitkällä aikavälillä tekoälyavusteisten työkalujen yhdistelmä voi auttaa lähes jokaisessa suunnittelu-, määrittely-, kehitys- ja toimitusprosessin vaiheessa. 

Tässä blogikirjoituksessa emme ole vielä edes käsitelleet ohjelmistojen operointia tuotantoympäristöissä – alueella, jolla nähdään lopulta suurimmat muutokset. Tuotantoklustereista saamamme telemetriadata on ihmisille vaikeasti luettavaa ja analysoitavaa, mutta se voidaan muuntaa oivaltaviksi muutoksiksi käyttöaikaympäristömme konfiguraatioon. Ihmiset voivat hyödyntää näitä työkaluja uusilla ja tehokkailla tavoilla.

  • DevOps
  • GitHub

Subscribe to our newsletter