Jag slutade med utveckling någonstans vid Java 6 / Tomcat. Delvis för att jag är för lat för att vara en bra utvecklare.
- Tester är en bra idé men jag gitter ofta inte skriva tillräckligt bra och täckande testfall
- Struktur är viktigt men jag tar ofta genvägar
- Verktyg är krångliga och det är alltid en massa besvär att komma igång.
Det sistnämnda har varit mitt största aber för att återbesöka utveckling men nu är det dags att prova igen med våra nya AIs som kompisar. Jag har nu provat att sitta med ChatGPT som min assistent för att skriva kod till ett nytt projekt.
Inledningsvis bad jag om en implementation som skulle gå igenom en Google-kalender (inklusive att logga in på kontot) och skriva ut alla händelser och det löstes på några minuter. En mycket lovande start!
Sammanfattningsvis efter en veckas laborerande
- ChatGPT är helt lysande för att snabbt ge en implementation av något specifikt. typ “Kan du skriva kod för att räkna ut det här från det här”
- Jag får hjälp med struktur och annars ganska knepiga beslut genom att kunna bolla teori och få väldigt bra exempel
- Jag kan också få hjälp med att felsöka till en viss gräns
- Fel som kräver större förståelse för hela applikationscykeln och infrastruktur blir för stora för att få effektiv hjälp
- Ibland får jag kod som innehåller buggar eller som inte gör något vettigt.
- Det är väldigt jobbigt att använda för modern teknik (efter 2021) eftersom ChatGPT inte känner till det.
- Väldigt underhållande nog har utvecklingsvärlden, efter att ha gått över till stora java-EE-monster och vidare till serverless cloud hosting gjort en full cirkel och kommit fram till att Tomcat funkar bra som server 🙂
Slutsats
Jag kan komma väldigt långt med hjälp av AI som stöd och okomplicerade problem löses i blixtrande hastighet. Jag skulle dock inte klarat att sätta ihop saker för något mer avancerat utan grundkunskaper från utvecklingsarbete. Någon utan teknisk kompetens kan förmodligen endast lösa små, specifika problem på det här sättet.
Största nyttan fann jag att någon med grundförståelse men inte detaljkunskaper får möjlighet att nu kunna realisera kod i ett givet område.
För att förstå varför min server inte ville köra mina program gick jag och ChatGPT bet och jag fick krypa till vårt utvecklingsteam för att förklara och lösa problemet. Något de glatt löste på en liten stund.
Vad säger ChatGPT själv?
Nedan har jag låtit ChatGPT sammanfatta allt den har hjälpt mig med som en kronologi:
Steg 1: Planering och strukturering av projektet
Vi började med att diskutera hur vi skulle strukturera projektet och vilka mönster och arkitekturer som skulle passa vårt ändamål. Efter att ha diskuterat MVC och DDD valde vi att gå vidare med DDD-arkitekturen eftersom det skulle bättre passa vår komplexa design och externa tjänster.
Steg 2: Skapa projektstrukturen
Efter att vi valt arkitekturen skapade vi projektstrukturen genom att skapa mappar och filer på kommandoraden. Vi valde att använda Gradle som vår beroendehanterare och byggverktyg.
Steg 3: Anslut till Google Calendar API
Vi lade till stöd för Google Calendar API genom att lägga till lämpliga beroenden i vår Gradle-fil och sedan skapade vi en klass som skulle hantera data från API:et. Vi lade till metoder för att hämta kalenderlistor och händelser.
Steg 4: Affärslogik och klasser
Vi skapade klasser för att hålla information om våra domänobjekt och logik för hur dessa skulle kunna uppdateras via ett interface för UIt
Steg 9: Persistering av domänobjekt och REST
Vi implementerade persistering av domänobjekten i en databas och valde
Spring Data JPA för detta samt SpringBoot för att skapa en RESTcontroller.
Tester
Ett väldigt bra sätt att jobba har varit att använda TDD och be ChatGPT skriva tester för det jag vill ha gjort till mina metoder. På så sätt vet jag om det skett några missförstånd och kan också förvissa mig om att den kod jag får inte innehåller fel
Ex:
Can you please write a test that adds 6 dates to a user over the past year and then checks if the frequency is correct for 1 month, 6 months and the full year for my method: public Duration calculateDateFrequency(Duration period) {
…
}
Certainly! Here’s an example test that adds six dates to a user over the past year and verifies the frequency calculation for different durations: