Den hårdest arbejdende tast på mit tastatur er pipe-tegnet, |, den lodrette streg, som de fleste aldrig rører. Et lille skilletegn, der i virkeligheden binder ting sammen. Og det siger næsten alt om, hvordan jeg tænker om arbejde og processer.
Hvad et rør gør
På en kommandolinje betyder | én ting: Tag det, der kom ud af det forrige skridt, og send det videre ind i det næste. Hele sidste uges arbejde her på bloggen gik gennem den slags kæder. Da jeg udgav en artikel, lød opskriften dybest set sådan: Åbn filen, fjern det overflødige, oversæt de interne links til rigtige adresser, send teksten til serveren, hæft et billede på. Fem skridt, fire rør, ét resultat.
Min nye RSS-læser er det samme. feeds sync henter alle kilder parallelt, sender dem gennem en parser, der gør rå XML til pæne tabeller, og gemmer kun det nye. Et rør fra rod til orden.
En proces er en rørledning
Her er den egentlige pointe, og den handler ikke om kommandolinjer. En god proces er en kæde af små skridt. Hvert skridt gør én ting og rækker et rent, ordentligt resultat videre til det næste. Røret er sømmen mellem dem.
Det lyder banalt, men det er den modsatte måde af, hvordan de fleste systemer bygges. Det normale er den store, lukkede klump, der tager noget ind i den ene ende og spytter noget ud i den anden, og hvor ingen helt ved, hvad der sker indeni. Tre ting vinder du ved at tænke i rør i stedet.
Du kan læse den
En rørledning læses fra venstre mod højre som en sætning. open ordrer.csv | where beløb > 50000 | godkend-manuelt kan læses af en forretningsperson, ikke kun en udvikler. Det betyder, at reglerne kan ejes i fællesskab af it og forretning, og det løser et af de største problemer i AI-projekter: at ingen i forretningen kan se, hvad systemet egentlig beslutter.
Du kan se ind i den
Hvert rør er et vindue. Du kan klippe kæden over ved et hvilket som helst led og kigge på præcis det, der løber igennem. En lukket klump fortæller dig, at den fejlede. En rørledning viser dig hvor. Den dag noget knækker, er det forskellen mellem en time og en uge.
Du kan skifte ét led
Hvert skridt kan udskiftes uden at røre resten. Skift kilden, skift lageret, skift modellen, og resten af røret er ligeglad. Du ejer røret og lejer de enkelte led. Det er det samme princip, jeg har skrevet om hele ugen, bare set fra værktøjssiden.
Hvor AI passer ind
Og her bliver det relevant for AI. En sprogmodel er ét led i røret. Aldrig hele røret. Du validerer det, der går ind, før modellen rører det, og du validerer det, der kommer ud, før det går videre. Modellen sidder i et bur af deterministiske skridt, og det er forudsætningen for, at du kan stole på resultatet. Langt størstedelen af et velfungerende AI-system er de kedelige led, der står omkring det ene, der er smart.
Det er derfor, jeg sjældent starter et AI-projekt med modellen. Jeg starter med røret: Hvilke skridt består processen af, hvilke af dem er rene regler, og hvor er det ene sted, en model faktisk tilfører noget? Som regel er det ene sted meget lille, og alt det andet er almindelig, reviderbar logik.
Det er en tankegang, ikke et trick
Når man begynder at tænke i rør, holder man op med at bygge monolitter. Man bygger processer, man kan se igennem, række videre til en kollega og reparere ét enkelt sted, når noget går galt. Det er ikke kun et programmeringstrick, men en måde at designe arbejde på, uanset om der er kode involveret.
Pipe-tegnet gør ikke noget i sig selv. Det forbinder bare. Og det meste af godt arbejde er netop dét: små, ærlige skridt, sat ordentligt sammen.
Se også Jeg byggede min egen RSS-læser og De deler AI op i et A-hold og et B-hold