Ask HN: What is the must have feature of your IDE

17 points by pedalpete ↗ HN
What are the features of your IDE that you think separate it from the rest? What can you not live with out.

If there are things you don't like about your chosen IDE, what are those?

70 comments

[ 3.3 ms ] story [ 133 ms ] thread
Smart and fast definition and reference lookups. That's all I really need but it's surprising how many IDEs are broken in this aspect.
Yeah those are definitely my favorite features, something that I think Intellij gets really right but most others don't. But my can't live without feature is Visual debugging. It reduces cognitive overhead to such a degree that it's the IDE killer feature for me.
* Syntax hilighting (any text editor can have this) * Find Resource by starting to type the filename * Follow function calls * integrated debugger
> Integrated debugger!

I used visual studio a long time ago, now any ide without a debugger seems quaint.

I use NetBeans and NuSphere (PHP IDE) both are OK. The NuSphere PHP/debug plugin is ace. You can pause, edit variables, run random commands, move execution to a different point, all sorts of cool stuff.

Also love the chrome JS debugger, it's a bit verbose for my liking, maybe that's JS having a lot of crap bundled in objects all visible by default.

I love the combination of Tmux and VI. This is because of the tight integration with the shell and the fact that I can work completely without a mouse.

Alas I am a Java guy and restricted to IntelliJ at work. It's a great IDE but I never feel as 'at home' as I do in the shell.

My favorite and most used refactoring feature in any IDE is Extract Method. It's a simple one, but I use it repeatedly when cleaning up both my own code and legacy code. My code would be much uglier without it.

Must have features for me are code completion "intellisense" to borrow a term. Proper and diverse syntax highlighting, Function/Method signature helpers, code/file navigation, and a clearly defined layout of the interface. Additionally, the IDE should have a clearly defined purpose and all utilities and support functions should reflect this. SOme good examples IMO are visual studio, and jetbrains IDEs of which I primarily use webstorm
Code jump. Intellisense. Refactoring is really sweet too, but that I can do with just find/replace (carefully).
Syntax highlighting, code completion, jump to definition and code linting, search and replace (regexps) in project... and of course a nice and, most importantly, fast code editor.

So, I use Sublime Text. Although it technically isn't an IDE, with some plugins installed (SublimeCodeIntel, SublimeLinter, and others), it works wonderfully as is if was. And it's blazing fast too.

I really love Sublime, so here are a few features which stop be from switching to apps such as Chocolat.

- Multiple Cursors, at first you think this is just a gimmick, but it soon shows its usefulness. I use this feature all of the time.

- Jump to definition.

- Useful and intuitive key bindings.

- Console output.

Would definitely add the "extremely simple" package manager to the list.
True say.

Package Control should be built in and I'm surprised negotiations haven't been made yet.

Search, Search and Replace in multiple files.
The ability to turn off features.
Well, mine is Emacs.

> What are the features of your IDE that you think separate it from the rest? What can you not live with out.

Extensibility. I can live without any other built-in features, because I can always write them myself in short order. Imagine a programming language in which you can't write your own functions. You wouldn't want to use that, would you?

> Imagine a programming language in which you can't write your own functions. You wouldn't want to use that, would you?

I think I'm going to be quoting that for quite a while to come. I'm a fellow Emacs user, and I think that perfectly sums up why I use it.

Ability to turn off anything I don't want.

Nothing distracts my focus from my core work more than the IDE doing something I didn't intend. This is especially irritating when I accidentally switched modes or put myself somewhere else with no idea what I did or how to undo it.

So I should be able to turn it off and never worry about it again.

The caveman in me loves textpad.

I use vi(m) because it's available everywhere. I have no particular opinion on whether it's otherwise better than anything else, and I kind of suck at using it.
WEll you could check out "Practical Vim" i found it tremendously helpful
Yeah, "learn to use vim properly" has been on my TODO list for about 15 years now. It's probably time I did something about it.
This Vim game helped me more than anything I'd seen in ~5 years: http://vim-adventures.com
It's pretty outstanding, but I'm kind of baffled by the pricing (6 months for $25). As already a vim expert, I clicked the pay link expecting to happily drop a one-time ~$10 and balked. Just going through the demo is likely to be worthwhile, though.
The pricing's aggressive, but I've been in chump-mode for Vim for way too long. So for me it was like, "okay you've got me, you bastard."

It was worth the money, because even small, lasting productivity improvements are that valuable. There are heaps of other ways to learn vim, but it's been a long time and I haven't done them.

Sure; I'm not convinced it's not worth it for most people! I'm just not sure how able they'll be to convince people of that, and I don't expect it's worth it for me (unfortunately).
Emacs keybindings, extensibility (that would include configurability.)

I'm an Emacs user. I don't have a very long init.el but appreciate being able to deactivate stuff I don't use, especially things like scrollbars, toolbars, etc.

Using IDEs I feel overwhelmed (too many GUI elements) and powerless (mostly because I'm not familiar with them, but discoverability is important too, see Emacs' apropos.)

I totally agree with most IDEs and even the number of menus and capabilities in Sublime Text being overwhelming or hidden.

Discoverability is important, and the ability to 'get out' of any mode easily. But at the same time, not visually overloading the user, which I think most IDEs are guilty of.

