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 Vim

Atom

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

Chocolatey

For the sake of completeness, here's a package manager for Windows. I've never used it, however.

Oh My Zsh

Replace the default shell with Zsh, extended with many useful plugins. Highly customizable and features some pretty nifty themes as well.

Oh My Zsh is installable on Windows, but it requires some extra details.

Git

Git is a version control system which basically lets you save snapshots of your code.

The real beauty of Git is that it allows you to fearlessly experiment with new ideas. It might take a while to learn, but it will only be more prevalent later on in school & work!