I’d like to echo the sentiments of Reddit user tikhonjelvis, who commented¹:
“Man, I knew CS programs were skimping on Emacs fundamentals, but I hadn't realized it was this bad.”
1. <https://old.reddit.com/r/ExperiencedDevs/comments/1gqj7qa/my...>
I can't be sure, though, because using Emacs as an expert is definitely better than using those other systems as a beginner, so I haven't gotten around to getting over the learning curve.
It is still very very good IMO
having been a somewhat longterm user of IDEA, Vim, Atom, and Eclipse
The addition of elisp JIT compilation even makes its performance more than adequate
If you want the absolute minimum learning curve then perhaps there are better options, but I'm pretty sure you'll be stuck at a local maximum there.
From that blog post (2022):
> In addition to terminating all sales, all of our offices in Russia, including Moscow, Novosibirsk, and St. Petersburg were shut down. Work on the new campus in St. Petersburg was also terminated. All R&D activities were gradually stopped and liquidation papers for our Russian legal entity were filed in August 2022.
[1] A contemporary joke went (hope the translation works): “Durex has announced it is leaving Russia. When asked for comment, the company’s representative responded, ‘Not our fucking problem now.’ ”
Each was going to kill Emacs.
Somehow, I think I'll be using a version of Emacs until the day I can no longer type.
Meanwhile, everyone else is wasting months getting up to speed on the latest and greatest thing every 8 years or so.
This adds up over a career.
Oh, and by the by, this was written in Emacs using GhostText as the link between Firefox and Emacs.
Recent research has confirmed that this is an actual phenomenon: https://link.springer.com/chapter/10.1007/978-3-031-35017-7_...
Discussed on Hackernews: https://news.ycombinator.com/item?id=36721055
If IDEs help you work better, that's great. Do not presume your experience and preference generalize to all.
The one exception is maybe untangling particularly gnarly git conflicts.
Not really my thing but I guess it works for them.
There's no way to unify it given how many different moving parts are involved. Trying to fit this all within an IDE would be a project of its own...
* rg with telescope window to quickly find text in very large code basis is essential.
* Pressing spc, spc, to bring up a telescope window of my open buffers and typing in text to narrow them, very important.
* To date I still struggle to get the LSP to work the Linux kernel on VSCode, but on Neovim I got it working.
IDE's have a lot of menu clutter that I struggle to make good use of-most programmers working on user-space apps, it is likely fine, but for the kernel, we often need more control.
-- debugging with print statement because they don't know how to use a command line debugger
-- using find and grep to find files/methods
-- hand-formatting files because they don't have a inline formatter or something to notify them when they've missed a semicolon or spelled a method wrong.
I strongly encourage them to move to an IDE because I can't stand looking over their shoulder and watching them code so inefficiently. There probably are vim plugins to handle many/all of these things, but if a developer doesn't put the effort in to find them than they're just hurting they're own productivity.
Besides, typing speed is usually not the limiting factor in programming speed. I think overall efficiency needs to take a broader look.
I was like that about 20 years ago, working with Eclipse and later NetBeans for Java and Visual Studio for C# .net v1 (anyone remembers whole tomato extensions?).
I needed the IDE , the autocomplete, the debugger and all that. Nowadays, I do mostly Vim and Vscode for more complex projects. I don't know why, but I "grew out" of needing an IDE.
Some features that I do not have in nvim, but use daily in IntelliJ: Run configurations, proper debugger, SQL integration, hot reloading, and most importantly everything just working OOTB (auto complete, snippets, docs, ...). Can (n)vim do these things? Probably, but it'd take me days or even weeks to get it configured to the point where it's as seamless as IntelliJ.
I do use the IdeaVim plugin, so not all of my muscle memory is wasted.
ive never seen any vim-with-plugins setup come close to this
Whereas with VSCode, I really never have to leave the VSCode environment to do what I want. I can pop open a shell within VSCode and don't have to switch windows. I can easily open random files not associated with my project and VSCode does the right thing (usually). It opens images easily, renders markdown well, etc. my favorite feature is that you can pipe cli output directly to VSCode in the shell and then it opens a tab displaying that output. You'd be so surprised how often that feature comes in handy.
I really hope you’re wrong about that. I don’t want to be ruled by another Microsoft product
Example from VSCode Terminal: $ echo hello | code -
I think you missed the point of my comment you are replying to. You can get things done in any editor. The point is that Vim/Emacs have been around for decades and last your whole career, VSCode has been around for a fraction of the time and killed off the previous editor, Atom, that everyone though was "the editor".
I would definitely much rather install VSCode or an IntelliJ product on a Jr's machine, show them how to setup their terminal, get their dev environment setup, how to run and debug the app, and off they go. Edit code. Run code. Debug code. Rinse repeat.
Much more reasonable and preferable to having them spend months learning Emacs. Let's remember, they likely don't know how to use the terminal either these days.
Would that still be true if the ordering of your menus (and the items within, recursively) were randomly shuffled each day, and which side submenus opened on were also randomized? How about if the speed of your mouse or mouse acceleration behaviors varied?
I think you may be discounting memorization which benefits your workflow because that memorization is spatial rather than symbolic. Perhaps there's an argument to be made that such memorization is more natural, gradual, or easy, but there's definitely memorization involved in mousing around with any degree of efficiency or speed.
Which is a huge issue. If all you know how to do is crank up a GUI and write code, you are easily replaceable in a world where the demand for SWEs has gone way down. The best thing I ever did in my career is invest in learning how things actually work. Learning how something like Vim works is just a litmus test for absorbing and applying information quickly. Vim is just one in hundreds of tools I've learned how to use and string together.
I am also excited by the fact that the text editor configuration is programmable in a Turing-complete language, as opposed to pure JSON configurations that VS Code offers (correct me if I'm wrong, but settings are just a JSON file right?). It means that anything is possible.
In VSCode, my biggest complaint was that, for the Vim extension, the status bar was not configurable - I wanted to make the whole page change color when in "Normal" mode, versus "Insert" mode. Not possible in VSCode, but it's only a handful of lines of Lua in Vim.
Is that a huge productivity boost? No, but it makes me happy. Just as much as I want to be productive, I also want to be happy while programming
Just posting to balance things out for any entry level SWEs reading.
I'd just quit. If people in my company are making sweeping decisions that I disagree with (how much they are based in reality aside), I would just leave. If the company isn't aligning with you on something you feel passionately about, just leave. There are oodles of companies out there that would align with you on this.
There is rarely a suggestion given in modern society that doesn't assume a good amount of privilege, and pointing this out every time isn't helpful.
I welcome suggestions that can help those who cannot simply quit, but you didn't give such a suggestion, which is why I say it wasn't helpful.
Accusing people of privilege is a dead end. A person who has been accused of privilege is left without direction. It is better to say "what about these other people" than to say "you're privileged", because it directs attention to the other people. It avoids accusation and focuses attention on those in need.
If you’re reading this you’re privileged.
Somewhere on this planet is a single individual human who is the very unluckiest and most unfortunate. Everyone else is privileged. Even that guy is lucky to be alive now and not 1000 years ago.
None of this makes OP wrong.
Dev tool monopolies are as bad as any other monopoly.
Does anyone know what OOP is talking about here? VSCode is working just fine for me and I do not have a reddit account to ask it him myself
Have switched back to using neovim (my go-to during college with a crappy MacBook, lol) and set it up with nvchad to lazy load the LSP plugins.
Haven’t looked back.
Did it take months (gradually improving and re-learning) to get to this point? Yes, it did. But in the long run, I learned to be more efficient in my writing and removed a yearly subscription as well.
I really like Neovide as a gui. Brings the whole experience together.
And they're still considered Russian company, how hilarious.
They were choosing between being humiliated and losing customers, now they're both humiliated and losing customers.
>The official reason given was that Jetbrains has Russian ties. No amount of arguing could get leadership to reverse the decision.
Who are these people?
Intellij is a great product, I would still use it even if it were Israeli.
For example, when chick-fil-a was openly anti-gay marriage (including after Obergefell), I stopped eating there. As a gay man, I don't want my money going to people who actively wish to harm me.
And it's fine. It was low friction, and I've saved a lot of calories.
That doesn't mean you're then required to boycott everything. Perfect isn't the enemy of good. If you feel like it, boycott.