Readit News logoReadit News
mythz · 4 years ago
I used to think VS Code was going to be a threat to JetBrains IDEs considering how fast its iterative development was (thanks in large part to the productivity of JS + Web renderer) but its never seems to quite be able to reach the feature-set, polish & intelligence of JetBrains IDEs.

Every IDE function appears to be better implemented in JetBrains, whether it's Code Analysis, Refactoring, Navigation, Running/Debugging, Running Tests, adding new files, git integration or contextual functionality like adding package references etc. Everything is just better in JetBrains.

I see VS Code as an ubiquitous smart editor platform with zillions of plugins that's half way between a glorified text editor and an IDE which I use a lot for quick dev changes, quickly searching a folder, front-end UI development, trying out new languages or writing docs. But if I have to start a long dev session I turn to JetBrains which I find far more productive.

azeirah · 4 years ago
Part of it feels like it comes from a different development philosophy.

Vscode is a "text editor" or a "code editor". Usually this means that it's fairly lightweight, supports every language under the sun, is highly configurable and extensible, but doesn't have a lot of very in-depth features, and also partially relies on third-party extensions for deeper functionality.

Jetbrains on the other hand works on IDEs built for one specific language explicitly. Consider CLion for C, it's only a couple of years old!

They put a lot of resources into supporting a language and all its relevant workflows. Phpstorm for instance has built-in support for three different standalone code quality checkers, composer (package manager) support, deep language understanding with highlighting, warning, errors, refactorings, generators etc, doc comments, code formatting, support for different testing frameworks, a built-in debugger, etcetcetc...

While that's great, you shouldn't go edit python code in Phpstorm. It supports syntax highlighting and maybe a couple of other small features, but that's it!

In short, code editors usually cast a really wide net with a lot of configurability and extensibility, while (jetbrains) IDEs tend to go really deep on a single language or workflow, with less extensibility, and deep configurability within the supported language itself.

