Thoughts
Syntax eller resultat – vem bygger vi för?
Jag gillar att ta långa löpturer, men helst när det inte ösregnar eller är snöstorm! När jag då en söndagsmorgon vaknar och ska ta reda på om det är löpvänligt väder ute så går jag inte upp ur sängen, öppnar upp gardinerna och tittar ut genom fönstret. Vad gör jag i stället? Jo, jag öppnar första bästa väderapp på mobilen och ser direkt att det är 15°, soligt och vindstilla. Jag ser också prognosen för de kommande tio dagarna, allt baserat på min exakta plats. På mindre än tio sekunder fick jag precis den informationen jag var ute efter och mer därtill, utan att behöva resa på mig.
Att använda en app
Väl ute på löpturen tänker jag som utvecklare på hur väderappen jag just använde är byggd. Vilket ramverk har använts? Swift eller React Native? Hur kan den hämta väderdata så snabbt? Varför är appen 200 MB stor? Många frågor dyker upp. Tänker alla så? Nja, en användare som inte är intresserad bryr sig nog inte om alla de tekniska detaljerna bakom appen. De bryr sig om att den är snabb, intuitiv och att den löser deras problem.
Att utveckla en app
Om jag ska utveckla en app då, ska jag tänka mer som en utvecklare eller som en användare? Svaret är såklart båda! En bra utvecklare måste förstå både tekniken och användarens behov. Men var går gränsen och hur ska man veta vilka tekniska detaljer som är värda att lägga tid på? Det kan vara knepigt att avgöra, och som utvecklare i många år har mycket av min tid gått åt till att fundera på och diskutera tekniska detaljer. Vissa som sällan påverkar användare och andra som ofta gör det.
Detaljer som sällan påverkar användare:
-
Ska vi använda React eller Angular?
-
Hur ska koden struktureras och formateras?
-
Vilken namnstandard ska branches ha?
-
Ska vi använda "npm" eller "yarn" som pakethanterare?
Detaljer som ofta påverkar användare:
-
Säkerhet – sessionshantering, validering av data och hastighetsbegränsning som minskar risken för intrång och dataläckor.
-
Tillgänglighet – semantik, fungerande tangentbordsnavigering och tydliga etiketter för skärmläsare.
-
Prestanda – komprimerade bilder, uppdelning av kod och cachning som gör att appen laddar snabbt även på svag uppkoppling.
-
Stabilitet – felhantering, tester och loggning som minskar risken för buggar.
Vissa tekniska detaljer resulterar alltså i verklig användarnytta, medan andra mest är olika sätt att nå ungefär samma resultat. De kan såklart också vara intressanta att diskutera, och ibland vara viktiga för att utvecklare ska kunna jobba effektivt beroende på erfarenhet — men vilken roll spelar de för resultatet egentligen?
Från teknikfokus till användarnytta med AI
Hur kan utvecklare frigöra mer tid och energi åt användares behov? Det finns olika sätt, men för mig har AI-verktyg varit en stor möjliggörare. När AI snabbt kan generera kod, optimera arkitektur och fixa buggar, så kan jag fokusera mer på att definiera vad jag vill uppnå. Jag kan lägga mer tid på att förstå problem, formulera krav och beskriva önskat beteende — både för kund, användare och för AI. Det är kraftfullt!
Missförstå mig rätt, de flesta tekniska detaljer påverkar såklart utvecklingsprocessen i någon utsträckning — även ramverk och namnstandarder. Lösningar behöver vara förvaltningsbara både av människor och AI, för tillfället. Men alla detaljer kanske inte kräver att en människa tar ett beslut kring dem. Speciellt inte de som oftast bara handlar om smak och tycke.
AI kan dock göra fel och ta dåliga beslut, likväl som mänskliga utvecklare. Ibland producerar AI rent skräp om den inte får rätt instruktioner. Däremot kan det gå snabbare att iterera och refaktorera med AI-verktyg. Det är fortfarande viktigt att säkerställa att det som produceras är av kvalitet och faktiskt löser rätt problem på rätt sätt. Men jag anser att AI-verktygen kan hjälpa utvecklare att lyfta blicken från tekniken och möta kunden mer.
Ett serviceyrke
Jag ser utvecklarrollen som ett serviceyrke. Jag måste inte jobba med en viss teknologi eller skriva kod på ett specifikt sätt för att bygga lösningar. Mitt jobb är att skapa nytta för användare och kunder på ett hållbart sätt. Så länge verktygen jag använder hjälper mig att göra det jobbet bra är det gott nog för mig — oavsett om det görs med hjälp av AI eller manuellt skriven kod. Det viktiga är inte alltid syntaxen, utan resultatet!
