·3 min läsning

Hackday: 4 000 rader plan, noll rader kod

På jobbet kör vi två hackdays per år. En inför sommaren, en inför julen. En dag där vi får bygga vad vi vill, testa nya tekniker, eller fixa den där grejen som aldrig får prioritet i sprintplaneringen.

Tankarna inför en hackday har alltid sett ungefär likadana ut. Man har en idé, kanske lite väl ambitiös, och frågar sig: Hinner jag verkligen koda klart det här på en dag? Hinner jag researcha dokumentationen tillräckligt? Blir det bara ett halvfärdigt proof of concept?

Hur det brukade vara

Jag minns en tidigare hackday där jag ville migrera en av våra frontend-tjänster från vanilla Redux till Redux Toolkit. Jag valde medvetet en av de mindre tjänsterna, mindre kod att ändra. Ändå gick halva dagen åt till att läsa dokumentation.

Men vår senaste hackday, den innan julledigheten, kändes annorlunda.

Hackdayen

I princip alla utvecklare i teamet hade samma approach, vibe-coding med AI. Ingen körde det som ett experiment. Det var så jobbet gjordes.

Jag hade frågat Claude om inspiration i förväg. Vi har ett CLI vi använder dagligen för att snurra igång vår lokala utvecklingsmiljö, Docker-containers för frontend, backend och alla tjänster i monorepot. Det hade tjänat oss väl men samlat på sig en del legacy: gamla beroenden, föråldrad TypeScript-konfiguration, kod jag ärligt talat inte hade så bra koll på. Claudes förslag var att skriva om alltihop med Ink, ett bibliotek för att bygga CLI-gränssnitt med React. Rendera komponenter direkt i terminalen.

Ett helt CLI på en dag, i en kodbas jag inte kände, med Docker-hantering som inte direkt är min starkaste sida. Orimligt, men kul.

Istället för att hoppa in huvudstupa bad jag Claude skapa en migreringsguide några dagar innan. Inte vag och övergripande utan konkret och fasindelad: tydliga faser med specifika mål, en markerad brytpunkt för MVP, vilka features som måste fungera för att det skulle vara värt att mergea och vilka som bara var nice-to-have. Det blev en markdown-fil på cirka 4 000 rader. Jag committade den till en branch och lät den vänta.

På hackdayen checkade jag ut branchen och bad Claude jobba utifrån planen. Fas efter fas betade vi av den, med mindre justeringar längs vägen. Ibland bad jag Claude ta ett steg tillbaka och granska det vi redan byggt, leta efter saker att refaktorera eller förenkla. I slutet av dagen fanns ett nytt CLI byggt med Ink. Modernare arkitektur, några nya features.

Efterspelet

Jag hade inte skrivit en enda rad kod. Jag hade guidat Claude att följa samma patterns och struktur som resten av repot, agerat kravställare och testare. Men det är inte samma sak som att förstå varje beslut i koden.

Veckorna efter dök det upp småsaker som behövde justeras, och jag hade räknat med att få sätta mig in i kod jag inte skrivit varje gång. Det behövde jag inte. Jag beskrev vad som var fel och lät Claude fixa det, precis som under hackdayen.

Jag har fortfarande inte läst hela CLI:et. Det har inte behövts.