Software developers tend to prefer using CLI tools.[citation needed] Among other reasons, we like how their textual interface is easy to automate and compose.

But, as with any preference, we want to remain focused on the reason for the preference, instead of letting it lapse into cargo culting. In other words, we avoid a “GUIs are bad” mentality, and maintain a “pick the right tool for the job” mentality instead.

So in this post, I want to share some recommendations on GUI tools that I’ve found to be a significant force-multiplier, when compared with their CLI counterparts.

This list only includes tools that I’ve personally used and appreciated on a regular basis.

Also, I’ve omitted any text editors, IDEs, and Web browsers on the assumption that most developers already have preferences in those arenas.

TablePlus

TablePlus is a cross-platform GUI client for relational databases.

I primarily use TablePlus to connect to Postgresql databases, inspect and edit data, compose and run SQL queries, run imports/exports, etc.

The beauty of TablePlus is the editing experience is rather like Excel (click the box and type), but it accumulates all your edits in a single transaction rather than applying them immediately. You can review the SQL statements in the transaction, giving you transparency as to what exactly will happen.

GitUp

GitUp is an OSX GUI for Git.

Unlike most Git GUIs, it has an internal Git implementation — it doesn’t actually use the git CLI tool under the hood. This makes it much, much faster than any alternatives I’ve found. However, it also means the merging algorithms are slightly different.

I use GitUp for visualizing my Git repository, rebasing branches, cherry-picking commits, etc. I don’t use it for making new commits — I use my text editor’s Git integration for that.

Monodraw

Monodraw is an OSX GUI for making ASCII diagrams.

I use Monodraw to generate diagrams that can be embedded directly into code comments. Docstrings with diagrams can be more readable.

There are free ASCII art tools like ASCIIFlow Infinity and artist-mode, but Monodraw is in a different league. It’s like trying to compare Sketch with Microsoft Paint — they have totally different levels of ergonomics.

Lens

Lens is a feature-rich GUI Kubernetes client.

It’s effectively replaced kubectl for me — with the notable exception of kubectl apply and kubectl port-forward, neither of which are available in Lens yet. I’ve heard good things about Kube Forwarder for the latter, but I haven’t used it personally.

Update 2022-11-28 — Lens has begun requiring user logins. However, the Lens core is still open, and there are OpenLens builds that don’t require login, which I recommend using instead.

Fiddler

It’s been years since I’ve used Fiddler, but it used to be an absolute core tool in my toolbox. It’s an awesome HTTP reverse proxy — able to intercept, log, modify, and simulate HTTP traffic. Kinda like Web browsers’ “Network” devtools, but for your whole system.

(Looks like it’s gotten a facelift since then, and cross-platform compatibility — it used to be Windows only. I haven’t used this new Fiddler Everywhere product; the version I used is now called Fiddler Classic.)