Software developers tend to prefer using CLI tools. 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 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 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 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
Monodraw is in a different league. It’s like trying to compare Sketch with
Microsoft Paint — they have totally different levels of ergonomics.
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.
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.)