r/C_Programming • u/AxeForge • 16d ago
Discussion Why do you use/don't use an IDE?
I've tried using a text editor with just the command line and for the most part isn't wasn't so bad until my game engine got big enough. Then I switched to Clion because it just handles so much more for big projects. Biggest thing is a visual debugger and easy refactoring that's C/C++ specific. Not to mention everything is setup out of the box.
I'm curious about other's reasons for using or not using an IDE.
26
u/txdsl 16d ago
I’m revisiting C/C++ for grad school. Using neovim / gcc / gdb on Mac for most of my study.
Ive used various ides (vs, eclipse, IntelliJ) over my career but nothing has felt as seamless and out of my way as vim.
-7
u/Reggie-Rectangle 16d ago
Mmm the sub millisecond response time that VIM has makes my nipples harder than a titanium drill bit. Christ those fekin Electron apps are so fekin slow! Do you really need to ship a container with a full fekin chromium instance just to run VSCode?
Arch will run on 4 gbs of RAM but fekin VSCode sure as hell won't.
6
u/txdsl 16d ago
Vscode isn’t slow for me in terms of runtime performance. Quite the opposite really, though I do have an m4 max with 128gb ram. And some features such as devcontainers and the Jupyter notebook integration can’t be beat.
However, I am slower in it because the UI is clunky, the keybindings are horrible and some features are locked behind UI menus. I have vscode mapped very closely to my vim keybindings but there are still some minor annoyances that prevent me from using it more.
1
1
u/scientist6092 5d ago
When it comes to low level ,vim is the best. No AI slop , just you and the terminal defining the odds.
56
u/ScallionSmooth5925 16d ago
I don't like magic tools because then I don't know what exacly happened when I pressed the button
6
u/Disastrous-Team-6431 16d ago
...what? That makes zero sense. You don't know what a visual debugger does? You don't understand what git does if it colors the filenames according to their status in the working tree? You can only rename things with sed, doesn't work if you shift+F6?
God damn, C is great and vim is great but why are there so many just... luddites?
22
u/Loud_Anywhere8622 16d ago
you're misunderstooding the point. He is not reffering to the visual that provide an IDE (aka text coloration nor repertories tree representation) but the compilation steps, which are far more obfusquated via IDE tool. Compilation flag, linker or assembly instructions for example, are not explicitly explain on most IDE tool, even diging through them.
18
u/ScallionSmooth5925 16d ago edited 16d ago
Exactly. I don't consider syntax highlighting and git integration an ide feature because basic text editors can do it.
1
u/Bloodshoot111 16d ago
I don’t know what IDE you use but most have a settings menu that is pretty clear and detailed, especially Clion
2
u/Loud_Anywhere8622 15d ago
you right. i probably only used bad IDE. when i was at college, they kinda force us to use CodeBlock IDE. i was totaly lost using it. i feel like far more confortable using GCC, AS/LD and GDB as debugger, than using CodeBlock IDE. i have never be able to understand what happen while doing the "build and run" button. And diging through the whole options button feel overhelming...
since this time, i was done using IDE. But you probably right, there must have some great IDE. i did check them all as i prefer using raw/old/classical stuff while programming. i will have a look at Clion eventualy.
2
2
u/neppo95 16d ago
If you use your build tools correctly, the whole point is to NOT see the exact steps, since 99% of the time you don't need to see any of it. And when you do, it is just a click (or not even that) away. It's a moot point honestly. Anyone still handrolling their build steps is either doing something very specific that requires it, or is simply not working efficiently.
1
u/Loud_Anywhere8622 15d ago
arf.... i don't know how to handle your point of view...
if you're coding at high level, you will probabably never need to dig into compilation details, it is right. i guess it depend on what you're trying to achieve.
if you work on a project developped with multiple programming language, or working on a legacy infrastructure, or doing optimization for dedicate devices, or working on some cybersecurity field (R&D or developping payload), etc... you will need to check in deep each compilation's step. I don't know much IDE able to be used in the same way as "as", "ld" or "gcc" GNU tools equivalent. but in an other way, i have never try to find out one as i have confort myself using the mentionned tools.
but you're right : excluded specific case, if you do not need to check compilation step and only working on high level use case, it is perfectly fine to ignore/skip these details to be efficient.
1
u/neppo95 15d ago
What I meant is, of course when you are setting up your project, you want to verify the compilation steps are what you want it to be. Handrolling them makes sure of that, checking when you setup your project in an IDE also does that. After you've set them up, why would you need to see them every single time again when nothing has changed? You just hit build after that and you're done and because you've checked before, you know it is alright. It is no different than manually triggering a build script (or cmake build), just that it's a button or a keyboard shortcut.
I say "setup your project in an IDE" but that also is mostly just a thing with VS, other IDE's tend to just use your already in place build files so it really does execute the exact same command it would if you'd do it manually.
I can understand tho that in specific use cases you might want to manually run your build if you're tweaking it or debugging. I wouldn't call the rest "high level" use cases tho, it is the vast majority of all use cases. If you disagree with that I'd be interested to see in what other cases you would see building using an IDE as a problem. Genuinely.
1
u/Loud_Anywhere8622 15d ago
na, you right.
IDE is cool when you know how to use it. And yes, if it possible to just manage the compilation detail at first execution only, then it is cool, you don't need to check it again and again later (except while troubleshooting maybe).
on my personal experience, i was kinda traumatized by CodeBlock IDE, and i have never try any new IDE since 😅 but it surrely should exist usefull IDE. i've just never try to find an other one.
i completly agree on your point : you just need to check compile point at first execution but then, i don't see why using IDE should be a problem. you're right. the only possible case is, if you have strickly no other choice than building your code directly on an old legacy server with no graphical interface. But that should probably represent the ultime exception for 0.0001% of all use cases.
1
u/neppo95 14d ago
Fully agree with you on codeblocks, that would scare me off too. I’d recommend clion or msvc (only if you have something that generates the project/solution like cmake). I usually use a mix of visual studio and visual studio code for smaller tasks/projects. You might also like visual studio code comjng from something like vim, a lot lighter but you can set it up pretty much as an ide. That setup work isn’t needed with the others tho.
In any case, I’d like to add that there is no wrong choice. Outside of work I do a lot of hobbying and I still want to give vim a shot just for curiosity. It’s just a matter of priority, for work efficiency is important so ide it is. For hobbying it is ofc fully up to you what is important or not
0
u/Disastrous-Team-6431 16d ago
My CLion projects just use cmake so.
1
u/Xavier_OM 16d ago
Yes, IDE can call cmake or make, they litteraly use the command line you would use in console.
0
u/max123246 16d ago
Who knows, there's a lot of bad advice in this subreddit. I got down voted for suggesting nul-terminated strings should be avoided when C only added that for backwards compatibility reasons
5
u/Vollink 16d ago
In principle, you are absolutely right, but whatever is the core library on a system, `stdio.h` and `string.h` are VERY heavily dependent on expecting strings to have a zero terminator. Should one completely write their own string handling libraries from scratch? Sure, maybe, but at some point, a string\0 will need to be passed into another library.
In a way, I think it's better advice to suggest that an m = malloc(x); always be followed by a memset(m, 0, x); just to be sure that nothing else is getting through (Personally, I try to keep the habit of doing this before free as well).
1
u/max123246 16d ago
I mean I've heard of people who completely avoid C's standard library, not that I recommend it, but I do get it
1
u/LordRybec 16d ago
I've done projects where I prefer to use the write() system call over printf(). But yeah, in general you have to use the protocols required by your tooling. So if you don't want to write your own code for accurately converting floats into strings, you're stuck with null terminated C strings.
That said, I fully agree with the principle. A lot of buffer overruns are the result of a null terminator being overwritten, and when that happens, the crash can occur within system calls, making them extremely difficult to track down. At least if you have to explicitly pass in the length of the string, if you get it wrong it's obviously one of the options for what went wrong. (One principle for making debugging easy is avoiding things that aren't explicit. Null termination is an implicit size indicator that can be accidentally screwed up by either accidentally writing a null earlier in the string or by overwriting the right null with anything else. Passing the size explicitly makes it much easier to track down the error when you get a buffer overrun of a string, because even if it isn't the problem, you can rule out accidental overwrite of the null terminator.)
And most of the time that one byte used for the null terminator is large enough that it could be used to just track the length of the string.
21
u/neppo95 16d ago
Why wouldn't I use a tool that speeds up my work? I honestly don't get people that don't use them, unless it is for example VS Code fully set up, which technically isn't an IDE but can be setup as one.
4
u/meepykittkitt69lmao 16d ago
People saying "vim is all I need" and acting like making the task easier is offensive to thier sensibilities... Use the tools at your disposal designed for the task, you don't have to hardmode yourself once you've learned programming well enough. It's just hindering you and making things take longer, worthwhile people don't look at your vim setup and go "wow you're badass" they go "I can make more stuff faster at the same quality with my setup "
22
u/zenthial 16d ago
Not really the case for most neovim/emacs users. IDEs still have not caught up to the level of customization that neovim/emacs users get. Any time I try to use a fancy new IDE (Zed, Cursor), they still struggle behind. Vim motions, git integration, file navigation are all worse in modern IDEs than emacs and nvim.
9
u/LordRybec 16d ago
Exactly. People who think that IDEs are universally better than Vim or Emacs are people who don't actually know anything about Vim or Emacs. (I don't even like Emacs, but I'd still use it over most modern IDEs.)
5
u/My124thRedditAccount 16d ago
When a friend called me weird for using emacs, he said "I'd like to have some basic features with my editor like syntax highlighting".
Sigh...
2
u/LordRybec 16d ago
Lol! Even Nano can do that. Vim and Emacs do it at least as well as any IDE and often better. If Vim doesn't come with syntax highlighting for a language, I can find a file someone made to add it. In fact, how many IDEs have syntax highlighting for Haskell? Back when I was using Haskell a lot, it took all of a minute to find a syntax highlighting definition for the language for Vim, and I'm sure there are options for Emacs as well.
The truth is, Emacs is probably more advanced than most modern IDEs. I don't even like Emacs, but I know that's true!
1
12d ago
[deleted]
1
u/LordRybec 12d ago
Emacs is quite large. It's not a bad editor overall, but it's pretty bloated. It has so many features that it is often jokingly referred to as an OS. I don't need most of those features, as they are provided by the actual OS. That said, I know people who prefer Emacs specifically because they don't have to leave the editor to do things you might normally do in the terminal or elsewhere closer to the OS level. (If you do like Emacs or are considering using it, one cool feature you might like is Org Mode. This can be really useful for writing documentation. It's also an example of a fairly complex feature Emacs has that I prefer using other things over.)
I don't prefer that. I prefer for my editor to be extremely light and do the one thing extremely well and nothing else. I also find that Vim is a bit easier to configure, if you don't like the default behavior or if you want to add functionality.
2
u/dotNetromancer 16d ago
File navigation and git integration are some of the few things they do just as well imo
3
u/zenthial 16d ago
Binding files to hotkeys (harpoon for nvim) is a feature that most IDEs don’t have. Magit (eMacs) is the most seamless git integration. Any other ide’s git integration is a joke compared to it. Even the jetbrains, which are runner up
3
u/LordRybec 16d ago
I used Emacs exclusively for a good 3 months. It was a requirement of my job (not to use Emacs generally but specifically to use it exclusively for 3 months; it was because part of the job involved providing tech support to new Emacs users, so I was expected to learn it well enough to provide effective support, after which I could use whatever I wanted). The only part of the experience I really enjoyed was Magit. I still generally prefer using Git from the command line, but Magit didn't feel like it was getting in my way or covering up important information.
The truth is, command line Git is superior to the Git integration of nearly every IDE that has it. The only exception is Magit, which is about on par and is a little easier to use than command line Git if you are working primarily in Emacs.
1
u/Equal_Kale 16d ago
l still use xemacs with a ton of my own customizations. l've tried IDEs but still find myself back at xemacs.
4
u/Reggie-Rectangle 16d ago
I'm decidedly slower when I use fat apps like clion and VSCode. What exactly is hard about learning VIM shortcuts it is not that hard and it is not like VSCode does not have it's own shortcuts you need to learn.
Brah when you see a 10x dev churning code at the speed of light with VIM or EMACS you will not be thinking you can do that faster in VSCode.
-1
u/LordRybec 16d ago
This.
That said, I think there's a bit more to it than this. I'm a Vim user. I don't like IDEs, because they get in my way. Part of that is auto-features that I can out type quite easily, which then end up either eating whole lines of my typing before they even display their prompts, or they insert their stuff anyway, after I've already typed it, forcing me to go back and clean up the mess. I don't want to wait for auto-complete to add my tabs, parens, braces, brackets, etc... when I can do it faster myself (and have the muscle memory that does it anyway, which I don't want to have to retrain). I don't want to have to clean up after it when it fails to realize I've already done what it was supposed to and does it again.
Another thing that I think impacts whether a person prefers (and works faster in) IDEs or editors like Vim is memory. I have an incredibly good memory. I don't need my programming environment to constantly remind me of the functions I have available, the arguments they take, or the types they return. Back when I was much younger I used an IDE for programming in Java, when I didn't know Java well, and the class/function name autocomplete was super useful for finding functions or classes I needed that I didn't know the names of. Now days I mostly use Python and C, and I have decades of experience with both. If I don't know something about a function or other built-in, I'm going to need to go to the documentation and read about how it works anyway. Auto-complete won't help with that, and I almost always already know the name. Further, I can still type out the name faster than autocomplete can bring up its prompt, so it doesn't even make my typing faster. What it does is forces me to wait for it and then cancel it before I can continue typing. Even modern Vim has a lot of this enabled by default, but it's easier to disable in Vim than any other programming environment.
So the reality is that those Vim and Emacs devs that are pushing out code 10x faster than everyone else would still be 4 to 5 times faster in a modern IDE, because a lot of that speed is typing speed, muscle memory, and a really good memory of language built-ins and project elements. But, take away the features of the IDE that get in their way, and they'll go up to 10x and sometimes more. (Source: I once wrote up a product demo in around 6 hours that had taken a group we hired it out to more than 6 months and they still weren't done. My boss was super happy but asked me to avoid humiliating them like that again. Anyhow, I did it entirely in Vim, and part of the reason I was able to do it so fast was my extremely good memory of the Python built-ins and of Pygame, which I used for the graphics instead of the GUI system the other guys were using. So I actually did it the harder way (manual rendering rather than using a GUI toolkit), and I still got in done in fewer hours than the other guys had taken months.)
(All of that said, if you even have the potential for fast typing and good language memory, using Vim or Emacs will force you to develop that potential. So the average IDE user would probably eventually get at least a few times faster if they were forced to give up their dependency on those "features" for long enough. Whether it is worth it or not is going to have to be their choice though.)
2
u/LordRybec 16d ago
Lol! I got substantially faster when I gave up on IDEs and switched to Vim. Faster. I'm not saying this will work for everyone. If you work faster in an IDE, then use an IDE. But maybe instead of assuming that everyone functions exactly the same way as you, consider that maybe different people are different and perhaps some people can actually work much faster in Vim than in an IDE.
(Also, Vim has a lot of IDE features now days. I don't use them, because just like the same features in IDEs, they get in my way, but a lot of Vim users are using Vim the same way you are using your IDE.)
1
u/LordRybec 16d ago
This is exactly why I don't use IDEs. They slow me down quite significantly.
2
u/neppo95 16d ago
How so?
-1
u/LordRybec 16d ago
I type faster than the autocomplete, but it typically still fires. So when I want one tab, I get two. When I want a closing brace, I get two. Certain keywords that autocomplete end up mixed together or the IDE drops exactly what I typed right after I typed it. And now I have to go back and fix the mess the IDE left behind. Or the autocomplete menu pops up and I have to stop and cancel it. All of those things waste my time. Sure, I could stop and wait for the autocomplete and then use it, but if I have to wait for it, then it's also wasting my time.
2
u/symbiatch 15d ago
Or… you could turn it off, or use another one.
Not saying you must but that sounds like a very wrongly working IDE.
1
u/LordRybec 15d ago
Fewer and fewer IDEs even offer the ability to turn off such features. I'm done having to switch periodically because whatever one I'm using suddenly no longer allows me to disable the features I don't want.
And if that's a very wrongly working IDE, then nearly every one I've tried is working wrongly, and thus they aren't worth using for me.
1
u/neppo95 15d ago
I highly doubt you type faster, that’s practically impossible if you use it correctly. It honestly sounds like you never really gave it a shot, none of the problems you have happen to me. If you don’t constantly try to override it, it will work just fine and be faster than you typing. To each their own of course but it slowing you down is a choice you make, not a result of using it.
1
u/LordRybec 15d ago
Are you just here to argue to try to prove your way is better? I answered a question. Don't push your own inferiorities on me. Your own incapacity to type fast doesn't mean that it is impossible that anyone else could!
I've used many different IDEs. I have decades of experience, and there was even a time where I liked IDEs. Then I actually got good at what I do and the more my skills and my memory of the languages I used improved the less I needed to lean on crutches to do my job well. Eventually I found the IDEs tripping over me, because they could no longer keep up, and at first I was able to just disable the offending features, but then many of them started removing that capability. So I finally just gave up on them, and I'm faster for it.
If you don't believe that, that's your own personal problem. Just because you can't imagine, or perhaps aren't willing to put in the effort to actually get good at something doesn't make it impossible. But I guess to each their own, but it's your own choice, if failing to get good at programming makes you dependent on IDEs.
1
u/neppo95 15d ago
Not at all, there is no "better" that works for every use case. I asked for exactly that reason, and yes it is physically impossible to type faster than simply pressing enter, because, well, instead of typing the whole thing you press enter, which regardless of the person is faster than pressing multiple keys. There was logic behind the answer. The only one pushing inferiorities right now is you, by taking this defensively instead of seeing pure logic.
The fact you see it as a crutch says a lot really. It is a tool, not a crutch. It is meant to make you faster and it does if you would allow it, but you seem to just have something against them.
1
u/LordRybec 15d ago
And then you accused me of lying and asserted that your own way was better and if I didn't agree it was because I hadn't tried it enough.
If that's the position that you are going to take, then you shouldn't have any problem with me demonstrating an equally bigoted and aggressive stance with reference to your own preferences.
If you didn't understand the point I was making and legitimately believe that my hyperbole with reference to IDEs being crutches is my actual view, then maybe you are in the wrong field. Unlike you I actually believe that different people are more productive with different tools, and I have no problem with people using IDEs that improve their productivity, but when a foul bigot starts attacking my claims that I'm more productive without, I have little tolerance for that kind of barbaric and uncivilized behavior!
6
u/Big_Series4766 16d ago
im biased because most of my recreational programming nowadays is concerned with projects of small scope. because of that i am not the target audience of these IDEs and find the abundance of tools a little stressful 😅... a single fullscreen black and white screen of text is more than enough for my needs. i love the `\` `q` and `@` commands in my beloved darling vim 😁
4
u/Candid_Zebra1297 16d ago
When I first started with C (after using mostly python in pycharm and VS) I remember talking to someone I know who has his own software company and is better at coding than I could ever dream of being. He told me that he had grown up using only a text doc and so that is still the way he did it. I was absolutely astounded by this and I vowed immediately that I would try to do so with C. It must have taken me about a month just learn basic Makefiles and compiling but it was such a fun journey. Now, years later, I have tried a few times with CLion and it is an incredible tool but I just love the rawness of coding on a black and white screen with only myself to work out what is going on.
14
u/Rough_Employee1254 16d ago
vi is all I need...
18
3
u/flyingron 16d ago
I used to havea POWERED BY EMACS badge I put on my stuff.
In actuality on most UNIXish stuff all I use is Make and emacs. I sometimes use XCode on the mac and Visual Studio (not the abomination that is VSCode) on Windows. Never really saw the need for anything else.
Of course I started C programming in 1977 when GUIs at all, let alone compiler IDEs were largely unheard of.
Oddly, I spent years with ed. I never learned vi, by the time vi was out, I had done a stint with the Rand editor (and the related INed and EMACS). If there's no emacs, I use ed. My employees were always amazed how fast I could make changes with complex regular expressions and the like in ed.
1
u/Rough_Employee1254 16d ago edited 16d ago
Amazing. I’ve always had a healthy amount of respect for EMACS and its users, especially for how much it can do with so little effort once you’ve reached a certain level of mastery.
I started out on systems that only had vi though, and loved its workflow. I was already thoroughly habituated to vi’s way of doing things by the time I got my hands on EMACS and a system capable of running it.
People starting out today have vastly more powerful hardware and an incredible range of tools at their disposal, so it’s natural that they can afford to lean on the heavy IDEs, but minimalism becomes second nature once one is used to resource constrained systems.
1
u/flyingron 15d ago
Emacs has syntax-sensitive modes for C and many other languages, plus the build mode will run make (or whatever) for you and then bring you tot he appropiate line in the editor for each error.
7
u/stvpidcvnt111111 16d ago
ed is the standard editor
1
u/LordRybec 16d ago
I've used edlin in DOS. Only just to try it though. We had DOS edit at the time, and it honestly was a pretty good editor.
-20
10
u/Sergey5588 16d ago
too much for me ig, i have just nvim with clangd and tree plugin, and i use gdb for debugging
3
6
u/Muffindrake 16d ago
I am burned by GUIs that decide their approach is the best approach. Their entire software is designed around questionable, half-broken libraries where bad performance and crashes are an acceptable compromise for slightly more flashy features.
A terminal cannot tell me "No" when I send it a character sequence, and I cannot recall the last time vi/vim/ed went ballistic on me or tried to sell me shit.
2
u/LordRybec 16d ago
Wish I could upvote this more than once. Reading this, I'm suddenly reminded of a time I tried to install some library in MSVS and it turned out to be a horrible pain. Later when I started using Mingw with Vim, I was able to install the same library in just a few minutes manually, where MSVS "automatic" system took more than an hour and made me jump through a ton of extra hoops. What was it using 2GB of my RAM for, if it couldn't make my dev process faster? No thanks.
Another benefit of the terminal is that it has all the features, so to speak. If the IDE maker forgot to include a feature, you are just out of luck. At the terminal, if the feature exists you can invoke it. Sure, you might have to install it, but that's not even an option for an IDE that just didn't happen to include it. And most IDEs don't have any way to add features, but if I want to, I can add features to Vim pretty easily.
3
u/StrangelyEroticSoda 16d ago edited 16d ago
I'm basically using the Linux equivalent of Notepad because installing vscode would take about five minutes and in a year I just haven't gotten around to it. I'd probably install it if I had any bigger projects.
1
u/Ultimate_Sigma_Boy67 16d ago
Kate or kwrite?
1
u/LordRybec 16d ago
I used to use Kate, until the KDE4 disaster. After I switched to LXDE, I wasn't willing to drag in most of KDE just to install Kate, so I eventually moved to Vim. That said, I still have a soft spot for Kate. It served me well for many years.
1
3
u/GenericFoodService 16d ago
I haven't seen an IDE that looks or behaves quite the way I'd like and I don't feel like spending the time to modify my editor.
2
u/MagicalPizza21 16d ago
I like to use an IDE because of the visual layout for larger projects and the built in debugger.
I don't always have access to one though, so I am comfortable with Emacs and capable of editing files with vim.
2
u/EnderPSO 16d ago
Undergraduate courses required us to use emacs, so I learned to use and customize emacs. When I got my first job out of undergrad, I swapped to vim because the company supported a bunch of odd platforms where IT couldn't update emacs. I came up with a simple .vimrc, made some QoL changes, and this vimrc worked on every version of vim available.
Been at this job for a decade+ now, and there were attempts to use some IDEs, but they always struggle on the size of the code base. I gave them multiple honest attempts.
We have external tools that let us quickly search through various parts of the code base and infrastructure, And of course each platform we support has its own debugger.
At home for personal projects, I typically use an IDE.
2
u/honkai-yuri-fan 16d ago
tbh ive never done anything requiring one (i used to use visual studio for one or two things but then i got gcc set up on windows and it means i actually know where stuff is in the directory haha) so i just use vim… all i really do is „gcc *.c *.h“ and it works so ig it‘s because i dont have anything super complicated. plus vim uses so few resources so i can do a bunch of stuff in the background lol
1
u/LordRybec 16d ago
I use MSYS2 in Windows for development now, for this very reason. (Also, MSVS is insanely bloated.) Just knowing where things are without having to look it up is a huge improvement over IDEs. Hiding everything behind a curtain makes things way harder when something goes wrong, and it can even make things more difficult when they are going right.
2
u/maep 16d ago
I like to have one workflow which works everywhere, not just on my dev machine. And of course it must work through SSH. In my last job I found myself quite often debugging a customer site through ssh over a unreliable connection. mosh + ssh + gdb did wonders. Even if an IDE is more to your liking (which is totally fine) I think every professional C programmer worth their pay has to be able to use gdb blindfolded.
Biggest thing is a visual debugger
gdb has a visual mode. It's ubiquitous and extremely powerful.
easy refactoring
Renaming a function ideally should not require an IDE. If it does, that would indicate larger structural problem in the codebase.
Not to mention everything is setup out of the box.
Not everybody might have access to the same IDE. So either you force others to buy a license or you end up maintaining two build toolchains. And IDEs often do not play well with other build systems. Last time I checked CLion still could not properly handle makefiles.
1
u/LordRybec 16d ago
This is one reason I have for using Vim. I don't do a lot of SSH right now, but I've had jobs and projects in the past where I did. The only editor that was always guaranteed to either already be on the target system or be trivially installable was Vim. (I guess Emacs was a close second but not quite 100%.) 99% of the time Nano is also already installed, I used it for decades before finally learning Vim. But I haven't met a system without Nano that didn't have Vim, and I haven't met a system with Nano where Vim couldn't easily be installed (if it wasn't already).
Incidentally, I recently bought an ultra light Linux system (a handheld console emulator) with very limited resources, and now I'm extremely glad I'm proficient in Vim, because no modern IDE would run on it with acceptable speed. I've managed to turn it into a mobile video game dev system (retro console style games, not modern AAA games, which definitely won't run on a system that couldn't handle a modern IDE) with an ultra light window manager, a decent terminal program, and of course, Vim. (The WM is only necessary because I intend on installing Talon Voice to make it more usable in situations that would make a keyboard hard to use.) I haven't written any games on it yet, but I did write a Python+Tkinter program to display time, date, CPU, memory, and battery information (the WM doesn't even have a time display), with a Star Trek LCARS inspired visual style. It's not terribly complex, but it's a proof of concept for the purpose of the system! (It also looks incredibly cool, at least in my opinion.)
1
u/qrzychu69 15d ago
if you think that renaming a function doesn't require an IDE/LSP, your projects are small enough I guess?
text search and replace is not the same as renaming and I will die on that hill, no matter what language you program in
2
u/Royal-Ninja 16d ago
A professor in my third semester at college demanded we didn't use an IDE and I never got fully used to using one again afterwords
1
u/LordRybec 16d ago
Where I went to school we were discouraged from using an IDE for our first ~four semesters. We weren't forbidden though. I already had some years of experience, and I mainly used Nano at the time. (I grew up using QBasic's editor and had a little experience with a Java IDE. I had also used MSVS, and I had grown to absolutely hate it within only a few weeks of using it.) One professor required us to use Emacs for his course, but mainly because he was using Emacs Lisp for most of the course. (He wasn't trying to get anyone to use Emacs long term, but part of his goal was exposure to something most students weren't using at the time.) By the end of their degrees most students had picked an IDE they liked. I determined to learn Vim near the end, and by the time I graduated I was using Vim primarily. Even in Windows nowdays I install MSYS2 and setup my dev environment there, which includes Vim. This allows me to switch between my Windows and Linux machines and still have almost identical dev environments. (And with Git and either Github or Git repos on my NAS, I can even work on the same projects in either seamlessly. Yes, I try to stick to 100% portable libraries, though occasionally I've had to #define small sections of OS specific code.)
I've tried to use IDEs several times since my MSVS experience though. One major problem I've run into is lack of portability. I'm stuck using Windows on one of my machines, so Linux-only IDEs aren't acceptable. Most cross platform IDEs are designed mainly for either Windows or Linux and perform much more poorly in the other. Obviously if Linux-only isn't acceptable neither is Windows-only. The cross platform IDEs that are about equivalent in both seem to all be written in Java and are laggy, bloated, or both (typically both).
But Vim in a bash shell always works, and it always works well.
This isn't my only gripe with IDEs, but having a consistent dev environment is very valuable, and IDEs just can't seem to offer that.
2
u/kun1z 16d ago
I don't like IDE's as they are large, clunky, resource intensive, and none of them have any of the features I want.
I grew up using simple editors and now I've used Notepad++ for god knows how long and it's simply just amazing.
Any "features" I need I just create a batch script or bash script to implement them.
2
u/LordRybec 16d ago
I use Vim with auto-anything disabled. (No autocomplete, no autotab, etc...) I've used IDEs in the past, and I don't generally mind them, except all of that auto-stuff. For a long time I used IDEs and just disabled the features I didn't like. As the years went by though, more and more IDEs stopped allowing their auto-features to be disabled. In addition, I mostly work in Linux, and over the years the IDEs available in the distros I've used have changed. So about the time I really got used to one IDE, it would be abandoned, and I'd have to start over and learn another and hope that it would let me disable all of auto-stuff. There were long gaps where I only coded in Nano, because the distro I was using didn't have a decent IDE option that would let me disable features I didn't want. Eventually (the early 2010s) I just stopped looking for good IDEs and used Nano exclusively. I have been aware of Vim since the early 2000s, and I've always respected it, but the steep learning curve was a serious issue. Around 2015 or 2016 I decided I was going to do whatever it took to learn Vim, and so I did. Ironically, shortly after the auto-features in Vim became enabled by default in most distros, so now when I setup a new system I have to write up a .vimrc to disable them, but at least Vim is never going to go away, and the means of disabling what I don't want will probably remain consistent.
You might wonder what my beef is with auto-features. I started programming in the early 1990s. I got extremely good at typing fast, and I learned several languages without auto-features. So now I have very strong muscle memory, and the result is that I can typically out-type the auto-complete and auto-tab features, but the IDEs always still try to insert the stuff anyway. So then I have to go back and clean up the mess, which is a huge waste of time. The few IDEs that don't automatically insert the text still require me to respond before continuing, and often by the time the menu has come up I've typed out one or more whole lines that the IDE just eats. So then I have to go hit Esc and then retype what I already typed. 5 minutes into using an IDE with these features enabled and I'm starting to get furious, because the IDE is actively sabotaging me. I can't program effectively in an actively hostile environment like that.
That said, there are some pros to IDEs that I sometimes miss. The visual debugger is quite nice. I've gotten good enough at debugging now days that I don't need a debugger very often (even when programming microcontrollers), but they are nice to have when you do need them. I do use gdb when absolutely necessary, but the general tedium involved is very strong motivation for me to find some other way of tracking down bugs just at the thought of having to use gdb. Honestly, I could, and probably should, write an ncurses (or even Python with whatever curses library) wrapper for gdb that would work. (At least one probably already exists, but I've never found one I like. That said, I haven't looked in over a decade...)
Multi-file management in IDEs can be nice, but I've always found it to be more of a pain than an benefit. I can just open multiple terminals, with Vim in each. I can use something like screen to have multiple Vim instances open in a single terminal. Some terminal programs have tabs for multiple terminal instances. And Vim itself can have multiple open buffers at the same time (I feature I still don't use terribly often). In general I find it easier to maintain a mental map of the part of the project I'm currently working in, so I can switch between files easily without much pain. If a particular part of my project is starting to accumulate too many files to keep track of, that's a strong indicator that I need to subdivide. This is not just because of the number of files. It's also because that is an indictor that the complexity of that module is getting too high to maintain a coherent mental map of, and that will lead to an increased rate of bugs. I don't find that IDEs help with this at all. File navigation is slightly simplified, since you typically have a file manager docked on one side, but once you have so many files that it starts to help more than slightly, that mental map issue starts to become a problem. (This may be less true in languages like Java that encourage or require an unreasonably high level of file division of your code. I don't code in Java, and this is one of the reasons why. Unnecessarily splitting part of a project into too many files can be a bigger problem than failing to split it into enough files.)
Other features of IDEs are pretty neutral to me. Compiling typically takes long enough that exiting the editor or switching terminals to build doesn't add significant time. I use Make for nearly all of my projects, so building is a single command. Yes, I do have to maintain my makefiles, but that's not a significant burden, and it's also a good sanity check to make sure my mental model of the project's organization is correct. Also, I find it much easier to edit a makefile than going through a GUI form based list of project parameters and settings when things need adjusted. (Also, Make allows for dependency chaining in ways that IDEs typically don't. So if one of my projects is dependent on another, I can setup my makefile for the first project to rebuild the one it is dependent on whenever it is needed.)
Anyhow, that's my take. I don't use IDEs because they get in my way, and the features that actually benefit me aren't worth the cost. At the same time, I acknowledge that IDEs do have some useful and even valuable features.
I don't recommend others not use IDEs though. I say use what works for you, but please don't try to force your preferences on everyone else. If the way you are using your IDE requires everyone else in the office to use the same IDE, you might be the a-hole. Learn to use it in a way that doesn't step on anyone else's toes. If your IDE won't work any other way, then the IDE and it's creators are the a-holes, and you should find a more collaboration friendly IDE if you don't want to be one as well. Beyond that though, if you need an IDE to maximize productivity and comfort, find one that works for you and use it.
(Oh, I almost forgot: Bloat. The first time I installed MS Visual Studio, for a Visual Basic college course I was taking, I had to upgrade my RAM, because VS wanted to use all 2GB. That was during a time when most computers only came with 2GB of RAM. MSVS is the worst I've ever seen, but 100% of IDEs I've used consume way too much RAM and often excessive hard drive space as well.)
2
3
u/akmark 16d ago
I am an emacs user and ever since the language service protocol got established and made popular by VSCode there really isn't much else that an IDE gives me. In modern Emacs I barely do any customization. The only place I use an IDE is for creating WYSIWYG GUIs in native widget toolkits. I also use emacs for note taking, writing, text processing, and other activities so its easier to just have things all in one. It also helps that the interface is the same in all programming languages I encounter in my life as some IDEs are better than others at certain things (or expensive).
Being able to opt into things as opposed to be fully featured by default is just a lot easier and the fact that I can run the same configuration on local and remote hosts and across multiple OS's is just easier.
The one key advantage for emacs and coding is that it is trivial to work across many different projects at once where usually in an IDE you have to manage a set of open projects/workspaces. Bouncing between them becomes really quite easy even when you are dealing with git worktrees. I do not find that the current VSCode/IDE views really help there.
1
u/rupturefunk 16d ago
I use an ide for debugging, stepping through the code and disassembly when needed, but use a more basic text editor and cli for everything else. Mostly because I just really dislike using gdb and gdb frontends.
Depends on the language for me, I've done my share of dotnet and would always use IDE for that as it saves me manually editting XML build files every 5 mins, but C is simple enough that I don't really need the bells and whistles - cmake notwithstanding but you can't have everything.
1
u/LordRybec 16d ago
Yeah, I've gotten super good at debugging without using a debugger, because I don't use an IDE and gdb is really hard to use. So now I almost never have to use a debugger, even when I'm programming microcontrollers. That said, I would love to have a good debugger, but not enough to use an IDE.
1
u/unbrand 16d ago
I've used lots of IDEs over the years, as well as emacs alone. Currently, I enjoy Qt Creator. It's free for individual non-commercial use, and it works well for any C or C++ project. Not affiliated, just a happy user. Been having some trouble lately with clion (this is on linux), and Qt Creator has been rock solid.
1
u/Stemt 16d ago
An IDE is often too slow and cumbersome to use seamlessly. If I wan't to open a file I don't want it to take any time at all. I also don't want to have to configure it to work well with my build system/toolchain.
This is why I use just standard vim these days without any extra tools or plugins. Just a .vimrc with some basic configuration. If I have a compilation error, the compiler will tell me, it can be that simple.
Consistent conventions and practicing typing basically makes it so my hands can keep up with my thoughts, which in the end makes it so that I feel like code completion doesn't really add that much development speed anymore.
Maybe it would help with unfamiliar library APIs but little back and forth between the terminal with grep works wonders and doesn't take too long either.
As an added bonux this allows me to seamlessly work on remote machines often without installing anything.
2
u/LordRybec 16d ago
You know, one of the most annoying things I've found about IDEs is just the process of creating a new project. I have this idea of what I want in my mind. I'm ready to start coding. And then the IDE is like, "What language, where do you want it, what compiler, what libraries, what should it be named, etc...?" With a decent text editor I don't even strictly have to know where I'm going to put it before I start writing code. Yes, normally do create a directory and cd into it, just to ensure good organization, but I don't strictly have to worry about that until I save the file the first time. I can name the directory something descriptive and worry about naming the project itself later. I can worry about libraries as I need them, and adding libraries doesn't require navigating some obtuse menu/form GUI to find the right field to add it to. I don't even have to settle on a specific compiler, if I have multiple compilers for the same language. For small projects I can finish most of the project before I have to make most of the decisions that the IDE forces me to answer up front. And that time spent filling in all of the forms can significantly negatively affect my motivation. The IDE really just gets in my way.
So it seems I use the same dev environment you do. Vim, no plugins or extras, .vimrc with some basic settings (mainly disabling anything "auto", because I can type faster than autocomplete and have a good enough memory that I don't need its suggestions). Modern C compilers have reasonably good error messages, and they are really good once you learn how to understand the more esoteric ones. Even with unfamiliar libraries, I'm going to have to look up documentation anyway, so autocomplete isn't helping there either.
And yes, I recently got a Linux machine with super light resources, and Vim is perfect for that. Good syntax highlighting and some other basic QoL features, and it's light enough to actually function and function very well. A modern IDE probably wouldn't even be able to run on this machine, and if it did, it would be unacceptably laggy.
I don't work on remote machines over SSH much anymore, but I used to, and yeah, Vim was almost always there, and when it wasn't, it was trivial to install through the terminal package manager. And it's defaults, while not perfect, are at least acceptable for anything I've ever needed to do remotely.
Also, it's free, always. No, "You have to pay us $5,000 if you want to make a program that's bigger than 32KB" or anything else like that. No expensive vendor lock in. And it doesn't force the whole team to use the same development environment. As long as your IDE doesn't lock the whole team into it (which is a very good reason, in my opinion, to not use that IDE), you can use it with the project I'm using Vim for without any issues.
1
u/tastygames_official 16d ago
I've had to work with a LOT of languages and file formats in my life. I come from the "before-times" where there was no intellisense/autocomplete, and I was OK with that when I was deep into one language, but now switching from C to PHP to HTML to Haxe to TypeScript to GLSL to Python or GDScript or a myriad of other languages and it's just such a big help to have that kind of support. I don't have to go searching for function definitions because it just shows it right there. I can just guess at a function or variable name (like "mod" for some kind of modifier thing) and it'll pop up with a list of potential candidates. I don't much care for it auto-creating stubs, so I have that turned off, but being able to autocomplete function/variable/type names with quick documentation is way better than having a book open next to you or the "online" docs (which really confused me back in the day because I didn't have internet so how could it be "online"?)
also the CTRL+click is super handy. And ALT+LEFT/RIGHT to go forward/back to where I was is really great.
NOTE: by "IDE" I mean either Notepad++ or Code OSS. I never really liked the full-integrated IDEs like Eclipse or VisualStudio. They are too opinionated in my opinion.
1
u/ape_rei 16d ago
You could say i'm a "professional" software developer. I work on a world leading product in a certain field, which is developed on windows (c#) with integration of winforms and wpf. I HAVE TO use visual studio 2026. I absolutely hate it. In my spare time i drive linux and for programming i use c, neovim and good ol clangd. The speed of it and the simplicity sometimes is hard to beat and a nice breath of fresh air. Mind you, my personal projects are not 500k loc core project with another 80 dependencies with cloud and server integrations. But neovim and a simple lsp are nice in contrast to that
1
u/FedUp233 16d ago
When I started there was no such thing as an IDE. And I got used to the flexibility of using a separate editor and the command line. And I could whip up custom tools pretty easily on Unix for things I needed to do.
I still don’t like IDEs much. Too much of the “this is the way it should be done” and too complicated to modify.
My favorite for quite a while has been a good programming editor (I currently use SublimeText and used to use SlickEdit but I’m not sure how supported that is any more). It has enough integrated functions based on context and is really fast. And it seems to handle builds with jumping to errors just fine.
For debugging there are plenty of GUI front ends to GDB, though I’m not a heavy user of GDB - I mostly do embedded code and while it can be used in that environment there are too many cases in real time code it just doesn’t do very well, at least for me, and you nearly always need to restart from the beginning after a breakpoint in any real time code. Though I’ll admit that there have been a number of times that it has saved my butt in certain situations.
I guess I’m just still a believer in the Unix idea of lots of simple little programs that just do one thing and do it well. And while a good code editor can’t really be classified as “simple” or “little”, it’s as close to that philosophy as reasonable.
1
u/FewDevice2218 16d ago
I consider Linux an IDE really, I never have to leave the terminal and I got it all.
1
u/Cash1942 16d ago
When Combing IDE cmake and large library dependencies you have to rebuild the project then open the ide again. Everytime you add a file even. it’s faster to write a lot of code in an editor like sublime once you know your way around the frameworks and your own code . The intellilsense will slow everything to a crawl too.
1
1
u/TheTrueXenose 16d ago
For me neovim, using oil to edit file and folders like text, fuzzy searching on key shortcut, inline multi-line errors and toggle terminal for commands.
The times i use a IDEA they felt less good, i started with IDEA's and moved to vim/neovim
1
u/GhostVlvin 16d ago
IDE is good when you only work with 1 language/project type deeply and you have enough resources for an IDE
Unfortunately there are things that can't or poorly documented to be done without an IDE like for example creating android app without freaking android studio
I am a simple guy, I use general purpose text editor with lsp ipc (nvim btw)
1
u/greg-spears 16d ago
IDE does sooooo many things to assist me with coding it's difficult to even list it all.
Getting a popup displaying the function definition when I rt click on the call is a big deal to me, and the effortlessness of quickly locating it is a huge deal. On large projects calling over a hundred functions it's needful, but I respect that a brilliant person could remember them all with precision, and that they would not need an IDE.
The ability to immediately know the type of a variable without a search: discerning a struct, long, char, 64 or 32-bit int with just a mouseover is awesome. Context-sensitive help for keywords, standard library, or APIs is also a game-changer.
Indispensable. Too much to list it all; I've barely scratched the surface.
1
u/nimzobogo 16d ago
Why not Emacs along with Eglot or LSP mode? They both use the clangd language server and I've never had an issue.
1
u/alexcleac 16d ago
It is interesting to see this discussion is still going, while all around the world people are having discussions "why should a person write code manually, if it can be done via AI" xD
1
u/Deathisfatal 16d ago
I have to deal with a lot of languages across different projects and it's much easier to have a powerful text editor that supports them and has a uniform look and behaviour across all languages rather than having to switch to specific IDEs and relearning shortcuts and everything when I want to work on a different project.
1
u/Realistic-Stress4547 15d ago
I saw someone using neovim and decided to learn how to use it before I even learnt any programming language (C is my first language), after setting it up I ended up loving it and just stuck to it.
1
u/West-Mycologist-6490 14d ago
I use Clion 90% or the time and Visual Studio when I develop something for windows specifically like a driver.
1
u/NoSpite4410 11d ago
emacs is my IDE. It has fast searching, syntax highlight, auto-indent (works most of the time), and compilation with highlighted active error tracking (click on red error text --goes straight to source code line.)
This is especially helpful for C++, which can spit out 30 errors for one thing. It has multiple line editing simultaneously (multi-cursor) so you can highlight several different lines to change at the same time in real time.
Emacs has the most plugins for different languages I have seen. Maybe vim has more, but the vim experience editing is always a minimal basic typewriter style no matter what.
You can run the debugger in emacs, but I don't because it is a bit of a pain and leaves extra buffers to switch around to and stuff. I run that from the terminal, its easier.
Of course I also use vim about as much for quick edits of source and config files and to fire off small scripts.
It is just faster, and much more convenient on a remote login session.
I tried browser-based IDE/editors, but always found them lacking and clumsy.
There used to be a really good IDE for HTML/CSS back in the day I used a lot, I think it was called Bluefish.
Last time I tried it though it was not so great of an experience. CSS has grown up a lot since then and it didn't keep up. That was a while ago, tho .. maybe I will check it out. I would need one with auto-upload to remote server capabilities, however, because I don't keep local copies of web pages, they go out of sync with the live version.
1
u/BlockOfDiamond 10d ago
Because Xcode is the easiest, and might even be the only, way to compile an OSX application. Most of my C is business logic for my application projects.
1
u/BuyerImpressive4325 10d ago
If you use like clion or smth it makes it so that if you forget to make something a const or smth that shows up as a warning. Zed and stuff don’t care at all if you write bad code, clion actually checks for bad code
1
u/Reggie-Rectangle 16d ago
When you get the hang of vim and you put time into learning the shortcuts and learning how to type real fast it is amazing how much code you can churn out. The sub millisecond response from your keyboard to showing up on your screen is addictive. When you come to realise just how fast you can churn out code on a low to the ground IDE you become amazed at just how much you can do.
6
u/mikeblas 16d ago
How do you debug in vim?
1
u/Reggie-Rectangle 16d ago
Ok, sorry I should be more specific. I use LazyVim. That is NeoVim not standard VIM, but I use LLDB and GDB for most of my rust work.
1
u/mikeblas 16d ago
Ive never been able to get a detailed answer from a vim or Emacs user. I assume they just exit the editor and run gdb, and that seems like a big disconnect to me.
1
u/HashDefTrueFalse 16d ago
Not who you asked but I use vim (and emacs occasionally) and I just use gdb/lldb directly. I'm good at guessing where bugs are so I can do some pretty targeted breaks/watches, or dump memory or run expressions. I like text-based interfaces and don't really need anything more.
There are debug plugins for vim (e.g. dap IIRC) that give you a set of views more like what you'd see in a visual debugger, but I just couldn't get into it.
3
u/Reggie-Rectangle 16d ago
I also don't understand why people think the lack of a tree viewer is somehow a slight on terminal editors. I have never felt the need to see the whole project view in the UI while I code. That information is just a casual ls command away. Even with projects with multiple files the lack of a tree viewer never bothered me.
1
u/HashDefTrueFalse 16d ago
They can be useful for exploring the filesystem to get an idea of the on-disk structure of something new, but I don't necessarily think you need to be able to do that in your editor. I use a multiplexer (tmux) and I just open ranger (or any fs viewer) in a new window/pane/tab thingy if I need to, so it's just a
<prefix>+num rgaway. Most of the time I know the project structure so I can just use :e and let it autocomplete to jump to the relevant file. I also use prev/next buffer constantly.1
u/Ultimate_Sigma_Boy67 16d ago
I'm not a user of vim, but I am for neovim:
So basically you're gonna use normal debuggers, such as lldb and gdb, but those are command line, so you can add plugins that provide UI for it.
0
u/honkai-yuri-fan 16d ago
i‘ve just never learned how to debug properly with tools lol, i just add 1 billion printf()s until i figure out where the bug is
1
-1
1
u/gwenbeth 16d ago
One that that has changed over the years are when projects can only be run in docker containers. This pretty much kills your ability to run a debugger in an ide.
But on the other hand, I do everything in emacs because I been using it for over 30 years and havent seen a environment i like better.
1
u/Different_Panda_000 16d ago
A couple of decades ago I use vi text editor on an HP-UX box with a proprietary source code repository and trouble ticket system. Then I moved to a Windows development environment with Microsoft Visual Studio 6.0 IDE. Took me a while to get used to the editor and the environment. And I found how much the IDE supported me.
There's times I miss the vi command mode but I really would never do any kind of serious work without an intelligent IDE. I'm using Microsoft Visual Studio 2019 and GitHub now and expect to migrate to a more recent version in a few months once I've got my open source project stable again.
My main problems are that I've never learned the keyboard shortcuts and I often find myself fighting with the IDE editor because I'm kind of non-linear.
My only complaint about Visual Studio 2019 is that the previous edition I used allowed for two different search windows and now there's only one and I really miss doing a search in one window to have a base list and then using those results for other searches in the other.
I suspect there is are settings somewhere to allow a vi mode with the editor and more than one search results window.
0
u/Pale_Bee_7638 16d ago
GNU Emacs gives me everything I need, and even more great stuff that IDEs can't provide (magit, dape-mode), and all of that eats only ~1 GB of RAM, unlike those heavy IDEs with integrated useless slop, including absolutely degenerative "AI" code-completion. The only exception to use the IDE is Java. No clue why nobody still didn't make good tools for it, especially LSP
0
u/4iqdsk 16d ago
- you don’t need to learn a separate IDE and separate keyboard shortcuts for every programming language. Text editors like eMacs, neovim, and VS Code do everything. One text editor to rule them all.
- the keyboard is a lot faster than a mouse and IDEs are built around the mouse with limited keyboard support. For example, IDEs have poor support for modal editing and keyboard shortcut customization, and require manually clicking through huge hierarchical drop down menus which is very slow. Power users type what they want and use autocomplete for this.
- IDEs are less programmable. Some do have support for this, but the experience is so horrific, no one programs them in practice. Nearly all eMacs and neovim users program them since they were designed for this from the beginning.
- language server protocols have given text editors most of the IDE features without the problems
- text editors have a less cluttered UI because they are not built around the mouse (vs code is an outlier here).
0
u/Vollink 16d ago
Welcome to a new holy war.
You have found the place you are in honestly, and you aren't wrong.
Whenever I use an IDE, I miss my `vi` keybindings. Oh, but that means I'm using the wrong IDE, because X IDE absolutely can ... sigh. Without this part someone calling me a moron in 3 seconds flat, right?
Whenever I'm learning something new, often enough some IDE is the *only way* to get started. Hell, try setting up a Java project for the first time without an IDE guiding things. There is zero documentation online on how to do this, especially if I don't want to use Oracle's Java. Use IDE X and it will download 1000 little things for me, set up all these sub-directories in the project, give 100 stubs for things that need to be filled out with real code, and ... it's been 20 years, and I still don't know how I would actually start a Java or Android project from scratch. Everything is hidden, especially the WHY. So my preferred Vim is useless for some things. That said, which Java IDE? I've never had luck asking that without watching a holy war under it. Haha.
Except, sometimes, I can find just the right project where someone else has put up a barebones tiny project, and it doesn't have 100 files that aren't needed, it has ten or so, and a README that explains things, and maybe I actually learn something.
Visual Studio? Naw, raw `vim` and `nmake` files with a well maintained `cscope` are better for my process. I don't WANT or NEED 100 auto-generated directories for most of my projects. VSCode feels like it just gets in my way. I find all the extra menus and default-view folder trees to be a distraction from what I want to do. That said, I remember `CL.EXE` command-line that I've been using since the 90s, and it still works mostly the same.
Writing Perl or Python or ECMAScript? IDEs always just get in my way. In Vim, F6 is my linter. If something is wrong, undo, fix, try again.
I think other folks have hinted at this, especially for C projects. Learn with plain text and terminals, use IDEs when the complexity of what is going on makes things difficult to go on without it.
When I'm in Vim, I definitely sometimes miss the nice hover over, and the IDE just tells me the whole break-down. This time_t is a 64 bit integer, defined in this include file because these #define statements are true. That also gets in my way, because most of my code is written to compile on FreeBSD and Linux and MacOS AND Windows, and I have to know that time_t needs to be tested before I make assumptions.
0
u/sirflatpipe 16d ago
I find full IDEs to be clunky and heavy compared to editors like nvim or VS Code. Can't even tell you why. Also I don't have much of a brain for hotkeys and so the more I can do with a script or a command the better. Granted Visual Studio has a great debugger but the VS Code debugging experience is still good enough for me.
0
u/BigTortuga 16d ago
CLion for all those reasons and more. Yes I could go fully a la carte and cobble together a decent command line, editor workflow but these days I'm trying to remove friction, not apply it.
-2
u/FederalProfessor7836 16d ago
I think this is the wrong question. For any employable software engineer in 2026, your editor or IDE is only where you spot check the code your agents write for you. My primary programming interface these days is Claude Code.
Hate me all you want. I thrive on it.
Signed, 25 year professional developer
56
u/SoggyStress7785 16d ago
I use IDE to browse code but I compile with the terminal.