You get an endlessly customizable setup with a single interface. Build, write, read docs, test, lint, debug, troubleshoot, admin. Same interface. All keyboard driven, so I don't have to switch between keys and mouse.
It's extremely portable, works exactly the same on my machine as it does on any OS with bash and vim, it's easy to use on a remote machine.
It's easily scriptable as well which makes customization simple. It's way faster for me to write a quick script to do something I need then dig through an endless list of marginally verified plugins to do something.
I guess my question is what can you do with an IDE that can't be done at the CLI?
I've tried code, pycharm, eclipse and really never found a value add.
And all of that applies to other tasks beyond coding. Notes, email, chat, it's right there, hey what's the price of that stock my buddy was talking about? Yep, right there. Hey look also my music.
> Honest question: why do developers insist so much on using command line based tools? What's the advantage over using an IDE? (e.g. VS Code or PyCharm)
Unix is an IDE. CLI (and GUI) tools are the plugins.
Reasons vary by tool, but some include: Speed, composability (see the "Rule of Composition" from the Unix philosophy), and the ability to be run in a remote terminal
IDEs are often big, slow, costly, inconsistently featureful, subject to the vagaries of personal taste and fluctuating support, difficult or impossible to automate, and not always available (either not installed, not possible to install, or just expecting a graphical interface that is not local to the operator)
TUIs/CLI programs are (generally) small, composable, consistent, reliable, fast, well-supported, installed by default or easily obtained, predictable, have good keyboard shortcuts, and they work great remotely.
I used to prefer Vim but moved to using IDEs. In professional development, you want to use the best tools - a forklift vs. a shovel. I don’t think text editors are the best tool for that, but why do programmers insist on using worse tools?
From my previous experience, I’d guess it’s these psychological factors:
1. IDEs have more cognitive overhead, and programmers have to keep a lot of state in their heads. So using a text editor gets out of their way initially to get started developing. In the long-run, though, it’s worse for cognitive overhead because you have to keep more state in your head due to having worse code completion. You also have the additional effort needed to set up plugins with text-based tools to provide additional features that are helpful for daily tasks.
2. IDEs tend to have more knobs - big menus, dropdowns etc. Those can reduce your ability to focus when you’re not used to them. Many of the available options likely aren’t applicable to what you’re working on, and can be distracting.
3. A lot of programmers have a sense of elitism, and using text-based tools looks retro and more intimidating to those not familiar with it. In so doing, this validates the view of oneself as a member of a priestly class of text-slinging wizards.
4. Programmers love to yak-shave. Using more primitive tools gives a reason for us to customize the experience, even or especially if it’s an inefficient waste of time. Programmers love opportunities for self-expression through code and customizing the experience of using their coding environments for its own sake.
> 3. A lot of programmers have a sense of elitism, and using text-based tools looks retro and more intimidating to those not familiar with it. In so doing, this validates the view of oneself as a member of a priestly class of text-slinging wizards.
That's usually what I hear from people finding out I like/use Vim. It's like they can't come to peace with the fact that I like it for its bindings and plugins, no, it has to be because I want to be a snob about it. And those judgements only start once they find out I am using vim, before that I am just a regular guy but as soon as they see me type `vi`, blam, I am an elitist asshole. Fuck that.
Turns out I use vscode (debugging so much nicer) AND vim (quick notes and configuring stuff so much faster) (and Kate).
Once, I was debugging a config file in a video meeting with a colleague. I was frustrated because I had difficulties making the config file works and was mumbling "goddamitthingofhelltheresalwasysomething" and that colleague jumps at me "ah ! you are frustrated because you are using vim and can't paste the buffer (or saving the file or something)."
Have you tried LSP, say like in a LunarVIM or AstroVIM setup? These are self-contained packagings so you don't have to fiddle around with plugins (though you can also achieve the same results through plugins), and as I understand it you get the same code completion and intelligence you get in VSCode.
Had this discussion recently with someone advocating IDE debuggers over CLI debuggers. I'm like, don't you realize that the CLI debugger is used underneath inside your IDE? And by using it from the CLI you get an entire HISTORY of your debug sessions you can refer to.
- works at the speed I think. It renders text quickly, responds to my keystrokes quickly, and lets me work my will quickly. That's nice when I have a lot to do or am inspired, which covers most of the time I'm coding
- It's open source and trustworthy. I'm not gonna wake up one day and find out a critical plugin I use is closing the source and making a change I hate, or that Vim itself was uploading my code to copilot, etc.
- It's basically a platform. You can do whatever you want in Vim, remap all the keybindings, make a music player, whatever.
- It's respectful of my computer's resources. It starts up almost instantly, and generally uses very little CPU and RAM.
- most programmers in general are really fast with keyboard , like maybe 80-90 avg most of them so using the keyboard most is a good way for speed & consistency
- another example i can give is maybe you have some error on your ide that you can't debug for some reasons, most probably you can't copy text from that window, (it's just an example maybe you'll similar issue in other ways)
having cli means you can copy whatever the program is throwing at your, theres not limit
- another thing is aesthetic: you know you can do a lot.of stuff from cli, all will have the same color scheme & consistency across every cli programmes which someone may prefer.
- lightweight
I use VSCode daily. In my experience, 1) nearly every day VSCode wants me to update some extension, which I find annoying, 2) there is a teeny typing lag in VSCode when compared to my terminal. It is nothing you would typically notice and doesn't bother me, but typing in my terminal feels instantaneous, which makes it very pleasant.
VSCode isn’t much different from vim or emacs in terms of functionality: basic text editor that is configured for various tasks by plugins. Especially with the rise of LSP, the difference between VSCode and vim/emacs is basically preference.
> VSCode isn’t much different from vim or emacs in terms of functionality: basic text editor that is configured for various tasks by plugins.
Ease of extensibility is a big deal and vscode is much less easy to configure.
VSCode doesn't work uniformly throughout the application. In emacs, you'll quickly start to depend on all the places you can use M-r, M-n, and M-p to reverse search history for instance. This is one of many many examples where it's keyboard driven UX is superior.
Another big thing is that you can get help for every keybinding, click a link to it's function, and start modifying the implementation.
There was a recent podcast I can't recall that gave a good example of this... I'll look for it and post back if I find it.
My argument was the opposite, I use emacs for everything because its extensions are more composable and it’s a lot easier for me to write my own as I need them.
My point is just that the “why would anyone use a ‘text editor’ instead of an IDE” argument makes a little bit of sense when you’re comparing vim/emacs to IntelliJ, but VSCode is just as much a text editor out of the box as vim/emacs. And, despite being newer, it’s relatively uninspired compare to emacs.
VSCode is my main tool from day to day - I use it extensively for coding, documenting, writing papers, drafting e-mails, writing my work log/diary. However I was intrigued by this tool as I've already have open 4-6 tabs in my VSCode, so I think this would be neat to reduce the resource use a bit.
Honest question: why do developers insist so much on using command line based tools? What's the advantage over using an IDE? (e.g. VS Code or PyCharm)