Tabs or spaces?
Rätt svar är: Vem bryr sig?! Automatisera bort diskussionen istället!

Igår var jag på Cloud Native Göteborgs 29:e (!) meetup där bl.a. Mikael Vesavuori pratade om hur teknisk skuld kan hanteras. Gott så, men något som roade mig (och honom) var att punkten som gav mest engagerad diskussion var användandet av en linter (ESLint). Något som i min värld är en detalj, lite av en avslutad diskussion (precis som testning, CI/CD och liknande är, så här fick jag lite av en inblick i en annan värld).
Det en linter gör är att se till att koden följer den standard som bestämts kort och gott. Koden blir enhetlig och konsekvent. Är det tabs, eller är det spaces som gäller? Vem bryr sig, vår editor löser det åt oss eftersom det finns en linter (ev. med en prettier ihopkopplad, detaljer, detaljer).
I min erfarenhet så kör alla lite sin egen kodstil (inkonsekvent med sig själv t.om.) om man inte har någon linter - medvetet eller omedvetet. Vilket leder till en diskussion vid varje code review (så länge någon orkar) eller helt enkelt en rätt spretig stil i kodbasen. Det intressantaste är att i de fall det har använts linters där jag varit, har det inte varit någon diskussion alls i princip. För de flesta så är stil-valen en rätt ointressant fråga och själva möjligheten till en åsikt är vad som skapar en åsikt (som vi då annars inte haft och glatt kodat vidare i livet).
Absolut vi har alla mött stil-fundamentalister som har väldigt starka åsikter - men då om någonsin är det ju viktigt att få hela teamet på ett gemensamt spår. (Eller om vi har tur så har vi två fundamentalister, som ägnar dagarna åt att refaktorera om varandras commits fram och tillbaka…) En diskussion som kanske slutar i någon form av dokument för att beskriva vad teamet enats om. Tänk om ett sådant dokument skulle gå att spara i json-format och leda till att våra verktyg hjälper till att efterfölja dem så vi slipper göra det själva varje gång vi petar ihop lite kod 🤔…..
Vill påstå att för att kunna ha en enhetlig standard så måste diskussionen upp på bordet. Och för att slippa lägga tid och energi i onödan så automatiserar vi det. Vi använder verktygen som hjälp och struktur; vårt IDE automatiserar det åt oss så vi slipper.
Ok, absolut, emellanåt har det blivit diskussion om enskilda designval och regler - vilket ju är bra (alla regler är inte för alla team kan vi väl enas om) och när teamet enats så är det ju inte värre än att ändra regeln i konfig-filen, och slippa tänka på det mer (pro tip: den som force-pushar filen sist får bestämma!).
Ordet på gatan är att det numera t.om finns språk som har formatters inbyggt, vilket gör att vi slipper hela diskussionen om linters från första början. Framtiden är här, och den är energikonserverande!