My company has banned the use of Jetbrains IDEs internally(old.reddit.com) |
My company has banned the use of Jetbrains IDEs internally(old.reddit.com) |
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.’ ”
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.
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.
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.
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.
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.
Yes.
I first started using Emacs in 2015 or so, sometimes still relying on other editors (usually IDEs) alongside it.
I was still in school then. By then, I'd used for varying lengths of time (and had been taught, to varying degrees): DrScheme, BlueJ, Visual Studio, Eclipse, NetBeans, and IntelliJ IDEA. (I'd also used vim, Kate, and Notepad++, but I used those mostly for editing configuration files, plaintext notes, and shell/batch scripts. Vim was the only non-IDE editor I'd ever used for any real programming, which amounted to my coursework for a few classes in college.)
I didn't dive in with writing my own config from scratch, but started with Spacemacs as someone with prior (and merely casual) vim experience. It was better in some ways and worse in others than those 'modern' IDEs I'd used previously. Performance was worse (although resource usage was much better) in that sometimes Emacs would hang or pause for slow operations. Startup time was slow, but client/daemon support made that invisible. The total stack I ran was noticeably buggier than alternatives like JetBrains, because a distro like Spacemacs glues a ton of external packages together. Spacemacs releases were infrequent so I ran against development branch, inviting more bugs.
But the main thing that struck me was how nothing else I'd ever used was as easy to learn as Emacs. I loved all the search-driven workflows and interfaces, how fuzzy-filtering was everywhere. I loved how running commands 'manually' always showed and reminded me what their keybindings were. I found myself learning many more keybindings than I ever did with other editors/IDEs, because they were so easy to look up, and looking for many more 'interactive functions' (commands) than I ever had before, because they were so easy to search. It had quirks, and I was grateful to have a 'starter kit' in Spacemacs (without which I likely never would have picked it up). But overall it was clearly, decisively better than anything I'd ever used in virtue of its radical discoverability alone, and I quickly built up muscle-memory for the Spacemacs bindings.
Automated refactoring and advanced code navigation were clear weaknesses, though. That's why I sometimes used JetBrains IDEs for some languages in the years immediately following.
Nowadays I'd say things look even better for Emacs as compared fo IDEs. It has pretty good performance, and more and more packages do things asynchronously where it makes sense. Virtually every programming language has one or more LSP implementations, so good code navigation functionality is easy to come by and old tools like etags can still be used as seamless fallbacks. (I don't do much work in static languages lately so idk how good the refactoring support for popular LSP implementations really gets, but basic refactoring in Python seems fine.) Emacs even gets along well with the new 'AI' hotness; its documentation culture and fine vintage mean that ChatGPT and friends are better at writing and explaining Emacs Lisp than the vast majority of programming languages, plus they 'know' lots about not only Emacs built-ins and popular packages, but even the configuration idioms and special macros of popular Emacs distributions like Spacemacs and Doom Emacs.
I no longer use any other IDEs anymore because I don't see any reason to for my current use cases, though I do still use Vim a little. Recently, I've started occasionally using VSCode to test things on behalf of my users at work, who are other developers. Far from decaying or falling behind, I think Emacs has become a steadily more attractive alternative to IDEs since I started using it. I don't begrudge anyone their VSCode or JetBrains IDE if that's what they've already chosen, but I'd still recommend Emacs (with a good starter kit) over either to programming novices today.
Yeah I used to think this way, because you're right: becoming proficient in emacs takes significant effort and time.
But becoming proficient in VS code takes maybe 25 minutes. 25 minutes to change IDEs every 8 years or so doesn't seem like an onerous requirement to me.
Emacs just has extremely poor defaults and out of box UX.
Becoming proficient in kicking a ball takes 5 minutes. Becoming proficient in football takes slightly longer. Magit alone makes VS Code look like a child's finger painting.
Magit is indeed a great git client, but I don't see what that has to do with emacs having bad defaults and an out of box experience that could be charitably described as antique.
He's right about the defaults though. Use something like Spacemacs or Doom if you just want to dip your toes in the goodness that is Emacs.
First I've heard of this. As a long-time vanilla Emacs user, I'm using consult-ripgrep and rg-project for ripgrep interfaces, consult-buffer for fast buffer and file switching, Eglot for LSP integration (mainly with clangd), etc. I've also got org-mode for note taking, magit for speedy Git manipulation, etc.
And all without any visible menus or clutter.
I suspect that a power Emacs user and a power Neovim user are more akin here to each other than to VS Code users.
Spacemacs got me into mnemonic key bindings, but it was too buggy and development had slowed. I got some things working with Doom Emacs, but it had a lot of bugs as well. Part of that reason is projectile also seemed to no longer be worked on. They were converting over to project.el but that seems to be slow.
The fun begins when you can't debug by printf because the buffer is shared by multiple processes that change it while the printf command is running.
Emacs is an extremely esoteric program, from shortcuts, to documentation, to package management (should you use elpa? melpa? melpa-unstable), to configuration (I love Lisp, but it's much more esoteric than JSON), to bugs (who has regular UI locking as an expected part of the experience, e.g. when using eglot, in 2024?).
I love emacs, and tinkering with it, and will probably never stop using it. That doesn't mean it's a real option for someone who doesn't want to make it a hobby.
I sort of get the other points, but I really don't get this at all. How is Emacs documentation esoteric? Emacs is without a doubt the best-documented application I've ever used. I can't think of a single thing with documentation as comprehensive, accessible, navigable, interactive, searchable, or genre-spanning as Emacs' documentation.
Emacs' documentation is so far from assuming that you already know how Emacs works that it'll literally teach you not only how to use the available configuration options for its built-ins (and any external packages you choose to install) or the language used to set them, or even how to write code in that language, but what computer programs even are.
Someone with zero programming knowledge whatsoever could sit down at a computer with no internet connection, open Emacs and its manuals, and learn everything they need to use, understand, and modify Emacs all the way to the point of contributing their own Elisp code to popular packages or Emacs itself. All that without reference to a single external document or a minute of personal instruction. Emacs documentation covers everything from how to change your colorscheme to what a loop is. How is that 'esoteric'?
1. I don't really want to bother with a DSL for configuring my editor (even if the language is usable outside of that context for other things)
2. I don't have time to bother with maintaining extensive configuration to get the level of code completion/refactoring/etc that I expect from a modern IDE (nor do I want to have to stop what I'm trying to work on to debug a problem with my config)
3. I don't want to have to research various plugins and stuff to provide functionality that I get out of the box with VS Code (or other editors)
4. I don't want to have a bespoke environment that only I understand when I'm trying to collaborate with my teammates
Don't get me wrong: I think digging into emacs and/or (neo)vim is a valuable thing to do and that everybody probably *should* do it at some point (even if only as an academic exercise), but to assert that they are a viable path for everyone is ignoring the reality that some people simply aren't interested in investing that time/effort into getting their tools working.
One can argue whether or not that stance is a good one or not, but you're just debating personal preferences and priorities at that point.
Most HN readers can't quit their job on a whim without putting their household in jeopardy. That's the sentiment you're responding to.
Calling out a solution as "privileged" adds nothing to this site.
You have a job at all? You have the brain and attention span to read this far? You can use computers to solve problems? That's a privilege. And yet we don't point that out every time a programming or career or product question is asked and answered.
Perhaps OP could have added something a bit gentler like "quit your job - if you can". But it's fundamentally a sound plan for many of us, and crucially, also even for many of us who aren't aware how much market power they really have.
But that fact doesn't mean it's a real solution many can and should try (or threaten to try).
But this has been a line in my shell config since I was teenager.
export EDITOR=vim VISUAL=vim # Viva vim, death to emacs- Do you know which service tier has the issue?
- Can you halt one thread that sees the issue, not all of them on an instance?
- When the request times out, do you have to start over and make another prod user sad?
I see your point though. I guess I just disagree with the premise that using an IDE will increase productivity.
The developer will always have to invest some effort into learning the tools, be it find and grep or an IDE.
As for the click: all IDEs and all code navigation tools for popular text editors like vim or emacs have full keyboard support. And M-. Or F2 or whatever are much quicker to type than "grep function_name".
what are your thoughts on that?
(what is a well structured resume in your opinion? did you get any feedback if it is well perceived? i'd like to think that mine is detailed and well-structured too, but i don't feel certain that it is good)
Any time you'll ask for feedback someone will tell you to do things differently and it will never end. I've been hiring tech folks for 15 years, with 25 years total experience, so I know what I want to see when I look to fill a role, that's how I build my resume. I want it to show at a glance where I've worked and what I did there, no more no less.
If efforts are made and you see a difference, then don't stop. If you see no difference (eg uptick in responses or interviews), as is my case, I've got nothing to say that will help you. Sell your house and fuck off to Europe maybe.
One header read: "Not better enough". Inasmuch as Visual Studio Code does anything better than Emacs, it doesn't do things better enough to justify expending the high activation energy of switching, unlearning my Emacs workflow and learning all that I need to know to do things Visual Studio Code's way.
On the contrary, the article said, literally: ”We are primarily a Go and Python shop, which means our only real option is VSCode”. Meaning they do not consider Emacs to be a ”real” option. This is expressing more than mere personal preference; it is, at best, profound ignorance of what Emacs is capable of.
It's unlikely that a given team/workplace is going to roll out dev tooling that is just a pile of elisp. With VS Code, you can drop a couple of JSON files into your project, commit and push them, and then everyone has a preconfigured set of tools that match the needs of that project.
When you've been using the same thing for 20 years changing defaults to be trendy isn't a plus.
You'll understand in 20 years when you're on your 4th IDE which will change the world^tm.
And it also means obsolete.
>You'll understand in 20 years when you're on your 4th IDE which will change the world^tm.
How condescending.
But no, I probably won't mind changing editors every few years because I am capable of learning new things and do not require a safe space to keep me insulated from the outside world.
So there is nothing wrong at all with switching to a new editor… it just means things are getting even better!!!
You can also do ZZ instead of :x, if you're playing keystroke golf.
maybe you could share some insights here?
my CV starts with a few paragraphs highlighting what i think are my biggest accomplishments and showing off how broad my experience is. followed by a list of tools and languages i have worked with, then a list of projects and the employment history. for jobs where it seems relevant i also have a list of talks and workshops i have given. the whole thing is quite long though. 5 pages for the short version and 8 pages for the long one.
searching job application sites (not job boards!)
what's the difference here? do you mean the career/job lists on company websites?
I don't care about the languages you know, I care about the languages you know and how recently you used them and your level of proficiency. Without that trifecta the information is useless (well, I'd have to ask). Was it a school project or did you blow someone's mind professionally?
I wouldn't do more than a sentence if you're going to summarize (eg 25 years of experience in building and leading technical teams), I can make my own unbiased summary.
As for application sites, I mean something like jobs.lever.co or boards.greenhouse.io.
Hope that helps, feel free to reach out by email.
Edit: mobile typos
this is not a question just for you, but i wonder what others think about this too.
i get that the number of years of using a language is a useful indicator, but the age? is my experience from 10 years ago no longer valid? also, proficiency in one language does translate to overall proficiency in any language. not 100% obviously, but the more programming experience i have the better i can learn new languages, and the faster i can get productive. same goes for any other tools. old experience is not forgotten. so even the years i have worked with any particular tool is missleading. and if i only list my work from the last 10 years then i'd look like all i have ever done is javascript, and that would limit my options very much.
i have been able to work on python and php projects as a mid-level developer without any formal prior experience in those languages. in the python case the employer knew about it and was still comfortable to hire me. in the php case i was able to cite some php work (which i had done) and i was still producing better results than any of the junior developers on my team. only the team lead was clearly more experienced then me.
how am i going to make that point if i don't list all of the projects i have worked on, no matter how long ago?