Hacker News new | ask | show | jobs
by dpatriarche 3214 days ago
I love Eclipse for working in Java, and I love IntelliJ for working in Kotlin.

My impression is that people who don't like IDEs haven't put the effort into figuring out how to use them effectively -- modern IDEs have incredible power to increase productivity, but you have to learn how, and you have to make some accommodations in how you work.

I say this from experience: I started my career coding C/C++ in Emacs and I didn't get the fuss with IDEs. Then 10 years ago I started working in Java in Eclipse and I realized what I had been missing. But in order to realize the full benefit of the IDE I had to adjust to how the IDE wants to work, e.g. spend time configuring the automatic code formatter, and let go of some of my formatting quirks that the automatic formatter couldn't handle.

2 comments

My general experience is that Java needs an IDE because the language forces a bunch of boilerplate and a file/directory structure that is very difficult to navigate without a bunch of tooling. However, in other languages, the gap between the IDE experience and the well-configured vim/emacs experience is much narrower.
I programmed Java for 15 years in mostly eclipse. The past 3 years I've been doing go in vim. Just recently I switched to Gogland for go, which is a full blown IDE. It's been life-changingly good. I forgot just how nice it is to have proper tools that just work. So even in a "simple" language like go, an IDE can make a huge difference if you care to learn it.
I've had mostly the opposite experience: I've used vim and emacs/evil-mode for 10 years or so now and now, since my day-job involves lots of pair programming, I've had to use tooling that other people are comfortable with (e.g. Atom/VSCode/Intellij) and, the only places I find a clear win over my old tools are places where I rely on Intellij's features (auto-implementation of interfaces and other boilerplaty issues with Java). When I've worked in Javascript/PHP/etc., I've never found the overhead of an IDE to be worth it.

Also, I haven't written much go, but my general impression is that the language trends on the verbose side because of the lack of things like generics and it's error-handling strategy, so I'm not too surprised that it's more pleasant to use an IDE for go than it is to produce it manually.

Also, most of my side-projects are in Common Lisp and, I've yet to find a "mainstream" programming environment that's more pleasant to work with than my SLIME/emacs setup for writing CL.

Unless I misunderstood you, this does not sound like the opposite experience, but the same experience. You say that (for Java) you found the IDE, IntelliJ, better than the editors vim, Emacs, Atom, VSCode.
No I was saying that I found that certain kinds of languages (verbose, boilerplate-y languages like Java) benefit from an IDE to automate the boilerplate away while more concise languages (like Common Lisp or Haskell) benefit very little from having an actual IDE vs. a simple text editor.
Only because IDEs in other languages are weak as hell. It is not directory structure/boilerplate. It is code completion, analysis, discovery and all other similar goodies. It is just so much slower to produce the same functionality as you are used to.

Even basic things - ability to see all callers, all available methods, warnings on bad constructs and yeah, templates for often needed sysouts ...

Refactoring. Oh just a simple thing, like simplest of all available refactorings, rename something with zero worries about forgetting some place or changing one more ... I missed this ability so much ...

I can generally use macros in vim + vim integrations for things like ag or rg to do refactorings fairly easily: sure, it's not as automatic as Intellij, but it's not bad either.

Also, depending on the language, the tooling in Emacs can get all the other IDE features you are talking about: for haskell there's ghc-mod + intero, for common lisp there's slime, etc. if you install the appropriate plugins and then use something like Syntastic/Flycheck, you can have all the nice editing abilities of vim/emacs as well as most of the useful parts of an IDE's language support.

Eclipse for Java is ok, but Eclipse needs and lackluster made me write many emacs lisp extension (and not because of eclipse ergonomics, for handling build time parameters), that says something.
I have to use eclipse for my work, and as lifelong intellij user eclipse is awful awful awful. It takes the fun out of working.
Eclipse had issues, everything has issues, but it's been awful for years. I don't understand how they keep going.