10 år efter Joe Armstrongs oplæg ser vi stadig de samme udfordringer i softwareudvikling, men med nye teknologier på horisonten – især AI og LLM-kodegenerering. Hvordan kan vi håndtere de voksende problemer, der truer med at skabe et uoverskueligt system af middelmådige løsninger?
Udfordringer i softwareudvikling – en voksende entropi
I 2014 præsenterede Joe Armstrong, en af skaberne af Erlang-programmeringssproget, et oplæg kaldet "The Mess We’re In", hvor han beskrev udfordringerne i softwareudvikling, såsom kode duplikering og gentagelse af løsninger. Armstrong pegede på, hvordan systemerne i vores softwareverden, ligesom et fysisk system, er præget af voksende entropi – hvor vi ofte genbygger løsninger uden at reducere kompleksiteten.
10 år senere ser vi stadig de samme problemer: Manglende genanvendelse af kode og dobbeltarbejde, men også nye udfordringer relateret til den hastige udvikling af teknologi, især AI og kodegenerering. Hvor vi før talte om teknisk gæld, taler vi nu om AI-gæld – et voksende problem, der truer med at forværre de samme fejl, vi allerede kender.
AI-kodegenerering: Potentielle fordele og faldgruber
Der er mange, der ser AI-kodegenerering som den næste store udvikling, som vil gøre softwareudvikling hurtigere og mere effektivt. Modellen bag LLM (Large Language Models), som genererer kode baseret på store datamængder af eksisterende programmeringskoder, er blevet populær blandt både udviklere og beslutningstagere. Det virker som et ideelt værktøj, der kan hjælpe med at automatisere processer og spare tid.
Men der er en alvorlig risiko forbundet med dette. Da AI-kodegenerering baseres på eksisterende data, risikerer vi, at løsningerne bliver middelmådige. Når AI arbejder ud fra statistisk sandsynlige svar på en given opgave, kan vi ende med løsninger, der ikke er optimale, og som i værste fald skaber en såkaldt “singularitet”, hvor løsninger bliver forudsigelige og ikke udfordrer systemet til at forbedre sig.
Uansvarlig brug af AI: Scriptkiddies på speed
En bekymring, der bør tages alvorligt, er den potentielle ødelæggelse af kvaliteten i software, når udviklere bruger AI uden tilstrækkelig forståelse af konsekvenserne. Vi ser i dag en tendens, hvor udviklere hurtigt søger løsninger på nettet – det er ikke nødvendigvis et problem, hvis de fundne løsninger er korrekte og velunderbyggede. Men når AI-genererede løsninger bliver sat sammen uden at forstå deres konsekvenser, kan det føre til, at vi skaber fejlbehæftede løsninger – lidt ligesom "scriptkiddies på speed."
Dette problem forværres, når AI-motorer bygger på dårlige data, som er blevet forvansket af populisme eller misforståelser. Det betyder, at vi står overfor en situation, hvor fejl ikke kun bliver almindelige, men også forstærket, fordi det er svært at opdage dem, når de først er blevet genereret.
Det ansvar, der følger med teknologi
En vigtig pointe, som Joe Armstrong fremhævede i sit oprindelige oplæg, var behovet for at reducere kompleksitet og entropi i software. Det kræver, at vi stopper med at bygge løsninger på samme måde igen og igen. Det kræver, at vi tænker på softwareudvikling som en langsigtet investering, hvor ansvar og kvalitet spiller en vigtig rolle.
Når vi bruger AI-kodegenerering, er det vigtigt, at både udviklere og de, der bygger systemerne, forstår de etiske og tekniske konsekvenser af deres handlinger. AI kan generere løsninger, men ansvaret for at implementere dem korrekt ligger stadig hos den menneskelige udvikler.
Mod et ansvarligt brug af AI
For at undgå de faldgruber, der er nævnt, er der nogle konkrete skridt, vi kan tage for at sikre, at AI-kodegenerering ikke ender som en mulighed for hurtige, dårlige løsninger:
1. Sikre teknisk kompetence: Det er afgørende, at de, der bruger AI-værktøjer til kodegenerering, har den nødvendige tekniske forståelse for at validere outputtet korrekt. Det betyder, at softwareudviklere stadig skal have et solidt kendskab til deres eget domæne og kodepraksis.
2. Filtrering og ansvar: Vi skal sikre, at der er et ansvar for at filtrere og validere de input, vi bruger til at træne LLM’er. Uden ordentlig kontrol kan dårlige data føre til endnu dårligere output, og risikoen for fejl øges.
3. Investering i bæredygtige løsninger: Vi skal tænke på software som et langsigtet aktiv, ikke som noget, der hurtigt kan smides væk og erstattes. Det betyder, at vi bør investere i løsninger, der er grundigt gennemtænkte og optimerede – herunder AI-løsninger, der minimerer ressourceforbrug og maksimerer bæredygtighed.
En fremtid med mindre entropi
I de 10 år, der er gået siden Armstrongs oplæg, har vi ikke bevæget os meget tættere på hans vision om at rydde op i den tekniske gæld i software. I stedet har vi set, hvordan ny teknologi som AI skaber nye problemer, der potentielt kan forværre situationen.
Det er på tide, at vi ser på softwareudvikling som en disciplin, hvor ansvar og langsigtede løsninger er i fokus. Ved at forstå de etiske og praktiske konsekvenser af AI og kodegenerering kan vi begynde at skabe systemer, der er både effektive og bæredygtige. Dette kræver en balanceret tilgang, der ikke kun fokuserer på hastighed og lavere omkostninger, men også på langsigtet kvalitet og ansvar.