Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Out of curiosity, what is it about an IDE that you find useful...? I'm probably just a heathen, but I've always done the build/run steps on the command line, and Sublime has LSP for all the syntax & semantics goodies other than that -- like for Python, I've got Ruff (syntax), Jedi (semantics), and CoPilot (autocomplete) running happily, with what I feel is an impressive amount of configurability.

Are people just working on more complex software than I am so you need the build steps hidden behind a UX, or am I missing some killer IDE feature that I don't even know about?

EDIT: It probably helps that I'm a vim die-hard and couldn't imagine clicking on something to rebuild the program! And Sublime's Vim support is better than any real vim program I've ever used, much less the half-hearted versions available in the IDEs I've tried. Maybe that's the main disconnect, and y'all just prefer having dropdown menus?



For me, it's:

* Automated type-based code navigation: go to definition, find all uses, etc.

* Auto-complete: Personally, I prefer simple auto-complete based on static analysis over AI "hope for the best"-style auto-complete.

* Debugger with all the bells and whistles: Step in and out, inspect variables, modify variables, breakpoints, conditional breakpoints, etc.

* Automated refactoring: Rename, etc.

Most text editors can do most of those, but I find that good debugger integration is rare outside of a dedicated IDE.


IDEs can have just as powerful keyboard shortcuts. IdeaVIM within Jetbrains is probably the most feature complete vim emulation?

What sets IDEs apart from trying to convert an editor to an IDE with a bunch of plugins is:

- somebody somewhere is hopefully sitting down with a cohesive vision of tying these tools together, instead of an assemblage of plugins each with their own visions. I would very much prefer to use their vision (a la macos/windows/Ubuntu) vs trying to configure each plugin to my own (arch/Gentoo). It could be an age thing, but at this point I really don't have the enthusiasm to become an expert at 12 different config file syntaxes and read the docs for all the options for each plugin i would need to tweak.

- an IDE is all encompassing in certain ways that is amazing. For example, Jetbrains is not only a fantastic code editor/refactoring swiss knife, it also has excellent git integration, and can leverage the same code navigation capabilities within diffs and PRs. It will autostash in branch specific stashes, and I can visually browse and diff these. I can attach to databases and get full SQL query and view capabilities, so it isn't just about general purpose programming languages.

- it can be hard to explain to people who haven't used a language specific IDE, how much further along its refactoring capabilities are compared to any LSP. Note that this applies much more to Java/C# than to something like python, both because of static typing and decades of investment.

- as an example of integration, say you add a new function in a file. Not only does Jetbrains highlight the modified file in the Git commit panel, but the structure panel will actually color that function differently and so on.

- due to widespread use of Jetbrains in certain communities, people will build valuable plugins to relatively niche things. So Jetbrains has excellent CMake support and decent Bazel support.

- I like the keyboard, but I also like and acknowledge that the mouse is much better at certain things. For interactive reading, I like I can right click on a commit and say "rebase from here" instead of looking up, copying and posting the red into my git rebase -i command. Conflict resolution, line by line inclusion etc. is also easier with a mouse.

I am very competent at the command line, but beyond a certain project size, IDEs just make sense to me.


You didn't mention debugging (breakpoints, step through, inspecting variable values at runtime). If you are writing code and aren't doing these things, you probably should be!


Not sure if you are facetious or not, but here's why I use an IDE.

Many years ago I saw an advertisement about some cooking tool. This old East Asian grandma, ninja grandma looking, was doing some prep work for some dish. She stops, looks in disgust at the tool she was using and says "this is meant to bring joy, but this is not bringing any joy". She then switched to the "better" tool and all was good with the universe and much joy for everyone.

This is why I use the tools I use, because they bring me joy. There is an argument to be made that I use some of my tools because they bring me less sadness, but oh well.

I use vscode because it brings me joy, nevermind that I use less than 10% of its capabilities (eyeballing). I compile, run tests, use source control in Windows Terminal, because Windows Terminal brings me more joy than the vscode terminal.

I use a cage on my photo camera because it brings me joy. I use a Peak Design sling because it brings me joy. I use my Lowepro sling bag, that I got as a bonus after buying a cheapish tripod, because it brings me joy. The next version of my bag, size wise, it's a proper backpack, now I'm planning to get one and see how the joy levels are.

You use whatever you use because that brings you joy. You can try and rationalize this in any way you want, at the end of the day, the amount of joy is the only real reason you use what you use. Whatever we use doesn't make us better or worse, it makes us human.


"Out of curiosity, what is it about an IDE that you find useful...?"

I really don't understand this question. It is like asking "What is it about SolidWorks that you find so useful"


Well solid works does things the command line can’t. After all these amazing answers, my main takeaways for “what can an IDE do better than terminal+text editor” are:

1. Debugging right in the code, rather than in an ugly terminal copy of the code next to it (sounds nice!)

2. Better semantic features in language-specific IDEs (autocomplete, refactoring, etc).

Certainly those things sound nice, but I hope you see how they’re not essential!


After getting used to them they FEEL essential.


couldn't imagine clicking on something to rebuild the program!

