3 ms·
I use vim instead of an IDE and I've tried lots of IDEs (Visual Studio/C++, Code::Blocks, JetBrains stuff, Eclipse, VS Code). For more table setting, I also use
by camgunz 3y ago
I use vim instead of an IDE and I've tried lots of IDEs (Visual Studio/C++, Code::Blocks, JetBrains stuff, Eclipse, VS Code). For more table setting, I also use a lot of linters and formatters (via ale), but I don't use any autocomplete.
I don't have any problems getting by with shell, sed, grep, and whatever debugger. I've debugged bonkers issues (gdb is super powerful), I've changed the names of things across huge codebases using sed, I've found all instances of things using grep, etc. I've written scripts to do these things and some of them I've reused (ex: I have a script that grep's the output of git status to see what I need to add to a commit to continue a rebase and then runs that git command).
It did take time to learn, but I would argue it didn't take longer than really getting to know an IDE. And now, I have pretty good knowledge of standard tools that's broadly applicable to lots of other problem domains. This has been useful as I've had to dip in and out of data engineering in the last few years, but it's also nice to just be able to whip up utilities to solve random problems that always crop up (does Funko sell some kind of Doug McIlroy talisman?).
As a result, I've always felt that IDEs were vaguely disempowering. I'm good at using *NIX on a variety of problems, and deploying these skills over the years I've gained a pretty deep understanding of how lots of things work (what makes grep fast, forking overhead, file descriptors, buffering on pipes and I/O in general, etc). I can't overstate the degree to which this has made me a better SWE. I'm not a PyCharm user or CLion user, I'm a computer user.
I don't want to veer too far into "IDE users are sheep" or whatever; I definitely don't think that. But for me, digging into *NIX tools essentially taught me about computers and software engineering, and gave me a broadly-applicable skillset that I use to solve bonkers problems all the time, but where I wouldn't even know where to start in something like VS Code. A good example here is I was just rereading tptacek's post on hiring (from also rereading the "Misidentifying Talent" post by luu) [0] [1], and he talks about one of the interview work sample prompts involves reverse-engineering a custom binary protocol. I don't really know how I would do that in PyCharm (or whatever the Ruby equivalent is), but I would make pretty quick work out of it in Wireshark.
I think these arguments just come down to aesthetics. Some people think that IDEs are fun to work with in their GUI magnificence and find a vim/emacs/etc. system extremely opaque and tedious. Others think that it's fun to wire your own system together to suit your own way of thinking and working, and feel suffocated and disempowered by an IDE. Use what you like, have fun, don't yuck my yum.
[0]: https://sockpuppet.org/blog/2015/03/06/the-hiring-post/#worksample https://sockpuppet.org/blog/2015/03/06/the-hiring-post/#work...
[1]: https://danluu.com/talent/ https://danluu.com/talent/
- pluijzer 3y agoI found a compromise for IDE's (or in my case a heavily extended Emacs). I always really disliked IDE like functionality. It just pops up so many distracting information. Things you type will be marked in red as an error because I haven't finished typing it. 'Yes, I know there in no semicolon, I haven't typed it yet!'. It disturbs my train of thought when autocomplete suggestions pop up, and they might not be what I meant. Some IDE's do it fully automatically or break the flow of your typing in some way so you constantly have to watch your screen to see what it is doing. But, it can also be very handy. Sometimes I have to search for the name of a function only where autocomplete could have helped me, or I get a PR comment for some minor error that my IDE would easily have spotted. So what I do know is that I only manually invoke syntax checking and completion functions. That way I can use it when I need it and not get constantly distracted by it. I still turn off all the 'lens' like features, I don't like all kinds of verbose information intermixed with my code.
- vunderba 3y agohuh? I don't see these as mutually exclusive. And I say this as somebody who is equally adept using the Jetbrains suite of tools, and then dropping to a terminal to string together a bunch of GNU utilities in a giant piped bash statement. And I really don't understand your comparison of using a jet brains IDE... to monitor network traffic. It's fairly self evident that if you want to do packet sniffing at a low level that wire shark is your best bet. Maybe you meant comparing fiddler to wire shark? (High level vs low level)
- camgunz 3y agoYeah that's fair; I'm responding to the sentiment that without an IDE you're left to the tender mercies of stitching together lots of other tools yourself. I think the reality is we're all using lots of different tools, and tools that try to "be everything" are almost never good, so I think it's more nuanced than "I only use one tightly integrated tool and it's better than using a dozen tools I have to integrate myself". I also think those other disparate tools are actually really good, and reading about and researching why they're good has given me a deeper understanding of software engineering that I can now apply in my own work. I think this is probably also possible with IDEs, but I think they're a little less approachable (and often closed source/proprietary) so it happens a lot less.