jayjader · 4 years ago
I wonder if you have had the chance to use a Jetbrains IDE with a professional license. Doing so gives you access to more or less the content of all the other "flavors" as plugins (it's basically all IntelliJ underneath).

For example, I've been using PyCharm for both our python backend _and_ our React + Typescript frontend, all in the same project window, with the same features regarding syntax, linting, refactoring, tests, debugging, etc.

dehrmann · 4 years ago
Turns out 99% of my work is in something like Java, Python, or JS. Once you include other JVM languages, C++, PHP, and Ruby, IDEA's coverage is huge. They even have C#, Objective C, and Switft offerings, but there's something to be said for staying in those ecosystems.
cyral · 4 years ago
One thing to note is that you can use IntelliJ and install the official plugins for each language. For example you can bring the WebStorm functionality to IntelliJ, or install the database plugin to get an embedded Datagrip window. (Which is really neat because you can then get SQL syntax highlighting and such based on your actual DB)
neonological · 4 years ago
Intellij allows you to install pretty much most of the features from all the other jetbrains IDEs as plugins. Additionally most of their IDE's have the ability to code in several other languages seperate from the core experience. Almost all of their IDE's can for example integrate with the javascript ecosystem.

I think you're making a mistake here. Essentially behind the scenes there's one jetbrains IDE. This IDE is a single platform that can take plugins and code in any language and be customizable to your hearts content.

ON the surface however Jetbrains doesn't exactly release this IDE to the public. They deliver different configurations and different defaults on TOP of this IDE, then they lock it down a little and ship each one of these profiles under a different name. All these IDE's are basically different bundles of plugins running on the exact same core platform.

That's why CLion is only a couple years old and still really good. It's because all Jetbrains needed to develop was a plugin and shove it into an existing ecosystem.

This is no different then Vscode when you think about it. Both are coding platforms that can be plugged with new features, it's just that jetbrains locks some of this customization down and sells their IDEs with bundles of plugins that offers a better core experience.

What makes Jetbrains better is this focused and higher quality bundle of features that feels cohesive. What makes jetbrains worse is that this central platform they're developing for is bloated. Everything is slow, takes forever and can lock up.

If Jetbrains just did something to speed up the platform then pretty much IMO it beats anything Vscode has to offer.

specialp · 4 years ago
The plugin infrastructure for VS Code along with excellent first party support for JS/TS has helped it grow very fast. But in languages other than TS the mishmash of plugins of varying quality really degrade the experience. The opinionated approach and strong first party support just makes Jet Brains product much cleaner. I use both a lot.
kitsunesoba · 4 years ago
Indeed, I haven't used VS Code a lot but my few experiences with it were largely figuring out which of the available plugins for a particular function was the "right" one, with all of them sitting at various levels of "working". The IntelliJ, Sublime, and heck even TextMate 2 plugin experience is cleaner in that regard.
harikb · 4 years ago
I use both. IntelliJ being a paid personal subscription. I like both. But VsCode excels in their remote editing capabilities. Sometimes I work on code that will only compile on a Linux and I am on a Mac. It is not just remote debugging - the whole environment including language server works flawlessly via remote while making you feel like local development.

It is good for two good IDEs to survive. I don’t want one of them to win. There is room for two.

I only wish the opensource development model of plugins (for both IntelliJ and VsCode) doesn’t come to bite us one day with a rogue developer inserting malware. The whole review/reputation system should be like Apple App Store

punjabisingh · 4 years ago
VS Code Remote Containers is another cool feature. You can develop inside any Docker container locally. This could essentially mirror whatever image you have deployed into Kubernetes, GKE, GCS, etc.

Ref: https://code.visualstudio.com/docs/remote/containers

reader_mode · 4 years ago
This right here is what could get me to switch.

I could theoretically host an IDE on a workstation and develop from anywhere with a browser.

Unfortunately it's not ideal yet - remote editor wouldn't let me touch files not owned by session user (even when I could sudo) and similar issues.

leetcrew · 4 years ago
I think that sounds about right. I see vs code as a jack-of-all-trades, master-of-none type of tool. if I want to try something in a new language or just edit some text real quick (I find vs code has better than average support for weird text encodings) but keep a familiar ui, I go with vs code. if I'm going to be doing some more in-depth work, I'll spend the time to learn a purpose-built tool. I mostly write c++ for windows, and I find vs code can't really compete with its big brother (bloated as it is) here.
brightball · 4 years ago
This sums it up for me. For languages with a dedicated Jetbrains IDE (Java, Ruby, Python, etc) Jetbrains will be better experience hands down.

For everything that doesn’t have the premium experience, I find that just using plugins isn’t as effective.

For example, the experience of using IDEA with the Elixir plugin hasn’t been great despite a lot of development. It seems like it constantly loses the proper SDK if I jump between projects.

The VS Code experience has been a lot better for Elixir though. Just works. The moment Jetbrains releases a dedicated Elixir IDE I’d jump for it though.

herdcall · 4 years ago
Not sure how many devs code in a single language these days. I go back/forth between Go, Dart, and C++ every day, so using one IDE like VSCode (with the familiar features from extensions to shortcuts to snippets) is a big help.
mythz · 4 years ago
I do have to maintain libraries in several languages, basically every JetBrains IDE has built-in first-class support for JS/TypeScript + all popular Web file formats irrespective of whatever backend language you're developing in.

For C#, F# & VB I use Rider.

For Dart, Java & Kotlin I use Android Studio, but if I need to do a lot of development with Java/Kotlin I'll bounce to IDEA.

For TypeScript/JS npm projects I use VS Code for small changes, but bounce to WebStorm for longer sessions.

For the Swift package I use Xcode for development & VS Code for git, update docs & run publish scripts. Unfortunately ran into issues trying to build my project with AppCode.

For all other languages (used to develop project templates & packages for https://gist.cafe) I'll use VS Code, but that's mainly because I don't have the IDE installed. If I had to spend more than a couple of days working on a language that JetBrains offers a dedicated IDE for I'll most likely be installing & trying that out, before falling back to VS Code (JetBrains All Products Pack + Unified Toolbox Updates makes this effortless & feasible).

derimagia · 4 years ago
Jetbrains provides plugins for Intellij that support almost every other language they have a "dedicated IDE" for. That's what I do and it supports almost every language I throw at it. The exceptions that I know of are Rider and parts of Android Studio
rfw300 · 4 years ago
It’s worth noting you can set up shared settings between every Jetbrains IDE which will sync up all of your keybindings, color schemes, etc.
derekperkins · 4 years ago
I think the vast majority of devs work in a single language, at least on a day to day basis.
malkia · 4 years ago
I wish JetBrains looked exactly into that, and deliver one IDE with above (^^^).
usrusr · 4 years ago
A somewhat radical rephrasing would be that the IDEA products occupy the space that used to be held by Borland IDE or something like Quick Basic whereas VSCode seems more like an Emacs for the javascript age. (which I find surprisingly fitting, considering how according to The good Parts javascript is just a scheme with curlies)
keyle · 4 years ago
I agree, I'm a long term IntelliJ polyglot, and I watch people in pair programming or video call refactor in VSCode and I feel sorry for them. Stuff goes sideways badly with dynamic languages, worse, they don't have a grip on it.

Simple stuff like code formatting and structure of files isn't well respected by vscoders <I find>.

IntelliJ got a bad wrap I guess because it all started with Java. I'm glad I had a short gig in Java to discover IntelliJ back then. I really think their software, although getting quite complex now, and the plugins can be a little sketch, is the best IDE out there <unless you're a vim nerd who swears by vim and will die on a sword for it>.

willtemperley · 4 years ago
The almost perfect Vim support is why I pay for JetBrains’ AppCode over xCode. Second I simply don’t think I’d be able to code both Java and Swift without having a similar workflow between IDEs. To me the development experience makes the difference between loving or hating the work.
jokethrowaway · 4 years ago
Jetbrains IDEs performance is so abysmal I quickly get annoyed and move to something else. Same with XCode.

I find VSCode to be the most feature rich editor whose speed I can tolerate. VSCode is by no means ideal in terms of resource consumptions or startup speed but the community picked up VSCode for the golden path in the languages I code with (rust, node.js, frontend js) and using other lighter editors is a significant downgrade.

Sublime was incredibly promising but it's not enough feature wise for my experience. I'd literally throw money into a native and more performant/lightweight VSCode.

thu2111 · 4 years ago
NB: IDEA performance is improved drastically by giving it more memory. Basically every time someone complains about perf issues with IDEA it's because their heap limit is too low. It can be configured via the help menu.

One of the unfortunate (or fortunate?) design decisions in IDEA is that there's an explicit and user configurable tradeoff between performance and memory usage, but the defaults are far too low. And if it's too low only the most very recent versions can detect this and tell you what to do about it.

dschuessler · 4 years ago
There are several projects attempting to develop a native smart editor. For Mac users there is Nova (https://nova.app/) and for the Vim crowd there is Onivim (https://onivim.io/).

I have used neither of them but I find them intriguing, especially when I wait for my VSCode cursor to catch up with my typing.

api · 4 years ago
I switched from VSCode to CLion (IDEA variant) and its Rust plugin because... well... it actually works for complex C++ code. VSCode requires a restart every 10 minutes while working with a moderately complex C++ code base with some complex template logic.

Since I switched I've really come to like the polish and completeness of the thing. I have confidence that it will actually work, and it almost always does. It's fatter than VSCode in some ways (especially RAM) but that's what 16G or more of RAM on a laptop is for.

the__alchemist · 4 years ago
Even with plugins, VsCode feels like a text editor + syntax highlighter for single files. Jetbrains feels like a project-first language introspection tool. It knows how the languages (Python, Typescript, Rust etc) work, how their functions, data structures, modules etc interact.
_the_inflator · 4 years ago
I agree with you.

JetBrains IDEs are more thorough, kind of Apple like vertical integration while VS Code is more like Windows: hack everything together.

From a experimental standpoint I highly prefer VS Code, since writing add-ons for JetBrain was too complicated for me in an affordable time. VS Code shines here.

I think that this flexibility really is a different beast. For example, workflow optimization is becoming a thing in software development. In my department, I turned VS Code into a somewhat low-code editor for Web development. This could not have been achieved using JetBrains.

EasyTiger_ · 4 years ago
Agree, PHPStorm for me is a productivity monster
randomsearch · 4 years ago
I agree, I also think sibling comment about vs code being a generic text editor is a fair point.

I’ve tried to move to vs code several times as I like using the “default” (same reason I use Ubuntu) but webstorm is just better IMO.

bpicolo · 4 years ago
There are plenty of quirks when you aren't coloring in the lines in Jetbrains, though. Formatting with Rubocop on save in Rubymine is nearly impossible to do successfully in my attempts.
2muchcoffeeman · 4 years ago
VS Code is also pretty nice for free. I wouldn’t use it professionally if I had Idea. But for home use, free is pretty ok.
africanboy · 4 years ago
in my experience Intellij looks better if you have coded in Inttellij first (especially Java) and then moved to othet tools.

Intellij offers a lot of custom behaviours that IMO programmers start coding the "Intellij way" (let's call it Intellij muscle memory for lack of a better definition) on the other hand going from vi to Emacs to Sublime to VSCode is less of a problem and people tend to honestly judge strength and weaknesses of each one.

For example magit is so good (for me) that until the magit plugin for VSCode came out I kept an instance of Emacs running only to interact with the git repository.

Intellij git integration in comparison, in my opinion, it's barely usable and generally counter intuitive.

BTW the java plugin bundle for VSCode replicates 95% of the features of Intellij, except for some formatting styles and a few of the refactoring facilities that I could not reproduce, I switched from Intellij to VSCode without looking back. There's even a keyboard bindings plugin for VSCode that perfectly maps IJ keyboard shortcuts.

If only the VSCode java ecosystem was refined as it is today 2 years ago when the project I am working on started, I would have never even downloaded Intellij.

If I had an euro for every time I had to "Invalidate cache and restart" on Intellij to make it recognize some trivial change, I would be rich now.

Having said that: they are different products for different targets.

Intellij has a huge advantage in corporate environments where conformity, uniformity and easily replacing team members are paramount, VSCode is an highly customizable code editor that fits a different use case where each member of the team prefers to customize the working experience as much as possible.

matsemann · 4 years ago
> Intellij git integration in comparison, in my opinion, it's barely usable and generally counter intuitive.

Disagree. I use it all the time. It's sooo nice to have the different changelists. Easy to make changes that I don't want to accidentally commit by putting them on a different changelist (like pointing to a different database). And it can be split even in the same file, much more easily to commit parts like this than using git -p.

> BTW the java plugin bundle for VSCode replicates 95% of the features of Intellij,

If you only look at the textual java code, perhaps. But it lacks the awareness of the rest of the java ecosystem that Intellij provides.

dehrmann · 4 years ago
Something Java accidentally did was be impossible to code without an IDE, in part because of its type system. People wrote really good IDEs for it, aided by the type system. At some point, they realized they could use what they learned and adapt the IDE to other languages.
firephreek · 4 years ago
> Intellij git integration in comparison, in my opinion, it's barely usable and generally counter intuitive.

You're going to have to explain that one to me. I don't know what part of `ctrl+k`, comment, `ctrl+enter` to commit is difficult. Keeps my hands on the keyboard and head in the code. Time to push? `ctrl+shift+k`. Update? `ctrl+t`.

I have yet to find any IDE that performs as well as IntelliJ et al.

e3k · 4 years ago
I had the exact same feeling arriving into projects using PyCharm: somehow I could feel PyCharm's influence over the code and ignorance of the non-IDEA tools (e.g. makefile/isort/black, which are usually superior/easier to use than the mouse oriented interface of PyCharm). I even use a phrase for the way they are developed: PyCharm oriented development.

VSCode is better at first, unless you need to work with Python 2.7, where it fails completely: there is no good lsp for it (intellisense fails), and working this problem around by downgrading to ctags does not work either.

The best I can say about them is that both has decent multi cursor implementation.

noisy_boy · 4 years ago
> in my experience Intellij looks better if you have coded in Inttellij first (especially Java) and then moved to othet tools.

I have started with notepad and moved through vi, Eclipse, VSCode and then IntelliJ. Out of these I used Eclipse and IntelliJ for Java and IntelliJ wins hands down when it comes to the quality of the features, atleast for Java.

> Intellij offers a lot of custom behaviours that IMO programmers start coding the "Intellij way" (let's call it Intellij muscle memory for lack of a better definition) on the other hand going from vi to Emacs to Sublime to VSCode is less of a problem and people tend to honestly judge strength and weaknesses of each one.

Since I didn't start with IntelliJ, I didn't have any baggage of muscle memory etc but the ease of refactoring and the quality of autocomplete/suggestions of refactoring takes it beyond an editor to almost a companion. It doesn't nag and you are free to ignore its suggestions but hell those are pretty good suggestions. I use a few keyboard shortcuts like jumping to definition and checking usage so I don't have any keyboard focused attachment to IntelliJ. Infact I use vi keybindings in both VSCode and IntelliJ.

> Intellij git integration in comparison, in my opinion, it's barely usable and generally counter intuitive.

IntelliJ's git integration is definitely not barely useable and not counter intuitive either (I started with command line git and then worked on IntelliJ). The only gripe I have is that occasionally I want to create a branch from a tag and I need to do that from the command line. Everything else works seamlessly.

> If I had an euro for every time I had to "Invalidate cache and restart" on Intellij to make it recognize some trivial change, I would be rich now.

I've had to do invalidate cache and restart about 2 times in last two years so while it is not a great use of my time when I have to do it, its not a big bother considering it is rare for me.

> Intellij has a huge advantage in corporate environments where conformity, uniformity and easily replacing team members are paramount, VSCode is an highly customizable code editor that fits a different use case where each member of the team prefers to customize the working experience as much as possible.

In my team, the average period folks have been with the firm is 3 years so easily replacing people is not a priority (because they are not leaving left, right and center). Also, I'm not even sure if that makes any difference, because its not like we are coding style nazis carrying out IntelliJ dictated formatting (we use Sonarlint for linting and only expect people to code in a manner that is easy to understand and maintain). Almost all team members have used Eclipse / VSCode and atleast for Java, after they used IntelliJ, they haven't gone back to either.

Dead Comment

Dead Comment

voidfunc · 4 years ago
I don’t really see IntelliJ and VSCode as competitors. VSCode competes with atom and other full-featured text editors (vim, emacs) ... its got great adoption amongst the newer generation of programmers that think those editors are old school and user hostile.

VSCodes Java, Python, and Golang support is miles behind IntelliJ.

FWIW, on my team at Microsoft where we write a lot of Go, theres a 50/50 split between IntelliJ/GoLand devs and VS Code devs and more people have switched to IntelliJ from VS Code than vice versa.

runarberg · 4 years ago
Interestingly, as an emacs user, I am really rooting for the success of VSCode. The existence of the Language Server Protocol means that I have a horse in this race. Emacs users that use the same language server as VSCode users directly benefit from this relationship. So even though VSCode is competing with Emacs for market share, it is very much collaborating with Emacs (and other text editors that use LSP) in making language features comprehensive for everybody.
owl57 · 4 years ago
It's more complicated. Microsoft waits until everybody adopts LSP for, say, Python, and then slowly moves to a proprietary language server, explicitly forbidding its use outside VSCode:

https://news.ycombinator.com/item?id=25719338

reidrac · 4 years ago
I feel the same. I couldn't do Scala with vim if it wasn't for LSP and Metals.

(and I'm aware that I still have less features than if I was using a full featured IDE, but I'm still very productive and also happy)

loosetypes · 4 years ago
Any resources you could recommend for getting started re LSP with emacs?
quercusa · 4 years ago
I think the textbook (i.e., The Innovator's Dilemma) model for a disruptive technology is specifically one that starts out looking like it only competes in a different (typically lower-value) market, right until it's eating your lunch.
apple4ever · 4 years ago
Yup. $200 per year (!!!) vs free is a world of difference.
chrisandchris · 4 years ago
I agree. They are not competition at all.

I used to work together with someone who didn‘t catch basic errors in VueJs and Symfony projects in VSCode because (idk) somehow it can‘t do it or some plugin is missing.

On the other side there‘s me with PHPStorm and WebStorm with full project inspection support and detailed analysis about code available at a glance.

Maybe I just don‘t know how to do that in VSCode but VSCode does not feel like an IDE but rather a Notepad++ on steroids to me. Sure, you can do the job in it but that‘s not the reason I pay a lot of money to JetBrains each year.

Edit: typo

dschuessler · 4 years ago
It's likely a missing plugin. As an avid VSCode user I would liken the difference of VSCode and IntelliJ IDEs with the difference between an unfurnished apartment and a fully furnished apartment.

With the latter you skip setting up your environment and just start doing your thing. The former is more barebones in this regard. It lets you build your own IDE from plugins and a ton of configuration options.

As someone who likes to have one app for everything code related (from Markdown to the programming languages I use, to config files and to LaTeX) I like to "bring my own furniture" for the unique combination of needs I have.

Thus it makes perfect sense to me that VSCode is regularly underestimated regarding its IDE capabilities. Stock VSCode is indeed just "Notepad++ on steroids". You have to invest some time to build it up into a fully fledged IDE.

matwood · 4 years ago
Interesting. I have used IntelliJ for Java for as long as I can remember and can't imagine using anything else. For JS and Go I use VSCode. I wonder if it's just what I started with and am used to. I've tried to use Intellij a couple of times for Go, but end up back on VSCode.
meddlepal · 4 years ago
I dont know how you’re productive with VS Code and Go... I watch my coworkers live code with it sometimes and they are struggling. The lang server crashes constantly and stuff like autoimports or code complete barely works. I sometimes want to scream while watching them struggle.
karmakaze · 4 years ago
I'm the same way. Java/Kotlin in IDEA, front-end (js/ts/css) in VSCode, and Go can be either but usually VSCode. I don't really want/need more than what VSCode provides for it.

For Ruby, I'm lost without RubyMine--I work on a huge codebase and lean on the superfast search (with default "*.rb, !*test*" files) a lot, usually restricted to a project subfolder.

I'm really glad they renamed Gogland to GoLand--gland is weird (unless maybe I'm doing Monads in Haskell or something).

Nursie · 4 years ago
Goland is great if you have IntelliJ muscle memory, I haven't tried using IntelliJ directly for Go though, Imagine it's probably sub-optimal.

You do have to pay for Goland also.

baby · 4 years ago
On my team that works on Rust I think there’s a similar split between Clion and vscode. I prefer vscode fwiw
kvakva · 4 years ago
At this point, I don't think VSCode competes with Atom.
xref · 4 years ago
As in VSCode never got to parity, or vice versa?
mwint · 4 years ago
I'm a current MS intern, curious what work ya'll are doing in Go. Would you be up for a call sometime?
gh123man · 4 years ago
Ex MS employee (and former intern). Somewhat new to Go (and using VSCode full time) - but it's the language of choice for my job right now. Go seems to be popular in backend apps (non windows mostly) where concurrency and performance are important. The tooling around go for performance profiling and optimization are rather good IMO, and quite friendly if you are accustomed to Unix style CLI tools.

I do agree with the other comments that the language server is buggy but it works quite well when it works. I may be a bit bias when dealing with tooling since I came from Xcode where workflow breaking bugs was the norm.

meddlepal · 4 years ago
Email me your MS alias and I'll reach out over Teams on Monday. Email is my profile.
dmitryminkovsky · 4 years ago
I haven’t tried the Java integration but based on using VSCode for TypeScript I could imagine feature parity. VSCode is so good that it makes me concerned Microsoft is just using it to eat at JetBrains until they up and start charging for it in the future. Not sure how else to see it.
whynotminot · 4 years ago
So VSCode is very, very good for TypeScript. Hell, I'm pretty sure VSCode itself is written in TypeScript!

But that does not carry over to all languages. When working on web apps with a Java backend, I still prefer Idea because it's better for Java and close enough for TypeScript so it comes out ahead over all.

arcturus17 · 4 years ago
I think VSCode is really good, but even when I was only writing JS I ended up preferring WebStorm. I like its refactoring tools and command palette better, and I also prefer its "batteries-included" rather than "plugin-first" approach (although I do have a few plugins on JetBrains products always, such as Vim, there are significantly fewer than in VSCode)

Anecdotally, I know other devs in the same situation. You wouldn't pry WebStorm from their cold dead hands, even with an excellent free offering like VSCode. But I also know some who don't understand why you would pay for WebStorm when VSCode is free, which is reasonable (though if they took WS for a spin, they might change their minds).

Now that I write mostly Python and JS there is no contest at all. I get all the JS/TS goodies, plus absolutely amazing Python features.

Like GP is saying, I don't think JetBrains and VSCode even compete that much. Maybe VSCode will capture a good part of the JS world - which is huge of course - but I think WebStorm will maintain a decent foothold there no matter what, and I think JetBrains will remain very strong in other languages.

luxuryballs · 4 years ago
I feel like we are kind of ignoring how Visual Studio plays into this, do we really expect Microsoft to replace it with VS Code? I feel like Visual Studio Pro/Ent is more of a competition with other paid IDEs and VS Code won’t be, perhaps somewhat so it isn’t positioned to eat Visual Studio?
khaledh · 4 years ago
I've been programming with various IDEs and text editors for over 30 years. In my formative programming years (1990s) I relied heavily on Borland and Microsoft IDEs. In the 2000s it was a combination of Visual Studio (C/C++/C#) and various editors (PHP, HTML/CSS/JS). In the 2010s I started working across multiple languages: C#, Java, Python, Ruby, Elixir, Scala, JavaScript (also dabbled with Lisp, Go, and Rust); using various tools: Visual Studio, JetBrains IDEs, VS Code, Atom, Sublime, Vim, and even Emacs.

My opinion: JetBrains IDEs beat every single other IDE/editor hands down (Visual Studio -- not Code -- comes close). The level of integration and polish is unmatched. I use PyCharm on a daily basis at work and the level of productivity I get out if it is far beyond what I get from any other IDE/editor. I've been developing a hobby kernel recently using C, and initially used VSCode; it was OK. Then I thought I'd give JetBrains CLion a try and I never looked back. I happily paid for license and it's been a well spent investment.

mhaberl · 4 years ago
I had the same experience, used Visual Studio for C++, and years after C#, and Eclipse for Java projects. When JetBrains came along it really shined.

I tried VS Code a couple of years ago for a few months for some scripting languages, it really is not bad, however JB IDEs are better for Java, Python, Ruby,.. even for frontend development - support for Angular and React is great.

I bought the "all products pack" for individuals - it something like 15 bucks per month - for me it would be silly not to use it.

spullara · 4 years ago
Recently spent a few months going deep on React development and I concur. The support for it was just magical.
passthejoe · 4 years ago
This is a decent investment for coders. Good tools make all the difference.
ci5er · 4 years ago
I pay (personally) for the entire Jetbrains tool set. They are damn good. And I guess to be fair, I haven't given a lot of time to VSCode, but TBH: I find that Sublime and IntelliJ cover the spectrum for me (which is Scala, Java, Kotlin, Python, C, Go and Typescript all with git support)

I'm not super exploratory, because it always seems that I have a project due in two weeks, but given that I have pickd up two of the BEAM languages, but am always lagging on learning Ruby and Haskell. These days - I'm starting to wonder about the utility of learning another language, other than re-learning Smalltalk out of nostalgia.

varispeed · 4 years ago
The only reason I use VS Code is when I want to quickly check a file or create a PoC. PyCharm or CLion are just too slow and frustrating, but for bigger projects there is no better option than those, despite being awfully slow.
danieldk · 4 years ago
On what platform are you using these IDEs? I use CLion daily and it is very fast on my Linux machine with a Ryzen 3700X CPU.

(I have heard complaints that the JetBrains IDEs are much slower on Macs, which also corresponds with my limited experience of using their IDEs on a Mac.)

sedatk · 4 years ago
> (Visual Studio -- not Code -- comes close).

What do you think Visual Studio is lacking the most compared to JetBrains?

khaledh · 4 years ago
Don't get me wrong, I still consider VS to be an extremely powerful IDE. I think it's the best IDE for .NET development, and maybe C++. It also has the best debugger, period. But when it comes to supporting multiple languages, it lacks the consistency, extensions, and integration that JetBrains IDEs enjoy. Admittedly, I haven't used it professionally in about 5 years, so many things may have changed.

There's also something I can't express about productivity when I'm using a JetBrains IDE. I remember over a decade ago when I added ReSharper as a plugin to VS and all of a sudden I felt the IDE come to life, with a level of assists I haven't seen in VS proper. Of course VS has caught up now, but ReSharper was way ahead of it in those days.

It's also clear that MS is focusing their efforts with VS on cloud integration (VS Online, Azure, etc), rather than sweating the little details that make you even more productive day-to-day. That's probably why they let VS Code eat the bottom of the market, knowing that MS shops will still pay for MSDN subscriptions.

jyounker · 4 years ago
> Meanwhile, JetBrains seems to be staying afloat mostly thanks to hard work and sheer luck.

I don't think they keep ahead simply by hard work and sheer luck. Once you look under the hood at Intellij it's clear that they have significant architectural advantages.

While VS Code is a text editor that uses LSPs to provide refactoring and navigation, Intellij is a refactoring engine with a good text editor on the front. Under the hood Intellij is a structured editor operating on abstract syntax trees. ("psi nodes" in Jetbrain's parlance.)

The hard part of creating an LSP is providing things like refactoring and navigation support, and these are exactly the things that IntelliJ provides for its language plugins. To achieve a given level of refactoring and navigation support an LSP developer needs to expend significantly more effort than a jetbrains plugin developer.

From my vantage point Jetbains doesn't seem to be staying ahead by hard work and luck as much as by an intelligent architecture and design that allows them to produce high-level, high-value features with less effort.

[ It's worth looking at IntelliJ's plugin SDK. https://plugins.jetbrains.com/docs/intellij/psi.html ]

aasasd · 4 years ago
Thanks for this comment. This analysis of the internals is much more informative than vague divination that the post author pulls from their gut.
thu2111 · 4 years ago
We can expand on this analysis a bit.

IntelliJ runs its language plugins in-process, using object oriented APIs. VS Code runs language plugins out-of-process with an RPC protocol to the backend.

The latter has some advantages if you want to re-use the language's "native" compiler, assuming there is one. However, this isn't quite as useful as it sounds. Compilers parse text into ASTs and do transformations on them, yes, but, they are not IDEs and the needs of an interactive "presentation compiler" are very different to the needs of a batch-oriented normal compiler. The OP's article overlooks this: it just blithely assumes that building an IDE on top of the regular compiler is always better than writing a dedicated IDE support from scratch. The truth is more nuanced.

Meanwhile, the costs of going out-of-process with RPC are enormous. Beyond the obvious performance, bandwidth, memory overhead and latency problems, the Language Server Protocol spec is 100 pages long and still growing. Despite being a protocol and thus theoretically language neutral, in reality it's a JS/TypeScript API. In fact the protocol is so much a JavaScript API that there's no direct way to represent it in a conventionally typed language: for example the Response.result field is totally dynamically typed and can be anything at all.

Worse, because LSP is just a protocol, there's no platform to help you implement it. IntelliJ platform is full of classes you can compose, subclass or use to simplify the task of writing plugins. VSCode is not like that.

cedricgle · 4 years ago
My take with VS Code is that their support of development container and ssh is the best and it's a killer feature.

My ultimate goal for quite sometime now was to pack all my development dependencies inside containers or cloud-init files to keep my host bare-bone and have reproducible/shareable setups anywhere anytime. Before I was an Emacs fan. I tried multiple combination of Emacs, Tramp and containers but it failed: there always was a package that didn't played well and kept looking for stuff at the wrong location. After a while, I was fed up to make low-level fixes in random packages. I also tried weird setup with Nix for the same exact bad result.

So I took my nerd pride away and tried VS Code with containers and ssh: - https://code.visualstudio.com/docs/remote/containers - https://code.visualstudio.com/docs/remote/ssh

It just worked. The experience was flawless. In a matter of second, it blew the competition away like nothing. Nowadays, I cannot live happier: I clone the repo i need to work. It comes with a development Dockerfile. VS Code starts the container and everything is there for working. If I need a beefier host, I spin up a cloud VM with cloud-init and 5 minute later the setup is ready without any manual intervention. Any extension I tried in marketplace worked.

In my opinion, the Emacs/Vim communities clearly missed a golden opportunity for a more larger adoption.

SparkyMcUnicorn · 4 years ago
I desperately wanted VS Code's remote development functionality in IDEA, and was keeping track of their remote development feature in YouTrack. When CodeWithMe was released, I was sorely disappointed.

All I wanted was my code to run anywhere, and my local machine to be the IDE.

mutagen.io ended up being my answer. After learning how it worked, I got it set up and it works really well. I'm mostly doing PHP development these days, and have a LAMP stack running as docker containers on a server.

The sync is nearly instant (99% of the time), the rare conflicts are easily resolved, and of course debugging still works.

The only thing I'm missing is collaborative editing, which I still have to jump over to VS Code to do. I haven't tried out two people using `mutagen sync` on the same instance of code, but that could be a really interesting solution if it works.

An editor agnostic solution to collaborative/pair coding would be really fantastic.

Philip-J-Fry · 4 years ago
I've spoken to some Jetbrains employees and it seems their vision of remote development is nothing like what VSCode does. No matter how much I explain they just don't seem to understand the advantages of being able to host the IDE in a docker container/remote system. "Docker isn't supposed to be used for that, you deploy to a container, not develop inside one" they say.
cube2222 · 4 years ago
Agreed, mutagen is great for remote development.

As for the conflicts, I chose the option of one way sync, with everything being overwritten by what's on my local machine if there's a conflict. Works like a charm, since the remote machine will only ever produce build artifacts and run them, which I don't need to sync back to my machine.

crummy · 4 years ago
Jetbrains Projector seems to be their solution. It runs the IDE on the server, and renders the GUI in a browser. Seems experimental so far, I'm running it at home and it's surprisingly far along but still ... Kludgey? A great POC.
bootlooped · 4 years ago
I agree 100% that being able to work on a project that actually lives on a remote server, or on Windows subsystem for Linux, or in a container, is a killer feature. It's really awesome. It still wasn't enough to tear me away from GoLand though. I hope JetBrains implements something similar, I think they may have done so already in a limited way for certain languages, but it's not on VS Code's level if I recall correctly.
newlisper · 4 years ago
In my opinion, the Emacs/Vim communities clearly missed a golden opportunity for a more larger adoption.

They just copy their init.el/vimrc to the server, Emacs/Vim users have been able to do this (coding on remote environments without all the kludges) since forever ;) and personally, I find it superior to vscoce's remote plugin since your editor and tools sit on the same machine.

For GUI editors, I agree that vscode's remote development extension is a killer feature and nothing can't match it today.

unchar1 · 4 years ago
> They just copy their init.el/vimrc to the server, Emacs/Vim users have been able to do this (coding on remote environments without all the kludges) since forever ;) and personally, I find it superior to vscoce's remote plugin since your editor and tools sit on the same machine.

Unfortunately this doesn't work well if your connection has a high latency though, which I think is what VScode does really well.

rcrisan · 4 years ago
Fully agree. Also, if you need to debug your code that runs in kubernetes pods, VS Code also smokes other IDEs. In my case, not only the API calls are forwarded from the cluster to my debugging session but I can also consume during debugging some Kubernetes services by using their DNS names. Just awesome.
mech422 · 4 years ago
I'm the same - editing remote code is required - full stop. Of course, VS goes further.. But all I really needed was remote projects with intellisense. Remote debugging, git, and everything else are just bonus.

I run my editor on my desktop, and expect to be able to work on whatever remote server I need to.

bostonvaulter2 · 4 years ago
Do note that the remote containers extension is not open source (not that we're entitled to that or anything, I just wanted to point it out).
skohan · 4 years ago
> The key technology here is probably the Language Server Protocol

I've been working on an LSP implementation lately, and I have to say so far the reality falls short of the promise. I feel like what LSP should be is a clear, simple interface for implementing IDE-like features for any language, but my experience is that it is incredibly arcane and difficult to use.

The main issue is the documentation. It has a high-level intro about what LSP is, which is basically marketing, and then it has some sort-of details about (maybe) all the interfaces supported by LSP. But I was sorely lacking that "middle" documentation about how to practically get set up and do things. I had to piece a lot of things together through blog posts, and reverse engineering mature LSP implementations like rust-analyzer. And the documentation you do have of the individual interfaces is kind of weird. Like LSP is a JSON-RPC protocol, but documentation of the objects involved is all C# code, which is never really explained. And many of the concepts, like what a 'code lens' is, what properties it has, and how it would appear in an editor are never explained, so you just have to look up VSCode documentation to figure out what any of this means.

I feel like LSP is sold as a general framework for IDE-independence, but working with it feels a lot more like you've just given access to some of the internal API's in VSCode via JSON-RPC, and other editors have just adapted to this.

LSP is a great concept, but I can imagine if you really approached this problem from scratch, you could probably reach a much better, more sensible result.

Dayshine · 4 years ago
As someone who wrote an LSP implementing server 2 years ago (when the documentation was even less complete), I can't really relate to this.

As far as I know, the LSP specification only accepts PRs once there is a reference implementation. So you can literally just run VS Code with verbose logging turned on for the reference language server and inspect the communications.

I did my learning by literally following the VS Code guide (the reference implementation) https://code.visualstudio.com/api/language-extensions/progra... and implementing each feature one by one.

You simply return an object following the interface and features magically work. It's wonderful. I added the "Outline" feature in VS Code, and the similar feature to show all symbols in a file in vim in about 2 hours.

> And many of the concepts, like what a 'code lens' is, what properties it has, and how it would appear in an editor are never explained=

Well, no, because they're not specified. How vim displays a code lens might be very different to how VS code does.

skohan · 4 years ago
> As far as I know, the LSP specification only accepts PRs once there is a reference implementation. So you can literally just run VS Code with verbose logging turned on for the reference language server and inspect the communications.

“You have to run VSCode to reach a working understanding” seems like a pretty far cry from the stated goal of the project of decoupling the language features from the code editor to me

bostonvaulter2 · 4 years ago
I wish they would provide a machine-readable version of the specification: https://github.com/microsoft/language-server-protocol/issues...

Well that and use utf-8 string indexing (which is easier for every other language than javascript): https://github.com/microsoft/language-server-protocol/issues...

sidsidev · 4 years ago
Marketing-level docs and then fine-grained API docs sounds very MS.
skohan · 4 years ago
I would be happy with fine-grained API docs but there's no JSON-RPC spec I could find
bostonvaulter2 · 4 years ago
As an aside, do you know of anywhere for Language Server implementors to gather and swap stories?
skohan · 4 years ago
I don't, but I would be happy to know about it if such a space exists
matsemann · 4 years ago
Most of this post is just speculation like "I seriously doubt it will work well in an average cafe though" without much substance. Either test it or report on it, or at least discuss its shortcomings based on some technical merits. And frankly I don't care how well it works on "spotty café wifi". If the wifi sucks I wouldn't sit there and work anyway.

As for the language server protocol, nothing stops IDEA from doing the same. But while technically cool, it really doesn't matter as long as my programming language of choice works. I don't care how it works. In my anecdotal example, the community made Elm plugin for IDEA was even for a long time miles ahead of the one for VSC.

monsieurbanana · 4 years ago
> Most of this post is just speculation like "I seriously doubt it will work well in an average cafe though"

Meh. I don't think that's his main point. The two advantages of vscode he points out are:

- browsers, and by extension Electron, are the best funded cross-platform GUI

- vscode offloads language support to compilers (or other third-party tools) via LSP (Language Server Protocol)

Electron apps are... slow craps. But it seems to be a problem of implementation, as vscode is slick and fast. In my own anecdotic experience, faster than IDEA.

As for LSP, you don't care how it works, since it works now. But will it support as many languages as vscode in the future?

Sure, that's speculation, but he gives a sound argument: it offloads the burden of maintaining the language integration to the community at large (or even to the language team itself). By creating a LSP server, you add support for vscode, vim, emacs, or even... Intellij. Hard to pass.

LSP support on Intellij is a community plugin, far from first-class experience. And if it does become first-class, why then would people choose it over vscode? If both are LSP based, vscode is faster, free, and extensible in the most widely used language.

And here's something less speculative, editor usage from stackoverflow surveys:

- 2017[0] -> vscode 24.0% intellij 23%

- 2018[1] -> vscode 34.9% intellij 24.9%

- 2019[2] -> vscode 50.7% intellij 25.4%

Disclaimer: I don't think LSP is great, yet. Most of the servers are still rough around the edges, but as an emacs user, I have big hopes for them.

[0] https://insights.stackoverflow.com/survey/2017#technology-_-...

[1] https://insights.stackoverflow.com/survey/2018#development-e...

[2] https://insights.stackoverflow.com/survey/2019#development-e...

arcturus17 · 4 years ago
It's important to note that IntelliJ is not Jetbrains' only product. PyCharm has seen a very significant growth during this period too (7.7% -> 13.4%), although PHPStorm has decreased (11.6% -> 7.6%).

Regardless, I find it remarkable that IntelliJ hasn't lost an inch of ground (it's even made modest gains) despite VSCode's explosion.

matsemann · 4 years ago
Why is it an advantage being Electron? If anything, IDEA is also cross-platform. As for speed, VSC is faster as a text editor, but not that much faster for IDE stuff if you try to use it as that. Even slower some times, maybe LSP incurs some overhead IntelliJ don't have to do.

While I get the point of LSP, as I wrote in another comment an IDE is much more than understanding the AST of the language and providing autocomplete.

I don't get your point about usage. What is it supposed to show? Even though VsCode is growing fast, JetBrains products are also growing and thus has a merit to them?

charrondev · 4 years ago
One of the things that baffles me is the rust-Lang support.

Rust-lang has an official dual-licensed MIT/Apache language server protocol implementation (RLS) under active development. In my view it’s currently a better experience than the custom IntelliJ one.

Instead of collaborating though I see IntelliJ continuing on the path of their custom implementation. Every week RLS gives an update on their progress and so does IntelliJ on their rust plugin, but it just seems like so much duplicates effort.

specialp · 4 years ago
Besides Typescript, I haven't seen any language server do better in syntax completion and introspection better than the JetBrains equivalent. They probably don't want to work on it because 1. If they write their own they can make it work to exactly what they need, and 2. They would probably not leverage as much working on the OSS version as they'd lose by open sourcing and doing the bulk of the work on what makes them money. That might sound cold but it is not unreasonable.
tsimionescu · 4 years ago
JetBrains have always developed their own language analyzers from what I've seen. I would bet they have a clear API between a language analyzer and their suite of refactoring and code navigation tools, and it would probably end up being similar to work to support that API through an open source variant VS building their own.

Not to mention, JetBrains typically are at the forefront of IDE support for a language, they start working on it before there are any open source tools around to base work off of. Even with mature languages like C#, the JetBrains C# language backend predates Rosslyn by a good decade I think.

nyanpasu64 · 4 years ago
Do you mean rust-analyzer's good experience and progress updates? RLS is in maintenance mode and deprecated in favor of rust-analyzer.
dagmx · 4 years ago
I use both VSC and CLion, and CLion is a much better experience for Rust IMHO. I know the IntrlliJ only plugin is kind of lacking versus the CLion feature with regards to debugging, but overall I find CLions support to be miles ahead of rust analyzer for stability, speed and ease of use.
pirocks · 4 years ago
A few years ago I contributed to an Intellij plugin with significantly less resources than the rust one. What became clear there was that external tools are glitchy, laggy, frequently crash, and don't quite match Intellij's model of things, native Intellij support will likely always be better.
surajrmal · 4 years ago
There is nothing inherently wrong with solving a problem multiple ways. While it's usually good for smaller players in a space to work together, I'm always happy to see others that trod their own path. They can make different choices/tradeoffs, and learn from each other. This usually leads to better outcomes for both of their user bases.
sgeisler · 4 years ago
> Instead of collaborating though I see IntelliJ continuing on the path of their custom implementation.

I haven't checked in a while, but RLS was sub-par for a long time (feature- and latencywise). Tight integration has its benefits if you can afford it (and apparently they can). So I guess as soon as they can get the same properties from RLS as from their own implementation they'd switch. But if it meant having to rewrite a lot of stuff that suddenly also becomes available to competitors that seems like a dumb move.

matsemann · 4 years ago
I can think of multiple reasons they may prefer doing it themselves: Differentiation, if they just reuse the same thing everyone else does, they will have no moat or extra features. Or maybe because the language server protocol cannot handle everything IDEA normally provides, so they will have to run some kind of parser etc. on their end anyway. Or that interfacing with an external tool can be buggy or have weird boundaries making certain features harder to implement.

Deleted Comment

dgellow · 4 years ago
> And frankly I don't care how well it works on "spotty café wifi". If the wifi sucks I wouldn't sit there and work anyway.

Obviously the author cares about it. It’s basically an article from a personal blog, what makes you think that the author should write for your own use instead of theirs?

They are sharing their thoughts on the topic, and that’s it.

superdimwit · 4 years ago
Exactly, and I don't see how it would work any less well in a to café than VScode remote SSH.
nonbirithm · 4 years ago
I don't believe that there's anything preventing VS Code from getting features like refactoring at the level of JetBrains at a fundamental level. One time I wrote an IntelliJ plugin that exposes an LSP server so Emacs could run Jetbrains' refactorings remotely, as a glimpse into such an ideal.

And at a philosophical level, I would imagine that having those IDE features in VS Code at Jetbrains' level of polish would be viewed as beneficial to everyone involved.

The issue is that on one hand you have an entire salaried dev organization whose sole purpose is to create the best IDE possible, and on the other you have a scattered array of open source devs who only work on the polish as much as they have free time. LSP simply came too late to the party. Everything we like about IntelliJ is now both battle-tested from thousands of man-hours of development and also impractical to architect as a separate language server. The more people that use a hypothetical JetBrains-developed language server, the less editor market share they retain.

Another hypothesis I have is that since some language servers are supported officially by the people who develop the language itself, their time becomes split between working on the language and maintaining the LSP support. Any extra time spent on one separate project takes away from the other.