Domänkunskap och AI
AI kan generera kod snabbare än du någonsin kan skriva den. Det gör inte din kodkunskap värdelös — det gör den mer värdefull.
Utökat resonemang: Det är inte kört på marcusmedina.pro
När du läst detta ska du kunna
- Förklara vad “domänkunskap” innebär i programmeringssammanhang
- Identifiera kod som AI genererat men som innehåller fel
- Sätta rätt förväntningar på vad AI-assisterad kodning kan och inte kan
Tre sorters fel som AI gör
AI-genererad kod har tre typiska källorna till problem — och ingen av dem är AI:ns fel.
1. Bristande domänkunskap
AI svarar på frågan du ställde — inte på frågan du borde ha ställt. Den känner inte ditt systems affärslogik, säkerhetsmodell eller varför just den regeln finns.
// Du: "Optimera den här användarfrågan"var users = db.Users .Where(u => u.IsActive) .ToList() // ← Laddar ALLA aktiva användare i minnet .Where(u => u.LastLogin > DateTime.Now.AddDays(-30));Koden kompilerar. Den ser rimlig ut. Men .ToList() exekverar frågan mot databasen direkt — allt som återstår är LINQ på en C#-lista i minnet. Har du 50 000 aktiva användare laddar du alla 50 000 och filtrerar sedan lokalt.
Rätt version:
// Hela filtret körs i databasen — ett anrop, bara relevanta radervar users = db.Users .Where(u => u.IsActive && u.LastLogin > DateTime.Now.AddDays(-30)) .ToList();Utan kännedom om hur LINQ deferred execution fungerar ser du inte felet — ens när du läser koden.
2. Systematisk okunskap
Det du inte vet kan du inte efterfråga. Om du ber AI:n om ett autentiseringssystem men inte känner till OWASP session management-regler, vet du inte vilka frågor du ska ställa — och AI:n svarar på de du ställde.
// AI genererade en "enkel inloggning" — ser rimlig utpublic bool Login(string username, string password){ var user = db.Users.FirstOrDefault(u => u.Username == username); return user?.Password == password; // ← Lösenord i klartext jämfört}Den systematiska okunskapen är inte att du gjorde fel fråga — det är att du inte visste att lösenord inte ska lagras i klartext.
3. Otydliga instruktioner
“Förbättra namngivningen” är en otydlig instruktion. AI:n vet inte vad som är “heligt” i din kodbas.
// Instruktion: "förbättra namngivningen"// Innan:public class UserManager { }public void ProcessUser(User u) { }
// Efter (AI döpte om allt):public class PersonHandler { }public void HandlePerson(Person p) { }
// Resultat: kompilerar inte — hela resten av kodbasen refererar till det gamla namnetVad du faktiskt lär dig
Att studera programmering idag handlar om att se felen som AI inte ser.
# Vad som saknas i ren vibe-codingdef vibe_code(prompt): result = ai.generate(prompt) # - Domänkunskap: matchar detta affärsreglerna? # - Systematisk kunskap: finns dolda prestanda/säkerhetsproblem? # - Tydliga instruktioner: vad är "heligt" i kodbasen? return resultAI ersätter inte en programmerare som förstår koden. Den ger dig en produktiv junior kollega som du måste granska.
Praktiskt — läs AI-kod kritiskt
Nästa gång du tar emot AI-genererad kod, fråga:
Checklista för AI-kod
☐ Kompilerar det?☐ Gör det vad jag bad om?☐ Gör det mer än vad jag bad om? (sidoeffekter)☐ Är det säkert? (SQL-injektion, autentisering, lösenord)☐ Presterar det rimligt? (onödiga anrop, saknade index, LINQ-fällor)☐ Passar det kodbasens konventioner och struktur?Tre nej på listan → kasta det och försök igen med bättre instruktioner.
TL;DR
- AI svarar på frågan du ställde — du ansvarar för att ställa rätt fråga
- Domänkunskap låter dig se felen i annars rimlig kod
- Behandla AI som en produktiv junior: granska alltid, lita aldrig blint
- Du blir inte ersatt av AI — du blir den som håller koll på felen AI-kod innehåller