Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gogones/e33d2e4a18bd9e1bfa99bc67391ca8d3 to your computer and use it in GitHub Desktop.
Save gogones/e33d2e4a18bd9e1bfa99bc67391ca8d3 to your computer and use it in GitHub Desktop.
This a comparison to help myself decide my IDE, listed in order of importance.
## Context
1. Coding in Typescript for 2 year, 3 years on NodeJS before that, 15+ years in general (mostly Java)
2. Spent about 6 months on VS Code and 6 month with WebStorm
3. Cost is not a factor (company provides JetBrain licenses)
4. What my projects look like: back-end, OOP, Typescript, Mocha, ESLint, pnpm and monorepos (~15 packages, ~300 files)
## WebStorm does better
1. Knows what's going on with your code (Typescript Language Service has been adding refactory actions so gap will be closing):
1. Auto complete is better, doesn't show junk or get lost but often Typescript's language servere has better suggestions (especially imports)
2. Refactories are far from perfect but much better
3. Shows gutter indications for methods overrides/implementation with navigation
4. Finds usages, references, implementations, etc
2. Shows errors across the project much better (VSCode has a passable feature in preview)
3. Local history works even for folders, including deleted file. You can even select a portion and check history for that only
4. Better keyboard support if you are keyboard-driven (but see note for VIM users in the next section)
6. It keeps better track of processes on terminal: never had a rogue process linger after some failed debug session for example (but see note on terminal integration in the next section)
7. Many cross-file dialogs (recent files, global search) allows you to edit files from the preview boc which is super handy
8. All the small attention to the details:
1. All dialogs keep context: if you search globally, or a symbol, whatever, when you pop up that dialog again you can pick it up from where you left or just start typing to do something new
2. Drag and drop breakpoint: if you use conditional breakpoint you'll appreciate this one
3. Replace text allows to keep case: replace "someVar" with "anyVar" knows to replace "SomeVar" with "AnyVar"
## WebStorm does worse
1. Can't set shortcuts based on context: for example set F5 to start a debug session or resume if already in debugging
session. This is a huge downside:
1. Severely cuts the number of shortcuts you can have without resorting to crazy combinations and twisting fingers
(slow and not ergonomic)
2. A lot more cognitive load, when there could be intuitive contextual shortcuts (e.g. F5 above)
2. Not great terminal integration: it can't intercept commands and attach debugger for instance. You have to either
define a task or a npm script. It does have a pre-defined set of commands like `open` and `npm start` (oh, you are using
pnpm? sorry)
3. Only auto-import bare specifiers with no subpath: VSCode will auto import fs.promises.readFile if you auto-complete readFile
4. During debug, you can't copy values from tooltips when hovering variables. Super annoying and seemingly easy fix
5. Doesn't handle circular symlinks well: deleting a folder fails and you have to trye it twice, copying causes a loop
6. npm scripts are not auto-discovered: on VS Code it scans your project for it, on WebStorm you have to add it
7. Limited plugins: lots of ancient, abandoned plugins but you don't need as many either since there's a lot built-in.
1. Deserves a bullet point of it's own: IdeaVIM is a great plug-in but is way behind VSCode's neovim, which offers actual neovim experience (along with plugins) via buffer sync
8. Tons of feature requests open with no traction, horible in-house issue tracker (YouTrack), covering stuff I also found laking
9. Probably bugs:
1. For typescript in particular, it sometimes doesn't show errors from language server on tooltips
2. It will autocomplete from my build folder, even if excluded
Conclusion (WIP)
* If I had to pay for WebStorm, I'd probably go with VSCode. Seems silly but it's not about dollar, it's the fact you'll remember you paid for a closed-source product each time you face a bug or annoyance
* If you are big on vim, VSCode plugins are better
* I generally find it more pleasant to code on WebStorm, with some annoyances. I'm usually annoyed coding on VSCode, with some pleasant bits
* Me, I code with both open =/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment