I heard of zsh back around 2012, lots of colleagues who I respected very highly were using it. But I just never could get behind the idea of using someone else's defaults. Even when I switched to Emacs, I hand-picked every line in my configs from looking at a bunch of people's configs and with a lot of random googling to solve things. Even though it took like 2 weeks of constant tweaking to get just right, I haven't touched it much in like the past 3 years or so, and I've been super productive ever since. So meh, seems to have worked out for me. But YMMV. Also, I use eshell (with some tweaks) almost exclusively now, as opposed to a "real" terminal with bash or fish or zsh (etc.)
> Even when I switched to Emacs, I hand-picked every line in my configs from looking at a bunch of people's configs and with a lot of random googling to solve things. Even though it took like 2 weeks of constant tweaking to get just right, I haven't touched it much in like the past 3 years or so, and I've been super productive ever since.
This. The key to using Emacs well is to start with something fairly basic. Whenever you find some behavior that annoys you, take a few minutes to figure out how to fix it once and for all in your config. After a few years you will end up with a giant mess of a config that makes Emacs behave almost exactly the way you want, which you can copy over to any machine where you do serious work. You will also be able to get basic work done in a vanilla `/usr/bin/emacs`.
FWIW, after several years of zsh, I've been mostly happy with a stock fish in a terminal. It's way less broken by default than either zsh or (ugh) eshell.
Many years ago when I switched to zsh I went through the manual and made the decision on every single option. I also went and made a semi-complex prompt that worked well for me.
I've been using basically that config ever since.
When I first started using zsh I went down the road of writing custom completion functions, but pretty quickly discovered that they just didn't pay off in the long run and stopped doing it. My shell absolutely doesn't take 5s+ to open up either, it's pretty much instantaneous.
In bad news, it appears Ubuntu no longer ships the manpages for zsh and instead ships info pages. Barf.
I've tried it a few times given it weeks or month long trials, and never really found a strong enough benefit over bash, especially when I'm always going to find bash on servers I deal with.
I actually find it valuable to nuke my bashrc customisations every few years and reevaluate. Assumptions and practices entrenched in those customisations can be anti-patterns or counterproductive.
There's a lot of shortcomings in bash. I wrote my zshrc by hand, and I didn't like the fact that most people use oh-my-zsh. For me, writing my own zshrc from scratch taught me the differences between bash and zsh (I ended up writing my own .git and .hg parsers because running the commands is too slow).
Aren't you already doing that when you load up a vanilla zsh? Its just that that "somebody else" was the guy that wrote the tool. In either case, you still will want to tweak it to get exactly what you want.
However, in one of the cases, the thing you start out with is 0 features, and an extra week of work doing the same thing that thousands of people have done exactly the same before you. Only after that do you get to making it really "custom"