So, it turns out tabs are actually kinda nice. I assumed that I would dislike tabs in Go as much as I dislike tabs in any other language. I was wrong. Until working in Go, I would have cited a number of reasons I don’t like tabs. they are too big, they are magic nothing that is different from the other magic nothing spots you have in your editor and they look different on different computers.

A little magic (setq tab-width 2) and (add-hook 'before-save-hook 'gofmt-before-save) and my code looks just like I like it. The best part is I don’t have to think about it again. I am using tabs, but I don’t care. Everything just looks like I want it to. Someone else seeing my code may prefer 8 space indent and they can have it. gofmt prevents debates. Instead we can debate architecture and interfaces.

Go’s overall “consistency over perfection” attitude towards style lets me forget about style almost entirely. I think most of what people want out of style is consistency and coming to consensus on a team is much harder than having it laid down by the language.

I think seeing Go’s treatment of style has helped me better understand what I want from code style and tempered my willingness to debate it. This is what I like about tabs in Go, I don’t have to think about them at all.