De flesta organisationer vi pratar med överväger att införa AI-assisterade kodningsverktyg, och utvecklare har redan länge diskuterat ämnet flitigt vid kaffebordet (vissa använder kanske till och med en personlig licens i sitt arbete). Men det finns en oro för läckor av immateriella rättigheter – särskilt om organisationer inte använder företags- eller enterprise-licenser för AI-assisterade verktyg.
Tuomas Leppilampi
GitHub Copilot är ett AI-assisterat parprogrammeringsverktyg som har tränats på miljarder rader kod, främst från projekt med öppen källkod. Copilot omvandlar instruktioner på naturligt språk till kodförslag på dussintals språk, föreslår automatisk komplettering av kod och erbjuder andra funktioner, till exempel en chattbot (liknande ChatGPT).
Precis som med all teknik tvekar teamledare och Scrum Masters inför att introducera möjliga distraktioner mitt under en sprint eller release. Det finns sällan ett perfekt tillfälle att lägga till nya verktyg i utvecklingsprocessen, vilket ofta kräver en djupare titt på följande frågor:
Vilka förändringar innebär Copilot i vardagen för yrkesverksamma inom mjukvaruutveckling?
Vilka risker finns med att använda Copilot och hur kan de hanteras?
Vilka kort- och långsiktiga fördelar erbjuder den här nya tekniken?
Hur förändrar Copilot vardagen för yrkesverksamma inom mjukvaruutveckling?
Copilot är inte bara till för applikationsutvecklare. Alla som arbetar med ”kod” kan använda det, till exempel dataingenjörer eller infrastrukturadministratörer. Användningsområdena är många, och grupper av yrkesverksamma inom mjukvaruutveckling har bara börjat utforska de möjligheter som Copilot erbjuder. Det kan också hjälpa oss att förstå äldre kod eller språk som vi inte är bekanta med. Att översätta mellan programmeringsspråk är ett område där verktyget är särskilt kraftfullt.
Baserat på våra erfarenheter på Eficode och hos flera av våra kunder rekommenderar vi att du använder AI-assisterade verktyg för att förbättra dina befintliga arbetssätt. Copilot är inte särskilt bra på att tillhandahålla kompletta lösningar eller återskapa affärslogik från befintliga kodbaser. Chattboten som är integrerad i Copilots användargränssnitt ger däremot stöd när du utformar lösningen och förstår dess påverkan på slutanvändarna. Mjukvaruutvecklare blir inte arkitekter med de här nya verktygen, även om känslan av styrka kan vara stark när man använder AI-assisterade verktyg för första gången. Alla traditionella roller inom mjukvaruutveckling behövs, både nu och i framtiden.
Copilot är utmärkt på att skapa standardkod och påminna dig om komplex syntax. Bara det kan frigöra flera timmar i veckan för mer kreativt arbete. Dessutom är möjligheten att skapa ett skelett för dina tester helt central för att övervinna de utmanande stunderna när du ska skriva tester för din kod. I bästa fall börjar du med att utforma dina testscenarier och tillämpar den svårfångade men kraftfulla metoden testdriven utveckling (TDD).
I ett större perspektiv är förbättrad kvalitet ännu mer intressant än ökad hastighet, som ofta är den främsta tanken när man överväger AI-assisterade verktyg. Att ta fram tester som utvecklaren inte själv hade kommit på förbättrar produktkvaliteten direkt. Det ger också utvecklare nya perspektiv på produkten som utvecklas och på deras egna uppfattningar om vad kvalitet innebär och hur den säkerställs.
Minska riskerna med AI-assisterade verktyg
När du plötsligt kan slutföra dina kodfunktioner på rekordtid – och till och med skriva tester för dem samtidigt – kan känslan av att vara allsmäktig bli förblindande. Det gäller särskilt när allt verkar fungera perfekt i tryggheten av din egen del av ett repository och testerna fortsätter att passera.
En verklig risk är att du inte förstår vad du skapar. Du kan acceptera kodförslag och tester som implementerar något annat än vad din lösning behöver. Det hjälper inte att skapa något snabbt med tillräcklig testtäckning om koden gör något annat än förväntat. Ibland föreslår Copilot lösningar som helt enkelt är fel. Det är lätt att fastna i en loop där man försöker få ett förslag att fungera, trots att angreppssättet är felaktigt.
AI-assisterade lösningar bör införas på ett kontrollerat sätt. Riktlinjer och exempel som är relevanta för företaget eller organisationen är mycket värdefulla. En nyligen genomförd studie från GitHub visade att 81 % av utvecklarna anser att AI-verktyg kommer att hjälpa dem att samarbeta bättre.
När mindre erfarna utvecklare committar kod är det rimligt att en mentor granskar om rätt sak har implementerats, bekräftar att testningen är tillräcklig och säkerställer att utvecklaren är redo att förklara koden hen har skapat för andra vid behov. Alla ansvarar för koden de committar, även om den till största delen har skapats av en AI-assistent.
Några sätt att undvika risker:
Klistra in den skapade kodfunktionen i Copilots chattmodul och be den förklara den för dig på enkel svenska.
Be chattboten förklara koden som ett matrecept. Den sammanfattar ofta aktiviteter mycket effektivt.
Be chattboten föreslå tester för koden, inklusive gränsfall, negativa tester eller mocking.
Be om förslag på hur du kan förbättra kodens stil. Verktyget kommer sannolikt att skriva den förbättrade koden, som du kan jämföra och lära dig av.
Ta dig tid att fundera på riktigt bra namn för dina funktionsparametrar, eftersom Copilot då bättre kan förstå din avsikt.
Kontakta en verklig person för att gå igenom större delar av ditt arbete och hur du använde AI-assisterade verktyg för att skapa det innan du lämnar det vidare.
Generellt visar vår erfarenhet att erfarna tekniska ingenjörer kan börja använda Copilot utan någon större introduktion eller extern hjälp. Tiden det tar att börja använda verktyget tjänar man vanligtvis in redan under samma vecka.
För personer som precis har inlett sin tekniska karriär säkerställer arbete tillsammans med en mentor att användningen av Copilot inte blir en tävling mot deras tidigare jag, utan ett sätt att lära sig snabbt och känna sig tryggare med att göra misstag.
Kort sagt kan alla börja använda GitHub Copilot, så länge de är medvetna om det ansvar som väntar när den skapade funktionaliteten förs vidare i processen. Var beredd att gå igenom lösningen när du blir ombedd och se till att du kan förklara varje steg och varför du valde att implementera det på det sättet.
Vilka kort- och långsiktiga fördelar ger AI-assisterade verktyg?
De flesta vi pratar med siktar på ökad produktivitet och effektivitet – i grund och botten att skapa värde snabbare med hjälp av AI-assisterade verktyg. Forskning om värdekedjeanalyser visar att endast en liten del av tiden för att leverera mjukvara till slutanvändare läggs på kodning. Även om vi räknar med att 20 % av tiden under en release går till kodning, blir en halvering av den tiden inte särskilt betydelsefull i det stora hela.
Ett betydligt mer intressant område än produktivitet är Developer Experience (DX). Att trivas på jobbet och kunna lära sig samtidigt som man behåller fokus på programmet man utvecklar ökar utan tvekan möjligheten att behålla medarbetare.
Utvecklare i din organisation stannar sannolikt längre om du ger dem verktyg som låter dem fokusera på det kreativa och slippa det enformiga arbetet. De flesta utvecklare gillar att utforma lösningar på nya problem, och Copilot hjälper dem att få tid till just det.
Vi måste se helhetsbilden av mjukvarans livscykel för att verkligen få kort- och långsiktiga fördelar av GitHub Copilot, utöver förbättringar i utvecklarnas vardag. Vi bör särskilt driva vår önskelista för förbättringar inom DevOps framåt. Hur kan vi tillhandahålla testmiljöer snabbare? Kan vi undvika problem som uppstår när miljöer har olika konfigurationer? Vilka är flaskhalsarna för releasetakt och kvalitet? Hur säkerställer vi att resultaten vi skapar är värdefulla för våra kunder?
När det gäller samarbetet med produktteamen, kan vi säkerställa att vi har förstått ett krav rätt och omvandlat det till en motsvarande teknisk specifikation? Genom att kombinera AI-assisterade chattbotverktyg med kodassistenter kan vi se på de utmaningar vi löser ur olika perspektiv. Att skriva tekniska specifikationer eller omformulera krav med AI-assisterade verktyg är mycket användbart. Att se kraven ur olika vinklar kan hjälpa oss att samarbeta bättre och diskutera deras innebörd med våra slutanvändare.
På kort sikt kan GitHub Copilot hjälpa oss att lära oss samtidigt som vi behåller fokus i den integrerade utvecklingsmiljön (IDE). Att kunna behålla det kreativa flödet och undvika frustrerande uppgifter förbättrar vardagen för våra utvecklingsteam. På lång sikt kan en kombination av AI-assisterade verktyg hjälpa till i nästan varje steg av processen för design, specifikation, utveckling och leverans.
I det här blogginlägget har vi inte ens börjat tala om att drifta mjukvara i produktionsmiljöer – ett område som med tiden kommer att genomgå de största förändringarna. Telemetridata från produktionskluster, som är svår för människor att läsa och analysera, kan omvandlas till insiktsfulla konfigurationsändringar i vår runtime-miljö, där människor använder verktygen på nya och kraftfulla sätt.
- DevOps
- GitHub
Subscribe to our newsletter
Related blogs