I don’t think the perfect IDE exists. But all the right ingredients are out there. Allan MacGregor wrote a post about VIM as the “perfect IDE” that started an interesting discussion on dev.to. But I’m skeptical about the pages-long config file, the dozens of independent plugins, and whether the result is really an “IDE”. This reminded me of an experience I had with seasoned developers who genuinely had no idea how much time a real IDE can save. So here’s my response, in pictorial form, in several parts. (Because I have no idea how I’d have the time to write such a thoughtful and organized post like Allan did.)
A real IDE works for you – you don’t work for it.
Here’s Visual Studio Code doing the right thing:
This is freakin’ amazing. All I did was open a Docker config file for editing. In other words, I did no extra work. And VS Code unobtrusively suggested an extension (also by the VS Code team) to help me do my job. The IntelliJ family of IDE’s does this as well, AFAIK.
Not all IDE’s are GUI apps
The Spacemacs message isn’t as clear and configurable as VSC, but the install process is easier: just hit the ‘y’ key, compared to two or three mouse clicks. Note that out-of-the box I’m already getting good syntax highlighting from Visual Studio Code. But with this extension installed, holy cow:
When I hover the mouse over a keyword, I get a super-readable summary of the syntax. And this isn’t even a “statically typed programming language” in this file – it’s just a particular config format. This saves me time and irritation having to “context switch” to looking up documentation somewhere. And better yet:
Spacemacs doing the equivalent:
Great error checking, and reporting. Now just imagine how helpful this is with the “real” programming in a project.
Next episode … another, pushing back on the idea that IDE’s are bloatware, packed with unnecessary features, and besides, my favorite text editor XYZ is a great IDE too.
I believe it’s fine for there to be great text editors yet also great IDE’s. They each have their place. In my opinion, it’s the engineer’s role to chose the right tool for the job.