DEV Community

Discussion on: Why Are Some Developers so Allergic to IDEs?

Collapse
 
moopet profile image
Ben Sinclair • Edited

I think my problem comes as soon as I hit my first snag. VCS not displaying what I'd expect? Poke around in dialog boxes for a while. Try turning it off and on again. Then... open up a terminal and fix it.

For me, I feel comfortable knowing what's going on.

I'm used to IDEs as wrappers for command-line tools, and I'm used to most of those command-line tools. When a GUI tries to make things simpler, it usually means hiding 1/3 of the options in an "advanced" menu somewhere and not implementing another 1/3 of the options at all. It's all very opinionated.

If I was developing in something like Java, I'd probably use an IDE. But I'm not.

For a couple of years I used Netbeans and PHPStorm and I've dallied with VSCode. I recognise they're good products. I've got VSCode installed and keep meaning to give it another go.

There's not much an IDE gives me over Vim, but I'm aware of a couple of things I'm missing out on:

  • little previews of values of things
  • autocompletion that's aware of context
  • syntax awareness from other parts of the project
  • that fun time everyone has when they try to put a quote mark around something that's already got one and have to do the little dance of "JUST BLOODY DO WHAT I TELL YOU" around their desk

On the other hand, we have terminal Vim, where my mind gets around my workflow. I have multiple Vims running, some of them backgrounded, some in tmux session and some on remote systems. I imagine an IDE proponent would think this was messy and disorganised, but it's my setup and I know what's going on. My bookshelves at home have a system, too. No visitor can understand it but it works for me.

I see pros and cons to each, and think they can co-exist in my life.

Collapse
 
waterlink profile image
Alex Fedorov • Edited

Surely they can coexist. I use Vim for simple text editing tasks (configuration files, just checking something quickly), and I use IDE for actual development.

You didn’t mention “refactoring” in things that you’re missing when using Vim instead of IDE. Why is that? Are you doing refactoring by hand? How often are you refactoring? What kind of refactorings do you do?

Collapse
 
moopet profile image
Ben Sinclair

Refactoring for me is generally done inside a single module. The stuff and IDE gives me... if I change the method names that are used externally I have a couple of helper mappings to sort that out for me: I hit // to find uses of the currently-being-edited function in all files and the reciprocal gD to go to its definition. I can then just do a simple search and replace.

Thread Thread
 
waterlink profile image
Alex Fedorov

That sounds quite tedious. A good name is on average achieved on the 9th try.

I want to rapidly rename methods, classes, variables, etc. so that I and my pair can work through at least half of these 9 tries very quickly.

I guess, instead of thinking about the name for a while, I love to just change it on impulse and then analyze how well it reads in the location where I was renaming it.

Without the need to do additional actions except for typing a new name, I can really iterate quickly through different names as I discuss them with my pair.

Thread Thread
 
waterlink profile image
Alex Fedorov

Now, what about other refactorings? Like: move method from one object to another, extract variable/method, inline variable/method, extract delegate object, extract parameter object, pull up/pull down methods along the hierarchy chain, etc.?

Thread Thread
 
kungtotte profile image
Thomas Landin

Vim can do all of that either out of the box, through plugins, or through custom functions.

Thread Thread
 
waterlink profile image
Alex Fedorov

The closest thing that I could find is this: github.com/apalmer1377/factorus

It’s bearable but it doesn’t have all of what I need. Are there any other plugins that enable this?

Thread Thread
 
waterlink profile image
Alex Fedorov

Also, it’s not supported for a lot of languages: JS/TS, Kotlin, Swift, Ruby are missing

Thread Thread
 
waterlink profile image
Alex Fedorov

There also seem to be this plugin: github.com/Valloric/YouCompleteMe — it looks pretty cool, unfortunately supports only rename refactoring…