Smart completion based on type info(Intellij Idea, Scala & Java code)
Discoverability. I want to be able to download a library (through whatever means), and then figure out how to use it from within my code. I want to be able to type the name of a class, object, namespace, whatever the language has for that, that corresponds to the name of said library and then just play with it. I want docs for every method and class (or function, object, whatever) that I enter, in a tooltip, at my fingertips. I want autocomplete, not because I am too lazy to type, but because I want to call functions that actually exist. I want my IDE to tell me which parameters a function expects and what to think about when calling it.

Seriously guys, if I wanted to continuously switch between my editor and a browser with API docs, I'd be using a text-editor. If I wanted to spend 80% of my time going through badly commented undocumented source code written by colleagues or outright (friendly, OSS-contributing) strangers, I'd join a Ruby shop. I want an IDE with discoverability, and a language that supports this well.

My other must-have feature is integrated debugging. An IDE without integrated debugging isn't and IDE, it's a text editor with some plugins.

Oh gosh, I agree so very very much. Sadly, for the dynamic languages I program in most, few IDEs handle this correctly. Komodo is the closest, and even it chokes on some more advanced stuff (like IoC containers and the like, though i can get around it with annotations in the comments).

Edit: oh by the way, SublimeCodeIntel? It's a port of Komodo's CodeIntel library. I switched to Sublime entirely for a while, but bit the bullet and bought a license for Komodo IDE and use Textadept for smaller projects and quick edits (it's a nice Lua-extensible editor, with an awesome ncurses front end to run in the terminal/over SSH)

Have you tried Intellij's dynamic language IDE's? they are pretty awesome and imo much better than Komodo. Javescript/Python/ruby are all supported out of the box and there are plugins for a ton of other languages.
Yep, and for PHP, I actually disagree that it's better :) well, that's not a fair comparison, at this point I've coded so many plugins and changed the interface for Komodo so much it's as close to perfect as I can get it, whereas using IntelliJ (which is great in its own way) doesn't fit properly for me. Maybe one day I'll move over, but as it stands while IntelliJ may be better in some bits, I've got Komodo working better for me now than IntelliJ is out of the box... Sunk cost, and all that heh.
I find Intellij Idea with decompiler great for this. It searches/downloads source code from internet if exists. Otherwise it decompiles binaries.

You can debug/fix code in libraries without even realizing it.

Two environments I play with offer this. One is the slime package for Emacs (I use it with either ClozureCL or SBCL.) Commercial CL IDEs have the same features. The other one is Pharo.

In both case, it's a dynamic language, with an image-based implementation.

Correct syntax highlighting. (Ie, based on proper parsing and semantic analysis, not simple regex matching of keywords). Autocompletion. Go-to definition. Automatic, configurable code styling (i.e. AStyle). Visual debugging support (Click for breakpoints, step through code, watch variables/memory etc).
Insane-fast code completion, jump to definition, bracket/brace/quote/tag auto-closing. Just the boring usual things :)
Codejump, auto-complete, pop-up docs, error highlighting, debugger, some refactoring.
Quality debugger integration and easy navigation in code.
1. Refactoring. Mostly needed:

  - project wide renaming of functions, classes, ... inside the main editor (not through a "Refactoring dialog")

  - "extract method" at the press of a hotkey
2. Code generation to support "using things before defining them" (like what CTRL-1 in eclipse does). So I can e.g. use a class in a test that does not exist yet and have the IDE generate a stub of that class for me.

3. Automatic organization of imports. I don't want to have to lookup and type package names.

4. Everything needs to work without a mouse

cannot live without (from VS): - syntax highlighting obviously - THIS IS BIG: open IDE with unlimited number of instances. I forgot which IDE annoyed me on this one... IntelliJ? - reference lookup - intellisense - code (unit test) coverage map, unit test project integration - ability to make my own extension, add-on, macros, etc - SCM integration, detect file change and indicates which files have been changed in source panel. - code map ...

want but have not encountered: - source panel file structure that allow me to open files in different apps of my choice. detects file type. - simple, un-confusing, customizable UI - all shortcuts need to be customizable ...

Can you explain what you mean about 'unit test project integration'?

I'll have to take a look at how VS gives a unit test coverage map. I was trying to figure out a way to link unit tests to their code to make it easier (visually) to write your tests and your code at the same time in the same window and watch your tests pass in real time as you code.

Similar to the original lighttable demo, but using tests, and hopefully easier to understand.

This comment only on the first question: Ability to reverse engineer the program flow and provide a sequence diagram based on a run. THis should have the ability to specify a filter so unnecessary noise/well understood parts of the program flow can be skipped
Sounds really interesting. Are you thinking something like selecting a function/method will chain all the other functions/methods that call it and display them like a tree map?

Have you seen this somewhere already?

I'm not sure how difficult this would be to create, but I'm thinking if implemented properly, it could help in working with less/scss and show how changing a variable or class would affect the rest of the compiled css. What classes and ids would be affected, etc. etc.

I can live without vim keybindings, but it's annoying.
This might sound stupid, but I like IDEs that look good. Honestly, they all have pretty much the same feature set. I like to use applications that are pleasing to stare at for hours on end (and don't require much customization to get there).
I find most IDEs hideous and difficult to look at with so many buttons that I don't use and don't want to use.

What have you found that looks good? Sublime is ok, so is Lighttable.

I like Ninja IDE for Python. Don't have a nice looking one for Java. NetBeans is a bit less visually offensive than Eclipse.