Hacker News new | ask | show | jobs
by derefr 756 days ago
> sure, there's ways to hack them to do some subset of those things, but that takes a lot of setup time

The things I mentioned (local symbol auto-complete, reference-chasing, global go-to-symbol) are things that modern code editors do by default for any programming language they can syntax-highlight. (And also, unlike with an IDE, they don't require any understanding of a particular "project" format to do so. You can git-clone any random repo, throw it at them, and they'll see a directory tree of source files and blindly index everything in it.)

> ask the IDE to do a refactor of some code, remove unused dependencies,

Honestly, I think I just... haven't ever felt the need to do these things in Java?

When I'm fixing bugs, I'm usually just rewriting one line that calls something to call something else instead. Or adding a check for an edge-case. Or wrapping a blocking call in a semaphore or worker pool. Or making something more idiot-proof by replacing a primitive `int numSeconds` with a Duration. 99% of my "coding" time for a Java problem is actually spent investigating whatever heisenbug brought the problem to me (usually after already passing through a coworker's IDE's debugger, to no avail.) The actual solution I arrive at after such investigation, is usually trivial.

Which is to say, I write Java code, but I never really need to maintain any. I'm not on the team that owns the codebase; I'm just a pinch-hitter there to quickly fix customer-facing DevOps issues discovered in prod.

And, at least for that role — which might admittedly be an unusual one for a Java project — I don't think an IDE would help me get problems solved any faster than I already solve them.

3 comments

> The things I mentioned (local symbol auto-complete, reference-chasing, global go-to-symbol) are things that modern code editors do by default for any programming language they can syntax-highlight

They can suggest some code, but they are like a dumb autocomplete. Your next sentence about understanding the project itself is the whole point - intellij can give me suggestions for my backend’s endpoints when I write the frontend, and clicking on such a href will jump to the controller.

It’s a pretty magical experience and I would even go as far that I would dare claim I’m writing Java code faster thanks to such a superior IDE than I would write some less verbose other PL.

Modern editors with good Java support, while not being full-fledged IDEs, rely on a Java language server. They don't blindly index .java files in a directory. It is also very desirable to index external dependencies.
> The things I mentioned (local symbol auto-complete, reference-chasing, global go-to-symbol) are things that modern code editors do by default for any programming language

Sure, they can. But as said, they are still quite basic stuff compared to what IDEs do. It's better than nothing, but they don't contribute to productivity as IDEs do.

> Honestly, I think I just... haven't ever felt the need to do these things in Java?

This is surprising for me, but hey, each of us are a different use case.

My recommendation is to try an IDE extensively, and then you decide what suits you better. I did this, and never looked back (for Java programming; I'm still using Vim extensively for general text edition, for example).

As someone who really likes IDE's especially since Java has such good free ones like intejilli I think they are awesome but for changing one line of code it's overkill. I often just use online editors for quick stuff if I can.
online editors???
There are quite a few different environments for online IDEs and code editors, these days. Try googling some of these: “aws cloud9” “vscode web” “GitHub codespaces”

That’s really just a small sample of some of the online editing/coding solutions. I personally run vscode locally, but maybe we’re moving towards a day where running local editors and IDEs is the exception.