Do you really think that's how people use IDEs?

I've never used an IDE that didn't have comprehensive keyboard shortcuts, and I don't remember one that didn't allow customization of shortcuts.


I assume they mean they build their projects by typing in the terminal commands directly, not that they have vim rigged up to build stuff via keyboard shortcut. I don't think most people use their IDEs like a text editor with a built-in terminal.


Some of us have jobs and do this professionally, not as a hobby. That’s why we use an IDE. Vim is a fun toy where you can hack together a poor man’s IDE but I grew out of that phase a long time ago.

In some cases we are forced to use a specific IDE. Not optional.


An IDE is largely just a wrapper over terminal commands plus a set of language-specific editing affordances. If your language has a good LSP, vim (with a few plugins) can be all you need in a professional setting.


You could also say that a command line terminal is just a wrapper around the OS's process start function.

But in all seriousness a good IDE is much more than a text editor and buttons which run terminal commands. The main thing a good IDE has is a good debugger, which not only allows for stepping through code easily, but also shows the values of variables, memory, registers, in one easy to use interface.

If you don't use a debugger then either you're only building very simple programs, or you're stuck in some sort of special hell when it comes to debugging.


Oh, true, debugging affordances as well. You can also use a debugger from the command line, though—the IDE is wrapping terminal commands, or at least wrapping a library and providing functionality equivalent to that library's terminal client.

I never got in the habit of terminal debugging, but I'm sure some people prefer it over using a GUI. I'm that way for git: The command line interface is unintuitive, but I've gotten accustomed enough to it that it feels comfortable.


This doesn't track (my) reality and I want to signal to others that this type of development is perfectly viable.

I have a normal job using go + angular/react, lots of databases (postgres) and lots of bare-metal OS shenanigans. I use Vim with 2 plugins. One fuzzy file finder and one for integrating with go.

I've used the JetBrains products daily for many years. These are very slick and I basically regard them as works of art, but I ultimately don't need them (anymore?).

It took many years to get the vim movements into the core of my being and this was indeed quite an investment, but my hands usually move the code now. Sometimes I can just watch them shifting blocks around as I'm barely conscious anymore of the actual physical movements themselves. This sounds like satire I'm sure, but I'm dead serious. This is actually a thing that exists. Not fundamentally different from being unconscious of the key presses when touch typing.

Once you get to this level of familiarity with vim, the shell and the entire Linux or BSD ecosystem things really start to fly and the need for an IDE quickly fades into the background. It is at that point that "why do you need an IDE?" because a serious question.

(Of course this is all moot if you are embedded in a highly specialized ecosystem with its own tools and ways of doing things.)


Yes it depends on what exactly you are doing.

IntelliJ enables quick refactoring of large JVM projects without messing with language servers. It's all integrated and just works out of the box.

IDEAVim plugin provides the Vim keybindings and the Vim editing mode so it's the best of both worlds for me.


lol, this is a good one, made me smile! I’ve definitely met coworkers like that — you nailed the parody 100%. So ridiculously condescending, and yet so common!


OP thinks IDEs are toys. I think Vim is a toy (beyond its functionality as an editor where it is definitely not a toy).

I've been using IntelliJ for at least 10 years now.

If you have used it, you know what I'm talking about.

IDEAVim plugin provides Vim key bindings and Vim editing mode, so it has the best of Vim and an IDE in one application.

Refactoring and navigation in IntelliJ is superior to whatever you can hack together in Vim. You can integrate Vim with a language server but then what's the point? Just use an IDE.

At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software. Vim is not an option.


You can only use IDEA when you need to do major refactoring or debugging, which isn't that frequent on average. There's nothing special about navigation in IDEA that text editors can't do.

IDEs aren't perfect - they often have performance issues, new bugs with every update and do confusing things like marking completely valid code as errors. One of the reasons why I stopped using IDEA after many years of being a fanboy is that I found these unexpected behaviors and bugs getting in the way of actual work. For example, you might reopen your project in the morning to find out that everything that worked perfectly in the evening is suddenly broken, and then you have to spend half the day reinstalling previous versions of plugins and cleaning caches. While editors might be a bit simpler, they're always works reliably.

>At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software.

yes, sometimes is no any choose.


I kind of share your view, but on a lower order of magnitude: I prefer vim, but now that I'm getting older, _neovim_ has come out. And of course it has all this fancy horseshit that essentially makes it look like an IDE. Things like git integration "zen mode", and what-have-you. But every time I've tried to use these "cool" plugins, they never fucking work! Like, if you show these cool screenshots, and represent that if I install them, I get zen mode, git integration, catpuccin color theme, then I expect it to just fucking work. I'm not going to sit there and PLAY with it (i.e. a toy) till I get what was shown to me. I want to crack open the tool and use it.

Another thing that always gets lost in these dev env debates is what language and use-case. I do mostly C++, and most of my time is spent going between 2 or so buffers. I'm not doing something that requires zipping across several unique files per minute. Even if I do need to change files, having a slower mechanism to get there causes me to think more carefully about what I actually need to do there. So the extra 5-10 seconds aren't fully lost.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: