Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: I don't use an IDE, should I be using one?
5 points by 5n 12 months ago | hide | past | favorite | 3 comments
I've been at my job for about 1.5 years, and I don't actually use an IDE. Basically I have tmux with one vim window and 1-3 terminal windows. Whenever I want to see the results of a change, I'll just switch to a terminal and either reload in a repl, recompile, or rerun tests. For things like linters and autoformatters I just manually run those things too. If I want to find a definition I'll just do some ripgrepping, or search google/github if it's in non-internal libraries. If I find myself jumping way too much I'll generate a tags file.

Am I leaving a ton of productivity on the table? Most of my coworkers use something like vscode, or at least hook an lsp server onto their terminal editor. On the other hand, I don't feel significantly less productive, and a small handful of coworkers seem to do the same thing. In fact, it feels kind of liberating not having to think about a bunch of tools; when diving into a new part of the codebase I can just start grepping away. I also feel that not having an IDE forces me to build a detailed mental map of the codebase.

For reference, I'm 23 years old, mostly working in C++, Python, and Haskell, and a touch of JS. I imagine I couldn't do this for everything, particularly platforms highly integrated with a specific tool like mobile dev, unity, or fpga.

I have an IDE, but I keep going back to essentially the same setup you have. I find that GUI IDE's tend to try to be too many things at the same time. I like having nothing on the screen that isn't directly related to what I'm doing, and I strongly dislike ribbons of things I could click on but rarely, if ever, do.

BTW: depending on your workflow, and the type of code you are writing, you might find gaze interesting. I occasionally use it when programming something meant to run from the command line. That way I can see the progress without a whole lot of clicking to another window and "up-arrow" to repeat the same steps over and over again. https://github.com/wtetsu/gaze

I worked without an IDE for many years. I switched to an IDE when debuggers became reasonably seamless. My debugging cycles are much, much faster with an IDE. (Technically you don't need an IDE to use a debugger, but they're often linked.)

Having switched, the main use is refactoring. I can make codebase-wide changes correctly: I don't miss anything, I don't cause type errors that have to be tracked down, and I don't accidentally drop something or move a close brace that gets covered up in the reformatting.

There are a bunch of other things. It's nice being able to find the definition of a function rather than grepping for its name so I can pick out the declaration from amongst a mountain of invocations. It's nice to have it remind me of what order the parameters go in. And so on.

None of that prevents me from using vi and emacs, which I do sporadically. I don't forget how to debug with print statements. If I sit down at a new environment without an IDE installed I'm not lost.

I do wonder if being 23 affects your perception of this. The biggest benefits of IDEs come when you're working on large code bases with multiple developers contributing together. You simply can't maintain a detailed mental map of the entire codebase, if for no other reason than that things change out from underneath you. Not every developer will work on teams like that, but if you're working primarily on solo projects now, you may discover as your career progresses that you'll want to adopt new habits.

Every developer should be able to work without an IDE. But most of the time, they will be more productive with one.

I don't use an IDE either. I use the CLI, involving a text editor, then gcc and gdb via Makefiles. To that end I have 4-5 open xterms and a browser window for searching references.

An IDE would add another layer of complexity and just get in the way.

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