I took the opposite extreme approach (and I think this is fairly common):

Launch emacs once ever and use emacsclient for the typical short-duration invoke/shutdown use cases.

Since I moved to spacemacs, I've been doing this.

However, I am bummed by emacsclient's inability to open multiple files from the command line.

And apparently the total lack of a Tab-like experience on Emacs in general. I used to use "vim -p" SO MUCH.

Seems like that only really works for GUI emacs. I use command line. I tried enabling it and it doesn't seem to, y'know, work.

I've also tried evil-tabs, which doesn't work with spacemacs, at all. And eyebrowse doesn't actually use tabs (also it doesn't maintain working directory state when opening a new workspace, fun!)

I dunno, emacs is very much, "Here's a half-implemented solution that pays zero attention to ergonomics. Just... y'know, fix the rest of it so it doesn't totally suck."

And I just don't have the experience to do that yet. Which is why I'm using Spacemacs. Which more or less actually tries to do the ergonomics correctly.

edit: I'm also hoping Cunningham's Law works in my favor here.

In the spirit of Cunningham's Law, you can open multiple files using emacsclient. Just list them after emacsclient (e.g. 'emacsclient file1.txt file2.txt'). This will open each file in its own buffer (roughly the equivalent to tabs).

Since I'm not very familiar with vim tabs, I'm curious what you get using using vim tabs that you don't get out of emacs buffers?

The buffer list is shared across the entire emacs daemon. So if I have many files already open in different client sessions and start running buffer next commands, I'm cycling through a very long list.

Because you never ever start vim in a daemon mode, opening with -p creates a local list of files that you can cycle amongst. Additionally, the top line tells you which file you have open and which files are next and previous in the list of files you cycle through.

I've always just found it rather nice since I tend to jump around between the same handful of files while I'm working and hitting gt two or three times is often faster and more mindless than remembering the keystrokes to invoke helm-projectile-find-file and also the name of the file I want to switch to.

That makes sense. I actually never use daemon mode because I don't want to share buffers. If want a faster start up time but don't want to share buffers you may want to look at use-package[1] which will lazy load plugins. Also, if you want a easy way to cycle through buffers that also works in the terminal I recommend iflipb[2]. When you start cycling, it shows a list of buffers in the mini-buffer. Both of those are available as packages in Melpa.

[1] - https://github.com/jwiegley/use-package [2] - https://github.com/jrosdahl/iflipb