Elän ja hengitän ongelmanratkaisua. Tekniikan keinojen käyttäminen asiakkaan ongelmien ratkaisemiseen on erittäin mukavaa puuhaa ja leijonanosa työnkuvaani. Työhöni kuitenkin kuuluu myös paljon ”tylsää” manuaalista hommaa, kuten koodin kirjoittamista. En jaksaisi naputella niin paljon koodia kuin työni vaatii. Onneksi sain pari viikkoa sitten käyttööni uudenkarhean GitHub Copilot -parikoodarin, joka tekee työni puolestani.
Mikä on Copilot?
Copilot on GitHubin kehittämä “tekoälyparikoodari” (engl. AI pair programmer), tai niin GitHub sitä markkinoi. Copilot siis auttaa ohjelmointityössä kirjoittamalla koodin puolestani.
Copilot on Visual Studio Code -plugari, joka on pellin alla oleva neuroverkko, johon on syötetty miljardeja rivejä koodia. Copilotin neuroverkko on siis koulutettu luomaan täysin uutta koodia. Käytännössä Copilot täydentää automaattisesti koodiani jopa pelottavan älykkäästi.
Copilotin “parikoodaus” tapahtuu automaattisilla koodiehdotuksilla editorini kursorin kohdalle. Ehdotuksen pystyn täydentämään olemassa olevaan koodiini tab-nappulaa painamalla. Vaihtoehtoisesti voin myös selata muita Copilotin keksimiä ehdotuksia koodini jatkeeksi.
Copilot osaa kirjoittaa joko rivini loppuun, ehdottaa kokonaista funktiomäärittelyä tai täydentää (englanninkielisen) kommenttini. Copilot “ymmärtää tusinoittain eri kieliä”, mutta eritoten hyvin se osaa Python-, JavaScript-, TypeScript-, Ruby- ja Go-kieliä.
Tässä ruudunkaapauksessa kirjoittelin käsin Employee-interfacen ja kommentin, joka kuvailee funktion. Näiden vinkkien perusteella Copilot osasi ehdottaa funktiolle määrittelyrivin ja toteutuksen. Copilotin koodiehdotukset osuivat nappiin, ja se vähensi tässä erittäin lavastetussa esimerkissä käsityötä huomattavasti. Hyvää duunia Copilot!
Copilotin vaikutus työntekoon
Olen käyttänyt Copilottia nyt parin viikon ajan enimmäkseen Java-, JavaScript-, Terraform- ja Elm-kielten kanssa. Copilot on onnistunut erittäin hyvin nopeuttamaan työskentelyäni tarjoamalla laadukkaita ja toimivia automaattitäydennyksiä. Copilot on parhaimmillaan triviaaleissa ja itseään toistavissa tilanteissa, kuten esimerkiksi testien kirjoittamisessa. Copilotin Terraform-osaaminen yllätti eniten – se on minua parempi Terraform-koodari. Arvelen sen johtuvan siitä, että Terraform on konffauskieli, joka jättää vähemmän tilaa luovuudelle.
Kannattaako sinun ottaa GitHub Copilot käyttöösi?
Copilot tarjoaa mainion työkalun nopeuttamaan koodarin rutiinityötä. Se on kuitenkin vielä kaukana täydellisestä ja välillä ehdotukset menevätkin kunnolla metsään. Uskallan kuitenkin väittää, että leijonanosan ajasta Copilot tarjoaa hyvin lähelle – ellei täsmälleen – sen mitä ajattelet. Usein tuntuu, että Copilot lukee ajatuksiani. Copilot on ehdottomasti paras tähän mennessä julkaistuista koodin täydentäjistä joka käyttää neuroverkkoa.
Copilotin käyttäjää saattaa kuitenkin pelottaa lisensointi- ja tietoturvaongelmat. GitHub sanoo, että kaikki Copilotin koulutukseen käytetty koodi on tarpeeksi avointa lisenssiä, jotta käyttäjä voi huoletta hyödyntää Copilotin kirjoittamaa koodia miten tahansa. Copilot on kuitenkin generoinut koodia, joka on suljettua lisenssiä. GitHub myös lupaa sensuroivansa Copilotin koulutusmateriasta mm. API-avaimet. Sinä saat itse päättää luotatko GitHubin sanaan.
Kaiken kaikkiaan GitHub Copilot on erittäin toimiva työkalu ohjelmointityöhön ja suosittelen lämpimästi kokeilemaan sitä. Copilot ja sen kaltaiset työkalut tulevat olemaan alamme tulevaisuus ja vaikuttamaan suuresti siihen, mitä ohjelmointityö tulevaisuudessa tarkoittaa. Ehkä emme kirjoita tulevaisuudessa lainkaan koodia itse, kun robotit korvaavat sen. Itse uskon, että tämänkaltaiset työkalut muuttavat ohjelmoinnin määritelmää enemmän korkean tason suunnittelu- ja ongelmanratkaisutyöksi.
Odotan innolla skenen uusia tuulia.