Development Setup
This is a short list of tools that I think are worth the trouble to set up. If you enjoy reading about configurations, I've written some more detailed explanations of what (not) to do.
Before downloading anything, I'd recommend getting a package manager for your operating system first. If you're on Linux, then you should already have one.
Neovim
Neovim is the future of Vim. It comes with some sane defaults and extends default Vim functionality to make it better. Here's why you should use Vim at all.
Fun fact - Vim is a clone of Vi, which was written by Berkeley alum and programming superstar Bill Joy.
Pros: Fast and addictive. Feature rich, but you only need to learn a minimal amount to become productive. You'll also look cool doing it. 🙃
Cons: Steep learning curve. Customization is required to unlock many nice features that are default in other editors.
Neovim VimAtom
With a built in package manager, Atom is incredibly easy to customize (like the extension manager for your favorite web browser, but arguably better). On top of that, sensible default packages are installed as well!
Pros: Easy to use and customize.
Cons: In the editor world, Atom is relatively new. There are still some bugs that need to be sorted out, and many packages could use significant improvement.
iTerm2
As far as I'm concerned, this is basically a better version of terminal that ships with macOS.
Pros: Just look at this beautiful list of features.
Cons: macOS only.
Babun
Babun is probably the best Windows shell I've used. It comes built in with oh my zsh (z shell) which is usually a bit of a hassle to install on Windows.
Pros: Comes built in with a package manager which beats whatever mess Cygwin and GitBash have.
Cons: There are some potentially annoying defaults that you have to manually disable (for example, a self-check on startup). And... it still uses Mintty, which means no tabs, minimal window configuration, etc.
Homebrew
Package manager for macOS. In a nutshell, package managers make it easy for developers to install software and keep it up to date. Lots of command line applications are installable through Homebrew, and Homebrew Cask allows you to install macOS applications as well!
Cask