planen v1 aldri hadde

7. september 2026 meta metaroadmap

v1 av denne bloggen er ferdig og merget. Før jeg begynner på v2 ville jeg skrive ned veikartet som fikk meg hit, og det er der vitsen begynner: det fantes ikke noe.

Da jeg begynte var planen i hodet mitt omtrent "en blogg, skrevet i Go, som jeg hoster selv". Det var hele spesifikasjonen. Ingen liste over funksjoner, ingen rekkefølge, ingen anelse om hvor stort det ville bli. Jeg startet bare med en auth-tjeneste fordi innlogging føltes som den vanskelige delen, og tenkte at resten ville følge etter.

Resten fulgte etter, men ikke i noen rekkefølge et fornuftig menneske ville valgt. Her er omtrent hva som faktisk skjedde, rekonstruert fra git-loggen:

The front page of the blog as v1 ships, scenery and all

Først auth-tjenesten, med sin egen database, JWT-nøkler og roller. Så blogg-tjenesten med innlegg og markdown. Så kommentarer, fordi en blogg uten kommentarer føltes død. Så likes på kommentarer, så moderering fordi jeg nå hadde ting å moderere, så mediaopplasting gjennom MinIO, så adminpanelet for å holde styr på alt sammen. Så brukte jeg dager på redesignet, øya, fuglene, nattehimmelen, og skrev flere innlegg om piksler enn om kode. Så skjemalegging, slik at innlegg kunne publisere seg selv mens jeg sover. Og helt til slutt, i det jeg kalte v1.1, kom de voksne funksjonene: GDPR-datarettigheter, besøksanalyse, og en feillogg jeg faktisk kan lese.

Legg merke til hva som mangler fra den listen helt til slutten: alt det kjedelige og viktige. Backup finnes fortsatt ikke. E-post finnes ikke, så passordtilbakestilling finnes heller ikke. Hvis jeg hadde skrevet et veikart på dag én, ville "backup" vært nær toppen og "animerte lundefugler" nær bunnen, og ærlig talt kunne lundefuglene tapt. Jeg er glad de ikke gjorde det, men det er flaks, ikke planlegging.

Stacken endte opp sånn her, som jeg faktisk er fornøyd med:

services:
  caddy:     # the front door, TLS, body limits
  frontend:  # SvelteKit
  auth:      # Go, own Postgres
  blog:      # Go, own Postgres
  minio:     # media storage

To små Go-tjenester med sine egne databaser som snakker sammen over et internt nettverk, en SvelteKit-frontend, og Caddy foran som bestemmer hvem som slipper inn. Hver eneste del er noe jeg kan lese fra topp til bunn. Det var den ene regelen jeg fulgte hele veien uten å planlegge det: ingen del jeg ikke forstår.

Det jeg ville fortalt meg selv for noen uker siden: skriv kartet først. Ikke en detaljert spesifikasjon, bare rekkefølgen på tingene, slik at de kjedelige, bærende funksjonene ikke hoper seg opp på slutten. Den lærdommen er grunnen til at v2 får et ekte veikart her på bloggen, skrevet før koden denne gangen. Vekst, kanskje.

0 kommentarer

Logg inn for å kommentere.

Logg inn

Ingen konto?