23 ms·
Benefits of Not Using an IDE
- shreddit 5y agoI think that’s why VSCode is so popular. It’s a very powerful text editor, not a light version of an IDE. On the other side, I’d never use vsc to edit a normal text file…
- simonw 5y agoI've spent my entire career avoiding IDEs, and now VS Code has finally sucked me into what I'm increasingly suspicious is an IDE cunningly disguised as a text editor. I use it to edit random text files full of notes too, because I trust it to bring back my unsaved work if my laptop crashes.
- bootlooped 5y agoEverybody I know that uses VIM and VS Code uses them with a bunch of plugins to make them more IDE-like. The result will still probably be more performant than a true IDE, but the downside is there is additional setup time and brittleness. The JetBrains IDEs, at least the ones I've used, just work.
- adamnemecek 5y agoI don’t get why these articles get written. They are so predictable and just…overdone. What’s next “the unreasonable effectiveness of the vim text editor”? You are literally verbatim repeating the a thing that has been written one million times.
- Rd6n6 5y agoA good ide is all about auto completion and refactoring tools. The autocompletion means you don’t have to spend as much time memorizing apis, so you can focus more on simplifying your design and minimizing coupling. In something like unreal engine, the intellisense really sets ides apart. The refactoring means you can quickly and easily make large changes to make the code easier to work in. You can just work significantly faster if you have both of these things. I don’t really use other ide features. Separate terminals are great
- mankyd 5y agoRefactoring is where it's at for me. The ability to rename functions and variables across not just a local file, but all references in the code base is huge. Relatedly, the ability to find all usages of a symbol and navigate between them is indispensable for me at this point.
- OJFord 5y agoPlenty of LSP clients to choose from for vim.
- lacksconfidence 5y ago> Relatedly, the ability to find all usages of a symbol and navigate between them is indispensable for me at this point. I don't know if people just aren't aware, but vi and emacs have been doing this since at least the 90s. This isn't some fancy feature that requires an IDE. Recently the support has improved even more through LSP.
- jcelerier 5y ago> I don't know if people just aren't aware, but vi and emacs have been doing this since at least the 90s. This isn't some fancy feature that requires an IDE. Recently the support has improved even more through LSP. No, rtags & friends aren't remotely comparable to an IDE which has a semantic understanding of the code, and will catch the uses without false positives.
- k__ 5y agoI used Webstorm for years, but switched to VSCode. It's just more flexible, which allows me to use new tech/langs very quickly. If you don't focus on IDE features, you tend to implement quality of life improvements at a level that also works in an editor. Like in the language, framework, or library you're using (See the code generators point in the article). With languages like Rust, that have zero cost abstractions, you don't even run into performance problems when doing so.
- avisser 5y ago> I used Webstorm for years, but switched to VSCode. > It's just more flexible, which allows me to use new tech/langs very quickly. I'm sure you know, but Webstorm is limited by license/design. JetBrains sells editors to deal with almost every tech. I personally subscribe to the Toolbox for ~$200/yr and get all the IDEs. Some languages (like Rust) don't have a custom IDE, just a plugin into IntelliJ, the ur IDE from them.
- deleted 5y ago[deleted]
- throw3849 5y agoI feel most of those points are obsolete with Idea. It takes seconds to start and so on. Only benefit I see is remote development over terminal.
- bootlooped 5y agoThe JetBrains IDE family is half way there. You can run your code on remote targets now, but I think the code itself still has to actually be on your machine. https://blog.jetbrains.com/idea/2021/01/run-targets-run-and-debug-your-app-in-the-desired-environment/ https://blog.jetbrains.com/idea/2021/01/run-targets-run-and-...
- nerdbaggy 5y agoHe bashes VS Code at the end but that seems exactly what he wants. VS Code is more of a text editor then an IDE, and you can turn off all the “issues” he complains about.
- sxldier 5y agoHe's referring to Visual Studio. https://visualstudio.microsoft.com/ https://visualstudio.microsoft.com/
- ThePadawan 5y agoMan, I've been going back to full-fat VS after working in VS Code for a while, and boy, does VS just chug even opening a "Hello World" C# project. (I used VS at work regularly and the performance on a million-SLoC solution was quite bad, but I didn't expect it to be much better given the size of the solution)
- GiorgioG 5y agoHave you tried VS 2022 (beta)? It's 64-bit finally. It's way faster in my experience, but I don't have a million-SLoC solution laying around to test.
- ThePadawan 5y agoNot yet! Might give it a try, thanks for the idea!
- nerdbaggy 5y agoI find Visual Studio auto complete 100x better then VS Code auto complete.
- scoopdewoop 5y agoFor what language? Because I use VSCode for C (microsoft's C/C++ plugin with intellisense) and Typescript (built-in) and it works pretty dang great.
- onion2k 5y agoNot having an IDE doesn't make me remember things. In my case it just means I use a very limited subset of the features, because I'm not being reminded of the things I don't remember and I don't get to see newer language features unless I happen to read a blog post or see something here on HN. I tend to fall back to implementing things with primitives and fail to use built-in functionality.
- Frost1x 5y agoFor the longest time I was a proponent of limited tooling. In many cases its good to know what you're automating or simplifying because I often found myself in situations where I may have environments I need to do things where I didn't have my tooling to lean on. In the past, this was possible without too much pressure on cognitive load. In modern code bases with all sorts of libraries and layers of abstraction ontop of abstraction ontop of abstraction ad infinitum, it's just not feasible anymore. I got to a point in certain development ecosystems where not relying on tooling started to really hinder me. Self reliance was no longer a strength and a point occurred where I simply had to lean on more and more tooling or I'd be lost. I still think if you have tooling that does something, you should understand what it's doing and how it's doing, at least once, then let it do every subsequent need for that task. It's good not to have black boxes in your ecosystem. Unfortunately even that is becoming difficult because of the number of layers of abstraction in some ecosystems (especially web development). I've never been a fan of black boxes that I simply trust and don't know their tradespaces, then hope for the best.
- dolni 5y agoI think one could make the case that IDEs enable the type of complexity you're referring to. I don't know that I view that as a positive. A lot of software development is about managing complexity. IDEs allow developers to be sloppier. In the same way that faster CPUs have resulted in less optimized software over the years, IDEs have resulted in more complex software.
- luckylion 5y ago
- Insanity 5y agoAs the author points out, it does depend on the language. I switched to vim "full-time" when moving to a Go team. (Prev Java). Java is a language that does not lend itself to vim. Even just compiling and running a sufficiently large java program can be a pain without an IDE setup.
- ibraheemdev 5y agoNeovim + LSP for C# development worked really great (until I ran into a Roslyn bug...). You might consider that an "IDE" though.
- mst 5y agoEditor/IDE is, ahem, a spectrum, not a binary. Much holy warring ensues from people forgetting this ;)
- approxim8ion 5y agoSame. I would very much like to use a text editor full-time given how strapped for resources my machine is, but I work on either Java or Angular 90% of the time. The productivity loss is too much to deal with, and the solution is to add a bizarre number of plugins to the editor to the point that it becomes somewhat of an IDE itself, without the guarantee that the plugins will interact well with each other.
- deleted 5y ago[deleted]
- mattgreenrocks 5y agoMaybe I’m weird, but at some point I stopped fixating on which tools to use and just settled on a personal workflow: * terminal open at root of project used for source control * one or more tabs for ssh/VMs etc * IDE/VSCode/vim for editing Any of those is fine. And sometimes I switch between them depending on my mood. If I’m out and about it can be nice to conserve battery and focus by going full terminal mode. If I have AC power and a full screen then I don’t mind an IDE as much. One thing I insist on is doing as much work with git from the CLI. IDEs often do things like staging new files automatically that I’m not a fan of.
- tcoff91 5y agovim-fugitive is also a great way to interact with git since you use vim.
- noidesto 5y agomagit for the emacs folk
- lanstin 5y agoTruly one of the best new things in emacs in some time. Even better than org mode. Tho I still use command line for check ins and pushes, old habits.
- u801e 5y agoI use vim's stdin and stdout redirection to interact with git and can do things like staging or unstaging files or diff hunks and committing from within the editor.
- andruby 5y agoI'm similar. When I need to create a lot of "new" code, I'll usually use nvim. When I need to edit/refactor existing code, I'll more often use atom or vscode. I like both a lot. When bashing out code that is already reasonably clear in my head, vim works faster and with less "overhead". An ide like vscode works better for me when I need a good global search & replace, or something the ide has plugins for.
- clircle 5y agoThe difference between an IDE and a souped-up vim or emacs configuration is ... very little. Your average fancy pants vim config has auto-completion, debuggers, etc.
- GlennS 5y agoI think this is not wrong. When you are using the better quality IDEs (for example C# with Visual Studio, or Java with IntelliJ), they offer you a lot this isn't there in Emacs or VIM. I currently mostly work in Python using Emacs, because I don't know of anything that adds really compelling full-blown IDE features for a dynamically typed language. I will also say that Datagrip and Microsoft SQL Server Studio are both way ahead of any Emacs SQL packages I've tried.
- nwatson 5y agoWith JetBrains PyCharm or the PyCharm plugin in IntelliJ, you can treat all python3 as statically typed ... use the type-annotations and then linter will catch your mistakes.
- clircle 5y agoYes, I agree. Conditional on some "difficult" languages like Java, the experience is quite different. For non-difficult languages like C, R, and Python, the gap is small. I've also enjoyed the Emacs/Python experience :)
- yoz-y 5y agoI find that spinning up QtCreator on a new machine is orders of magnitude faster than transporting a vim configuration.
- matt2000 5y agoNone of these feel particularly true to me, but in particular "less code is more readable" is just so clearly not true. If this was the case we'd all still be using Perl.
- klyrs 5y agoI see some truth to this, under a more reasonable interpretation. Clearly, well-golfed k/j/q/apl isn't doing the reader any favors. On the other hand, unnecessarily verbose code can be just as tortuous as unnecessarily terse code. And when you're comparing apples to apples (e.g. same algorithm, same data structures), shorter code is somewhat correlated to better performance. In terms of developer productivity, less code faster to write and faster to read. To a point. The sweet spot is the shortest code that's still easy to read & write.
- mst 5y agoThat's not even true in Perl. However "less conceptually complex code is often easier to reason about' is absolutely true and it takes most people a fair amount of practice (and at least if you're me, a lot of wondering why your foot suddenly has a hole in it) to properly appreciate the difference between "less conceptually complex" and "less".
- wyager 5y agoI write very different code when not using an IDE. If I’m not using an IDE, my code has to be contextually simpler for me to remember it (because I can’t just jump to definition) which makes my code ultimately better organized. However, I assume this comes at some speed penalty, at least in the short term. For personal projects I don’t use an IDE, but for work because everyone else writes IDE-style code, I also need to use an IDE to wrangle it.
- MontyCarloHall 5y ago> When you have to manually find a file to change a subroutine implementation, or to refactor a subroutine, you will have good file names and a good directory structure. The Antipattern of the directory layout of your typical Java Enterprise Project is a Testament to this. (src/main/java/org/company/product/...) To play devil’s advocate, isn’t the goal of a good IDE to abstract away the actual filesystem organization of the code? As long as I can quickly look up function definitions via the IDE, I don’t care how they’re actually organized on disk. As an analogy, I’m sure my Gmail inbox is internally stored across multiple different databases and would be a nightmare to manually browse at the database level, but I don’t care because I can easily access all my messages through my email client or the web UI. Disclaimer: I’m not an IDE user myself (simply because I’m oldschool, have all the emacs keybindings burned into my muscle memory, and I’ve never taken the time to learn one well), and in principle agree with the author’s point. IDEs are not (yet) at a point where they’ve rendered the filesystem completely irrelevant, although some are getting pretty close.
- scoopdewoop 5y agoI may be talking out of my ass, as I've never used it, but this is my impression of most smalltalk environments, that they just expose objects and functions, not files. For example: https://pharo.org/features.html https://pharo.org/features.html under "Software as objects"
- jbverschoor 5y ago> By not using an IDE, you have to remember the syntax of the language you are using, the subroutines from your own project and their arguments. You also remember (standard-)library subroutines better for your chose programming language. Use an IDE, and discover + learn the syntax by being assisted. Start biking on a unicycle, and fail. > When you have to manually find a file to change a subroutine implementation, or to refactor a subroutine, you will have good file names and a good directory structure. The Antipattern of the directory layout of your typical Java Enterprise Project is a Testament to this. (src/main/java/org/company/product/...) There were no IDEs for Java when it started. And it immensely structured everything. Not having an IDE doesn't mean anything about naming. > With big projects, it might slow you down to have the IDE load the entire project before you can start working. Some Projects with 40000+ files might take >5 minutes to load. But in return you'll get something that will tell you what's going on, or even do hot code swaps, saving you a lot more than those 5 min. > This is almost always the result of bad language design and/or bad library design. An example is developing android apps in Java with Android studio. Here, you will be slowed down a great deal in order to program without Android Studio. There will be a steep learning curve. The IDE does more than just edit code. Welcome to different resolutions, devices, etc. Please tell me you'd rather have the device mess of J2ME // Symbian. > Good Open Source Projects encourage people to clone, fork, and maybe even to contribute to a Project. People are able to directly edit files on github, if an IDE is not required and they know the language being used. Not requiring an IDE makes it easier for blind people, who might be using screenreaders to understand your project, and enables people without modern hardware (which might be unable/impractical to run an IDE) to work on your project. IDEs have makefiles / build.xml / whatever. You're totally uninformed > Have you ever seen a Java Enterprise Project? Sometimes the Java classes in there have 20+ import statements, automatically generated by the IDE. Working in this style, with such long package names and lots of classes/namespaces eventually almost forces you to use an IDE because there is just so much, that it becomes impractical to remember. All Java IDEs support maven or whatever is popular right now. > Not having Autocomplete / Code Generation guides you naturally to writing more compact and idiomatic Code in the Language of your Choice. It helps you to learn language-specific features and syntactic sugar. That's a language design issue. In Java, there is the Concept of Getters, Setters, toString, hashCode and so on. These methods can be auto-generated by the IDE. In practise, this leads to bloat. The IDE is simply compensating for missing language features (built-in hashing of a composite data type, built-in string representation ). That's a language design issue. What a shit article
- deleted 5y ago[deleted]
- city41 5y agoI consider not needing to remember library and api details a benefit. I'd rather dedicate my brain cycles to something else. As for syntax, I don't recall ever struggling to remember syntax of languages I frequently code in. Also the point about IDEs auto generating toHashCode, toString, etc. If your class needs these methods, whether they were auto generated or not seems besides the point. The point the IDE is "compensating for lacking language features" doesn't make sense to me, the code is compensating, whether a human or IDE writes it.
- dntrkv 5y agoYeah the idea that I have to remember everything in our codebase of millions of LoC made up of TS, JS, Ruby, Kotlin, and Java is ridiculous. IDEs allow me to drop into these codebases and be decently productive from the get go.
- nooorofe 5y agoDo you memorize all those IO/XML/JSON/Hadoop (HDFS/MR/Core/...)/AWS/Azure/... APIs by heart?
- zenexer 5y agoThe parent explicitly said they do not want to memorize APIs.
- nooorofe 5y agoI understand, I just wonder if he/she really means to it. Who knows, some people have very good memory. When I work with a new (for me) topic, I am trying to get basic understanding of topic, still it far from remembering exact method signatures.
- falcolas 5y agoWhy do doctors memorize medicines and their effects? Because it's faster to retrieve from memory than from documentation, even automatically presented documentation. It removes a context switch. The "brain cycles" are only run while doing the memorization, not while actually doing the work. > I don't recall ever struggling to remember syntax of languages I frequently code in. Because you've memorized it.
- moron4hire 5y agoWhy is it so important for some programmers to convince others of working the way they work? The complaints levied at Java and Android specifically are issues I've really only seen in that language and on that platform. Excise that and all these arguments feel very flat and empty. It has not been my experience at all that using an IDE means I can't remember my project layouts, API calls, etc. And frankly, this wreaks of the same sort of elitist arguments that only a small minority of grammarians make against spell-check. So what if the tool is a crutch? ALL TOOLS ARE! That's the point of tools, to off-load some forms of manual labor. A table saw and a fence are going to let me make straight cuts a lot quicker and easier than using a hand saw. Humanity grows and life moves on and troglodytes complain that the field is being "ruined", but what they really mean is they can't keep up.
- voidhorse 5y agoI've used vanilla vim more or less without plugins and with a few keymap tweaks for the majority of my software development work. Every now and then I have to use an IDE to match some upstream requirements, and I much prefer using a near featureless text editor. Sure the auto-suggest, tab completion, etc. are nice, but I feel like the downsides aren't worth it. I also find it's easy to get lazy when using an IDE and produce sloppier code on the whole. In most cases I feel that using an IDE nets you short-term, micro-productivity gains and also nets you long-term rot/maintenance headaches. imo it's typically not worth it.
- noidesto 5y agoI share the same sentiment after using IntelliJ w/ Pycharm for a little over a year.
- schipplock 5y ago> Some Projects with 40000+ files might take >5 minutes to load. I would buy a more powerful computer. I have a project with 34908 files and IntelliJ doesn't care. Not quite 40_000+ files but still a lot :). Also with IntelliJ I make fewer mistakes. This "thing" is just more intelligent than I am. Add "SonarLint" to the game and I sometimes don't even know _why_ I am wrong :P. Also I think "Avoid IDE lock-in of your project" is the wrong subtitle for the following paragraph. You would have the same problems by using just a text editor. Rd6n6 mentioned refactoring. Do that in an editor and you will go crazy after a while :). I love and hate my IDE :).
- mcguire 5y agoPro tip from an ex-performance guy: Allowing your developers to use machines more powerful than your minimum targeted device is a very good way to produce software that will not run on your maximum targeted device.
- h4x0r12345 5y agoThe minimum targeted device is sometimes not even capable of running the development environment. Doom was developed on $10k NeXT workstations. Good luck trying to develop Doom on a 386.
- habibur 5y agoYou need an IDE for Java. That language is built for IDE. The requirement is a little bit less for some other popular languages.
- wokwokwok 5y agoListen, long story short: just say no to nonsense like this. Given the choice of a) tooling, or b) no tooling, you’re not being smart, cool or clever by choosing b. Obviously, what tools you pick are important and heavy IDEs like IntelliJ are a trade off between speed and functionality, and yeah, more nimble tools do exist, and it’s definitely worth trying different development tools to see what makes you most productive. …but “no IDE” is just rejecting everything because you didn’t like one thing; it’s just being lazy.
- bbrree66 5y agoAgreed. It's obvious this is written by some pseudo intellectual who wants to feel smart and different by saying they don't use an IDE. Benefits easily out weigh any downsides.
- newbamboo 5y ago“Men have become the tools of their tools. Money is not required to buy one necessity of the soul. Most of the luxuries and many of the so-called comforts of life are not only not indispensable, but positive hindrances to the elevation of mankind.” Henry David Thoreau One day the IDE will do most of the coding. Users will just click “ok” and spend most of their time asking IT to reboot and reinstall things until it all just works(tm).
- MonkeyClub 5y agoThis isn't an actual verbatim Thoreau quote, it's rather a mishmash of disparate sentences from Walden,[0] so perhaps the use of the quotes is mistaken. The sentences do carry a general spirit, however, which is very nice and pleasing, until you're reminded that Thoreau's rugged existence in nature was supported by his mum cooking him dinner. I would instead offer the following sentence from Walden as a better encapsulation: "The best works of art are the expression of man’s struggle to free himself from this condition, but the effect of our art is merely to make this low state comfortable and that higher state to be forgotten." Namely, our arts and crafts come to cater to the alleviation of the burden of our physicality, yet neglect the needs of our spirituality. I doubt that either the command line or an IDE can cater much to spirituality, although I've heard some argue that there's much food for the soul in Emacs and Lisp. [0] https://gutenberg.org/files/205/205-h/205-h.htm https://gutenberg.org/files/205/205-h/205-h.htm
- bootlooped 5y agoThere is a common perception with electric bicycles that the rider will pedal less hard to go the same speed. But there is an alternative: they could pedal the same amount and go faster. I kind of view IDEs like that. You can use it as a crutch, or you can take the energy you would have used thinking about the things the IDE is now doing for you and focus it elsewhere.
- lifeisstillgood 5y agoveering off-topic, that's one of the problems I have with electric bikes - they stop being bicycles and become another kind of vehicle - a faster vehicle that needs longer stopping distances and now has a highe r fatality rate when colliding with a pedestrian. We see this in London cycle lanes. Some cycles are doing a commute, some are trying out for the olympics, some people are doing 25 on a electric scooter and these are alien - hard to predict because they don't obey our intuition about physics. A guy on a scooter does 10mph tops and puts his foot down a lot.
- rohansingh 5y agoWhat blows my mind is that in New York, we've decided to deal with this by requiring speed governors on pedal-assist bicycles to limit them to around 20mph... while they're required to share the street with cars that are free to travel at almost any speed.
- deleted 5y ago[deleted]
- u801e 5y agoTraffic rules basically give drivers a way to deal with other vehicles going different speeds. So a the driver of a scooter going 20 mph and the driver of a car going 40 mph can share the same road, just like a driver of a truck going 40 mph can share the road with the driver of a car going 60 mph.
- 5y ago
- cgh 5y agoFor context, the author is a student with little real-world work experience producing software for a paycheque. To put it mildly, there’s a lot more to writing software in a modern work environment than your choice of editor or whatever.
- h4x0r12345 5y agoExactly. The youngsters like to show off their L337 hacky editor configurations. The rest of us are just getting actual work done in IntelliJ or Visual Studio.
- spapas82 5y agoI was developing python/django for a couple of years in notepad++. I had a very slow computer this time and using anything else seemed way too slow. The featured I missed most from notepad++ was not being able to quickly open files for editing (ie like using ctrl+p in vscode). Beyond that, it was a great experience. Of course, using python contributed to that great experience since most things can be easily remembered and the autocompletes are not so useful due to the dynamic nature of the language. When I needed to do Java/spring development I always fired up eclipse even if though I knew it would take 5 minutes to start and a couple of seconds for each suggestion to appear. However, trying to develop in Java without an IDE by having the javadocs open and copying and pasting all the package and class names all the time and missing everything static typing offers your is a nightmare!
- fartcannon 5y agoIn Linux, it often feels like the whole OS is the IDE. In the same shell, you can edit source files, compile, debug, execute, rename, search, create and execute scripts to do literally anything with any language, use git, surf the web, update, reboot, launch a game, etc, etc. An IDE on top of that always felt restricting to me. Like why limit yourself? But maybe that's a windows/Mac thing.
- bitwize 5y agoWhat about refactoring tools? What about integrated debugging, stepping right into the code you're editing on your screen? What about hot reload? If Unixheads would stop pretending their stone-knives-and-bearskins development tools were equivalent to full-fledged IDEs, development would have advanced much more than it has decades ago.
- fartcannon 5y agoI use both, one method is just less restrictive.
- mst 5y agoThe whole "real men use vi" type superiority complex failure mode is intensely annoying (and I say this as somebody who often has original ex-vi installed) but the inverted version where you just have a superiority complex from the opposite direction isn't actually any better. It continues to amaze me that "it's worth becoming familiar with a wide range of tools and then pick the one that's going to work best for you in any given situation" is a concept so many people have trouble with.
- fartcannon 5y agoDef. Just be careful not to read passion as a superiority complex, or a recommendation as condemnation.
- 5y ago
- MagicWishMonkey 5y agoI know it's a personal anecdote, but 100% of the devs I've worked with who refused to use an IDE ranged from below average to flat out bad at software development.
- walshemj 5y agoIsnt an editor with syntax highlighting, Atom for example and an IDE
- bigbillheck 5y agoI don't find any of that person's arguments particularly compelling, especially this one: > Respect the Unix Philosophy I have no respect for the unix philosophy. They go on to clarify: > (Visual Studio's poor man's autocomplete is a prime example) And so from this I deduce that the author considers autocomplete to NOT be part of the "one thing" that an editor, under the Unix Philosophy, is supposed to do. But both emacs and vim have autocomplete capability, so either autocomplete in an editor is only philosophically acceptable if it's good enough, or emacs and vim are not worthy of the Philosophy.
- klodolph 5y agoThese days I'm seeing more common support for using an IDE with an external build system. Best of both worlds... you get to have the IDE add the tedious import statements at the top of your file, and people without the IDE won't have any problems with your project. Depending on the language and build system, this might be something I set up manually (set up an IDE project to mirror the build system), something you can set up automatically (export build system to IDE project), or there might be a standard layout for source code that mostly works.
- the_third_wave 5y agoI think the benefits of working with KISS tools - the opposite of 'everything but the kitchen sink' in Emacs parlance - is that it significantly lowers the cognitive load. This may sound odd when comparing a rather bare-bones vi + tools setup with a bells-and-whistles IDE like Visual/Android/whatever Studio but it just ends up working that way for me. I already need to keep enough state in my head for the project I'm working on so I'd rather not have to worry over the state of whatever tools I'm using. As an aside, I feel the same about the unbridled growth of tooling around certain languages (Javascript being a prime example) and environments (Android comes to mind). Maybe it is just because of the way I started out with 8-bit assembly where a macro assembler was a luxury which could not entirely be trusted to do the right thing but I know I'm not the only one.
- bitwize 5y ago> I think the benefits of working with KISS tools - the opposite of 'everything but the kitchen sink' in Emacs parlance - is that it significantly lowers the cognitive load. No. You're wrong. Not having the right tools raises the cognitive load. You just think it's simpler because you are severely restricted in the complexity of the programs you can create with just your brain and the documentation. IDEs expand the complexity of what you can build and make you more productive building programs of any size, because features like autocomplete and refactoring take thr cognitive burden off you.
- the_third_wave 5y agoYou forgot to add "for me ...". You also implicitly defined IDEs as "the right tools". After that you imply that those who do not use "the right tools" (in your definition of "right") are "severely restricted in the complexity of the programs [they] can create". In other words, you state that your way is the right way while my way is wrong. Notice I did not state that my way is the right way for everyone? What makes you think yours is?
- bitwize 5y agoIt's one of those "the mouse is objectively faster than the keyboard, no matter how much it feels otherwise" things. So much of the taxing minutiae of programming is automated away by a good IDE that, unless you're working on a very small project, the time and effort saved is worth it.
- oneplane 5y agoNone of this matters in the slightest as soon as you have to work with other people on stuff. At that point common tooling is more important than specific personalised tooling. If everyone is using IntelliJ and you're using Atom, it's going to be problematic. Not because of either of those tools, but because you now have a discrepancy that is not relevant to the work you're doing yet it's creating problems for the work you're doing. Adding friction like that doesn't help anyone. "Works on my machine" doesn't just apply to the artifacts you build, it also applies to the way you work on your project. Of course there is some difference between multiple people editing random plain text in a random editor and multiple people building a piece of software with a toolchain, deployment strategy, tests etc. If everyone in your team can scaffold the tests in 1 second because that's what the IDE does, and you're the only one that has to burn half a day on manually stubbing out the same scaffolding, you're the problem.
- deleted 5y ago[deleted]
- Lio 5y agoI don’t quite get this as an argument for forcing a prescribed IDE on team members. You mention scaffolding tests, things like this can be left to external tools and then it works for all IDEs and all editors. Then you can let people use what they find most ergonomic.
- zo1 5y agoNot OP. But having to sit for an hour watching some Vscode dev struggling to run tests or get auto complete on some random function is a waste of time. They spend more time faffing about fixing and fiddling with that than it would take to install a proper IDE and load up the same project and have it 100% work. Like I get it, some people know their language inside and out and can fix it in a second because they know all the pitfalls and inner workings of the tool chain. But 99.5% of them don't, yet when they fix it they act like code ninja messiahs because they configured some random json config file after googling it and it worked. That's all I see Vscode users doing.
- sod 5y ago> By not using an IDE, you have to remember the syntax > because there is just so much, that it becomes impractical to remember I got more comfortable and faster with large projects when I stopped caring about remembering and switched to search & find. I'm always amused seeing someone trying to navigate a directory tree of 2000 files.
- elondaits 5y agoThere are some things that I feel that IDEs do better than a terminal or editor: - Running tests (test running requires juggling a hierarchy of tests, their results, their declarations, plus with an IDE you can run tests directly from the test declaration) - Lint / Static analysis (you get the warnings automatically as you code) - Debugging (it's easier to watch several things at once, easier to inspect a complex object, you can inspect through a tooltip when hovering over a variable on the code) I really don't care about how anyone prefers to work, but I fear that anti-IDE people in many cases don't even debug (except by printing), lint or test... which I DO care about, if I have to work with them. These things are about being a responsible coder. I could also add that the "Local history" feature of Jetbrains IDEs can save code from accidental deletion, which is another thing that goes beyond personal preferences.
- Lio 5y agoSeems like the features you’ve mentioned are already available in most editors or through external tools such as test runners/watchers or debuggers. For example you mention the “local history” feature of Jetbrains IDEs as being essential. Vim, and I think Emacs, have had that built in for more than 20 years in the form of backed up undo trees. There are still somethings IDEs can do that editors can’t e.g. deep static analysis, but with LSP support that set is reducing all the time.
- elondaits 5y agoThe "local history" feature is not just undo... it can also recover deleted files. I could be wrong but I assume vi doesn't do that. I'd also argue that it's friendlier (surely not faster) to navigate if you need to find the exact point at which you made your mistake. I know that some editors have a lot of advanced features / plugins for coding. I still think a lot of people prefer editors over IDEs because they don't debug, or lint, or test... not because they're terminal wizards that are slowed down by any sort of GUI.
- bastardoperator 5y agoI have no need to do any of this locally outside of debugging when I can commit/push early/often and get the same feedback from my CI/CD process. It also solves the "local history" problem because my code lives on a remote. If anything what you're describing sounds like a lack of standardization or gates in order for code to reach production. That's an engineering problem, not an IDE vs text editor issue.
- bluedino 5y ago"The benefits on not working with enterprise Java"
- wvenable 5y agoThis definitely feels more like a rant about Java than about IDEs.
- BrianOnHN 5y agoSwitching between languages frequently, VS Code is great. Other IDEs are better for specific languages/contexts. However, I credit my understanding to the time I spent in Notepad++ and times I explored code on the whiteboard while reading docs. Thus, I feel my "internal compiler" would not be anywhere as useful if I had always relied on productivity tools (IDEs). That said, my input isn't maximized by more efficiently producing the same thing, like a factory, in which case I say IDE all the way.
- bitwize 5y agoAlways use an IDE for significant software projects. Maybe not for small scripts, or for faffing about on your own learning to code Charles Petzold style. But for professionals working on production code, artificially restricting your productivity by denying yourself the time- and effort-saving features of a good IDE is tantamount to goldbricking.
- jlokier 5y agoCounterargument: Artificially restricting your productivity by denying yourself the features of a high-functioning daily-driver editor and CLI git+make and replacing them with a low quality IDE that lacks useful features and the features in it don't work very well anyway is tantamount to goldbricking. This is very common in embedded systems. I ditched one such IDE in a project a couple of years ago and switched to Emacs + git + make + command line compilers. The productivity improvement was huge. Finally, decent tools. Even debugging worked better via command line GDB. It was more reliable than the one in the IDE, and scriptable. The quality of what went into the repo went up as well.
- chmod775 5y agoWhen people say "no IDE" what they usually mean is the concept of an IDE turned on its head. Your command line with vim/emacs and other tools that together arrive at the same feature set as a Integrated Development Environment are still... a development environment. Not using an IDE doesn't mean you can't have autocomplete, syntax checking, linting, automated rebuilds, and all that other good stuff. It's just not all in one package. And yes you shouldn't force your choice of (integrated) development environment on others. Different people have different needs: News at 11.
- deleted 5y ago[deleted]
- S_A_P 5y agoSometimes people need to prove that they are a rare breed of pure developer. Their superior discipline and tastemaking in the development toolchain far surpasses the masses of regular developers who are dependent on old slow crutches to get any meaningful work done. Meanwhile there are real 10x developers out there that while they care about the tools stay out of the weeds of them. This line of blog post reminds me of a Paul McCartney interview I read where someone asked him what kind of strings he uses on his guitar. Paul replied “shiny ones”. I think Paul is actually a lot more technical than he lets on in interviews and probably knew full well what kind they were. What he communicated to the person asking the question was that it doesn’t matter so much.
- beebeepka 5y agoReal men don't need IDEs, nor filthy GUI tools for kids. Shit was the defacto culture at the two Linux only shops I've worked at
- ausbah 5y agoreal men use punchcards write bug free code from the get go
- beebeepka 5y agoI've had some 20 year olds with such attitude. Me: you realise always doing things the hard way does not improve your output, right? Young jedi: nah, it's fine. GUI only slows me down, also Perl is the best Me: alright then
- neonbones 5y agoWell, this is my friends and me in my early 20s. The only true way is to use vim/emacs, CLI tools for everything. GUI is for losers. And the only TRUE and SERIOUS languages for COOL KIDS are C++, Haskell, and Perl. If you don't use them, you are code monkey. And here I am, doing everything in typescript for my job, use VSCode and Webstorm, in love with GitKraken. What a shame. I'm not a cool kid anymore.
- IlliOnato 5y agoThe author seems to use IDE for one purpose only: to auto-generate boilerplate code. But this is far from the only benefits of IDEs! I rarely use IDEs for code generation, I don't even like autocomplete. For this stuff I use code snippets; I develop collections of those for any language I use. You don't need an IDE for it; any good text editor has such features. For me really important features of a good IDE are: - Navigation. Being able to right-click on a function or method name and jump to its definition is very handy. Yeah, I may remember where it's defined; I can also use grep (which does not work all that well for methods). But jumping is so much faster and does not take you out of the flow. - Code refactoring. I am refactoring code continuously as I work with it. Even simple stuff like renaming a variable or a function (or a method!) is much easier with an IDE. - Error highlighting. Note: I can and sometimes do work without an IDE (esp with more obscure languages which don't have good IDE support). There is some fun it it too, like going camping and living for a while without creature comforts like running water and electricity. But normally, if a tool is available, why not use it? About languages: I agree that a well-designed language allows you to factor away most boilerplate code. (This was one thing I really liked about Perl! It basically allows you to develop a language dialect for your particular needs. The downside with Perl was that everybody was "reducing boilerplate" in their own way, but this is another story) Just my 2 cents :-)
- jcelerier 5y ago> - Error highlighting. this so much. it's priceless to just type a line and have some warnings such as "hey, you're moving this value but using the variable afterwards, take care" or "hey, it looks like you are only using this argument as a reference, consider not passing it by value" just pop up next to the offending line ; when compared to an IDE-less workflow I pretty much divide the amount of hitting "build" I need by ten or more since the IDE tells me everything wrong beforehand.
- dharmab 5y agoI get those exact same warnings in Vim :)
- 5y ago
- hsaliak 5y agoI don’t use an IDE but I use emacs. Heavily use Helm, heavily use its ag integration to navigate around projects and I yasnippet useful patterns and rely on them a lot. Am I using an “IDE” - no. But am I using tooling to make my life way easier than a raw text editor? Absolutely. Will my productivity fall off rapidly without this tooling? Most likely. So I reject the argument made in the article. Just choose your IDE wisely and make the tradeoffs you want to be productive.
- enriquto 5y agoUsing an IDE is like playing the piano and putting stickers with the name of each note. There's no objective downside to doing this, but it's not really going to help you play better music once you go beyond the very basic stuff. It may give some people a false sense of security, but it won't make a difference to a professional programmer. Some of those programmers (but not all, and that is OK) will become annoyed at the stickers once they know how to play the instrument.
- thinkharderdev 5y agoI'm not sure the piano analogy is really apt. A piano has 88 keys (and really it's just the same keys repeated across multiple octaves) so any competent player will of course quickly memorize the keys and playing the piano would be impossible by actually reading the labels on the key anyway. Doing software development means using a variety of different standard APIs which many combinations of methods/parameters/etc as well as any number of custom, project-specific APIs. Sure, if you work on the same project using the same codebase for years on end then you can probably effectively memorize all the relevant APIs, but few developers are in that situation. You move from project to project and have to drop in to large, existing codebases with their own conventions and abstractions.
- unknownOrigin 5y agoIf you're no using an IDE, you're not working in big enough codebases or are not required to move fast enough - either way, I'm not really interested what you have to say. After you work in this business for over a decade, you'll know dumb ideas just because you've seen them several times before. "No IDE" is just that. A dumb idea.
- stitched2gethr 5y agoWhat is it about a large code base that requires an experienced developer to use an IDE?
- ju_sh 5y agoI can understand people using text editors (a la Vim, Emacs) if they've been using them for donkeys years and are extremely proficient and productive with them, additionally for making quick changes to files from the terminal. However, why any developer would reach for one of these tools now when working on application development is beyond me (other than to feel like a 1337 OG hax0r of course) Power tools > hand tools
- atribecalledqst 5y ago> The Antipattern of the directory layout of your typical Java Enterprise Project is a Testament to this. (src/main/java/org/company/product/...) My eye twitched when I read this. My company recently switched to a new build system and for whatever reason this required (I guess??) a change to the src/main/java... structure. The commit history going back over a decade, gone. It's not great.
- npapag7 5y agoYou must know how to work without an ide. Then you can learn on top an ide.
- zerubeus 5y agoNo thanks I can't live without Intellij Ultimate + ideavim, I just can't...
- noidesto 5y agoI'm on my way back to doom emacs after a year using intellij + ideavim. I get 90% of the features with LSP. Faster performance. Magit. Extreme configurability. It's easier to write a quick function in elisp and have it at my fingertips at anytime. (ie. M-x my/do-repetitive-thing)
- noidesto 5y agoDoes emacs/vim using lsp count as an IDE?
- ch_sm 5y agoThe obligatory XKCD: https://xkcd.com/378/ https://xkcd.com/378/
- timdaub 5y agoHey Alexander, thanks for your genuine post. I can't help but notice the big red disclaimer you put on the beginning. Once I wrote a blog post about a thing I didn't like about Typescript and submitted it to Hacker News [1]. Bad choice. The hate was immense and unnecessary. I even had one guy write a long post about what a "soy dev" I am. That made me feel sad and dislike the HN and dev community. Anyways, I just wanted to say that I appreciate your blog post and that I think you've made some good points. Thanks! -1: https://timdaub.github.io/2020/09/01/typescript/ https://timdaub.github.io/2020/09/01/typescript/
- jillesvangurp 5y agoThe downside is losing access to refactoring, auto-fixes, integrated debuggers, auto complete, countless plugins, etc. Some of that stuff is nice & helpful. Some of it stops you from doing silly things. And some of it automates the detection and fixing of problems you would otherwise introduce without realizing. The latter is why it's important to use proper tools. Because introducing such preventable issues to any code base is just really not excusable for a professional software developer. Of course, tooling is better for some languages than for others. But even the ones you think are not that well supported actually do have some nice IDEs these days. Worth checking out such tools. Of course you can compensate with discipline and use command line build tools to tell you what's wrong and then manually look up the code location and fix all the issues .... or you could just autofix the warning in your IDE and move on to dealing with more interesting problems. As a good friend used to tell me, laziness is a sign of intelligence. In IDE terms, if you spend half an hour manually fixing something that a tool could have fixed for you in seconds, you are being an idiot. Or alternatively, if you can't be bothered to understand and use the command line tools available to you, do consider using an IDE as it will save you some time mastering those tools you clearly can't be bothered with mastering. It's the intelligent choice.
- z3t4 5y agoAnother advantage is better naming, better parameters, as you need to remember them. I would say less bugs also as you have most of it in your head.
- tester756 5y agowhenever people are talking about not using an IDE I do wonder whether they had an opportunity to use Visual Studio's features like expression evaluation during debugging with access to local variables, ability to change code at fly, ability to execute code in immediate window with access to local variables
- wvh 5y agoIf I am the main developer on a three year project, I use whatever editor, command-line tools and custom scripts I need to get the job done. The whole project, from code to ops, architecture, security and documentation, is in my head. However, if I'm thrown in half-finished projects as consultant, the tooling in IDEs can help me to get a grasp on what needs to get done without necessarily having to construct the whole map inside my head. Whether this approach leads to better code is highly dubious, but one doesn't always get to pick outside factors. These are just tools, each with their own purpose, benefits and weak points. The main criticisms of IDEs seem based on a certain type of developer that does not know the world outside of their favourite IDE and programming language, which of course is not a problem of the tool itself.
- willjp 5y agoI guess it depends on your definition of an IDE, and where you're most comfortable/productive. I see a lot of posts about autocomplete, refactoring, linting, tooltips, tests-by-cursor/file, snippets. Thanks to a very friendly plugin community, you can get all of these in vim, emacs etc. I like vim, and it has nothing to do with hubris. For me it's mostly about: 1. proximity to the terminal: I find cli tools very useful for most of my daily tasks. Using an editor puts the terminal first, and my editor second. One-off tasks are a tmux split/tab/session away and everything is neatly organized. 2. consistent interface: Working with a terminal is neat because everything is text and it is composable. Working in vim, all menus are just buffers - you can navigate them the same way as you would your code. Searching, navigation, jumping between windows/menus, filtering -- everything stays consistent. 3. quick n' dirty workflows: If I identify a task-specific workflow I want to improve in vim, it is pretty easy to drop in functions and/or keybindings to do what I want. The interface was built in a way that makes this easy. Writing a plugin for visualstudio, or jetbrains etc. requires knowing a lot more about the editor you're working in and how it's built. Maybe it just feels that way to me. 4. 0% adjustment when working over SSH: tabs, splits, etc. both in my editor and terminal are identical in an SSH session. No discomfort. Mostly useful at home. 5. low distraction: This one's personal. IDEs are intimidating, hundreds of buttons, menus, logs prompts all fighting for your attention. If I click through a deeply nested menu I often forget what I'm doing - especially if there is a fire. Functions and Muscle memory works for me. It clearly does not work for everyone.
- Macha 5y ago> Thanks to a very friendly plugin community, you can get all of these in vim, emacs etc. I like vim, and it has nothing to do with hubris. > 0% adjustment when working over SSH: tabs, splits, etc. both in my editor and terminal are identical in an SSH session. No discomfort. Mostly useful at home. Aren't these two benefits mutually exclusive? If you're got a very personalised vim setup, then vim on your workstation is going to be potentially dramatically different to vim when sshed into a remote machine
- willjp 5y agoThat's a good point! If you have your own user account you could dump your .vimrc on there.. but maybe you don't want a lot of vim plugins on a server. Now that vscode has a plugin that uses your local setup to edit files over SSH, my argument is a lot less compelling. Even at home, I have a lesser vimrc I provision to servers - I found it hard to justify installing treesitter, linters, etc. on a server where I'm mostly dealing with json/yaml/shellscript.
- agumonkey 5y agoone trauma from eclipse days, is that for instance, libs thus classpath management was left to eclipse devs .. and I had no idea what was going on, why it worked, what differences between the options .. when I could write a makefile to finally jar / launch a java app on my own, I felt such a relief..
- slifin 5y agoThere's no rule that says you can't use multiple editors I'm happy taking advantage of the strengths of many editors for many different situations
- Shorel 5y agoWell, I get linters (errors are highlighted even before the file is saved), jump to function definition and a lot more in Sublime Text. I mean, I don't use an IDE, but at the same time, reading the comments, I don't miss much of what it offers.
- djhworld 5y agoEhhh, I dunno. I've yo-yo'd between minimalist setups and full blown IDEs over the years. Nowadays I'm happy with IntelliJ for Go development and a little bit of Rust. There's something quite freeing from not having to tinker much with configs and just get on with actual work! Admittedly I do use the terminal feature in IntelliJ quite extensively so I'm not making full use of the features, but meh.
- liorben-david 5y agoThis is the equivalent of never washing your hands to build up immunity. You're just spending more time and energy to solve a problem that the tool can solve for you. Are you more independent for it? Sure, I guess. But I'd rather be efficient then get brownie points
- graycat 5y agoSo, we are talking about tools. First some generalities: We can expect that considering tools has to be complicated, e.g., apparently the rise of civilization involved the development of many tools for many purposes. Closer to Hacker News, there is a LOT of data. The explosion in price/performance of computing and digital communications has the amount and variety of data growing. So, handling data can be a challenge, and picking tools can also be a challenge. For handling data, there are some tools/data types, e.g., SQL, IDEs, Word, TeX, Aspell spelling checker, the old file search utility grep, HTML, JPG, comma separated values (CSV), spreadsheets, .... Of course, if concentrate on one source of data for a few narrow purposes, then can have some specialized tools that were expensive to develop and needed training to learn to use but with a lot of usage can be very productive. Maybe a good analogy is the factory that produces the cans of beef ravioli that I eat sometimes for a fast meal -- no doubt they prepare ravioli by the square mile, and I doubt that they use a rolling pin! Then there are people; they tend to be different: Some of these people work in a gold/copper mine, coal mine, on a huge fishing trawler that goes from catching the fish to having them frozen in retail packages, ..., down to changing the air filter in the family car once a year, getting the garage door back on track about each two years, cleaning up after the kittens have accidents, .... Some of this work uses big, expensive, specialized tools, and some uses just simple, old, general purpose tools, hammers, pliers, screwdrivers, maybe Vise Grips, a 1/4" electric drill, etc. So, to give some evidence of case n = 1, me, and in computing, I use various tools. Examples include Google, Wikipedia, YouTube. But for what I do on my PC where Google, etc., doesn't help, I settled on a broad strategy: As much as I reasonably and efficiently can, stay with text, standard ASCII (maybe more accurately with some UTF definition) text. Then to manipulate this text, use my favorite text editor, KEDIT. I can customize this editor using its macro language, Kexx, a version of the M. Cowlishaw Rexx. Rexx is no toy -- before internets or the Internet, IBM had something similar in their internal computing, and a lot of it was run by servers written in Rexx. Currently I have something over 250 Kexx macros for KEDIT. So, where I make use of KEDIT directly? (a) Since some of my most important writing is pure/applied math, I've had to get good with D. Knuth's math word processing TeX -- I've written about 100 macros in TeX. So, I use KEDIT with its macros to type in documents in TeX with my TeX macros. Now that I'm good with TeX, it is also my favorite word processing for letters, business cards, and more. (b) For remembering URLs, phone numbers, mailing addresses, other little items of information, I have a very simple little system based on KEDIT and a few, simple macros. All the data is in one file of, currently, 3,368,455 bytes. Currently I have 5947 such entries starting in September, 2005 and more in other files going back some decades. With the 5947 entries and 3,368,455 bytes, that is an average of 3,368,455 / 5947 = 566 bytes per entry. Since 5947 / 16 = 371 on average I add an item to this file about once a day. KEDIT makes it fast and easy to count the number of entries. (c) In a file I maintain with KEDIT, I keep medical, diet, exercise, etc. history. I have some macros I use to extract data to read in with Excel and draw graphs. That Excel will read in data from just simple text files is terrific. (d) Mostly KEDIT is good for editing files one or a few at a time, but I use the Windows file system as a taxonomic hierarchy for organizing the files. Then I have a little program in Rexx that puts the data describing a file system subtree in a text file with several columns of fixed widths and use KEDIT to sort, search, select that content. (e) One of my favorite macros is IDC, insert dated comment, e.g., Modified at 13:24:42 on Saturday, August 21st, 2021. So, with IDC I can slap time/date stamps on content and do so many times a day. Yes, the little macro reads the file type and puts in appropriate comment delimiters. Just these time/date stamps are a good, fast, single way to provide first-cut documentation of work -- that months or years later are great to have if don't have anything else. (f) I wrote a little KEDIT macro calc, abbreviates calculate to evaluate simple numerical expressions. E.g., at one point in my career my manager believed that a disk drive of 100 million bytes was large, much larger than necessary. At Amazon I just ordered an external hard disk drive with 5 trillion bytes. So, using calc, we can find the ratio (5 * 10*12)/(100 * 10*6) = 50,000 (g) So I write code in Rexx, Kexx, TeX, C (occasionally), and Microsoft's .NET. And now that I'm good with KEDIT, I use it to write all this code. In .NET, with a little C, for my startup I typed in code in 100,000 lines of typing with 24,000 programming language statements. So, about 75% of the lines are documentation for me to understand the code! Some random exogenous events pulled me away from that code, but I will be back to it soon, and then the comments will be very welcome, get me back to 100% in understanding all the code. Most of the comments have tree names on my development computer of, usually, HTML files of .NET or other documentation, and, sure, I have a macro that helps with that. E.g., with one keystroke, Firefox will display a file of HTML documentation. The comments are essentially just text, technical writing, and KEDIT with its formatting is good for that. Also my standard spell checker, Aspell, works with that text. That is, the code is, to KEDIT and Aspell, just text. (h) Sure, I use KEDIT to write email and often to read email. I went for some years using some code I wrote in Rexx for email -- then email got more complicated and I had to use Outlook or now what my ISP provides (I intend to return to Outlook). But when I write email, I still use KEDIT. When I receive email that is just simple text, I use KEDIT to format (flow it) and read it. (i) Sometimes I still want to print some things, e.g., shopping lists, envelopes, etc., and use KEDIT for that. I'm numbering, labeling, my external hard disk drives with PASSPORTnnn sequentially with integers nnn, and I print these with KEDIT. (j) Sure, eating is necessary, and I cook my own food. For that, I develop recipes and use KEDIT to create those. To take a recipe to the kitchen, I can print via KEDIT. (k) Sometimes URLs have hex characters. So, I have a little KEDIT macro to convert those URLs back to just text. (l) And, sure, I'm using KEDIT for typing this Hacker News post. So, as in these examples, (a) -- (l), as much as I can I use just simple text files maintained with KEDIT. Then I get good with KEDIT, macros, muscle memory, etc. and use that skill as much as I can. I can't use KEDIT for everything, so sometimes I use other tools. Once I tried to use Microsoft's Visual Studio. I didn't like the documentation but charged ahead. I created a project, and before I had typed in any code I looked and saw a directory subtree with maybe, IIRC, 50 files I knew nothing about. I stopped right there. Maybe someday I will see need to use an IDE, maybe Visual Studio, and will return to it. All the programming I do is in languages where the code is in just simple text files. To me that use of simple text is terrific, and I take advantage of it. So, net, I use KEDIT and simple text files for dozens of varieties of work; in principle each variety, done with enough volume, could be done with more productivity with a specialized tool, but for just my work, where I use KEDIT and text files, none of the varieties are worth the investment, overhead, of a specialized tool. By analogy, to me KEDIT is like a Swiss Army knife with 15 tools including a can opener. If I opened enough cans, I might want some restaurant kitchen $500 counter top electric can opener, but for me, now, the Swiss Army Knife is better.
- blunte 5y agoThings I would greatly miss without Rubymine IDE: 1. interactive debugger 2. quick jump to function/constant implementation 3. show usages of function/constant under cursor 4. source control (Git) diffs 5. database browser There are probably other things I'm forgetting to mention. Sure, all of these can either be cobbled together to some degree out of the fundamental individual tools. You can add plugins to Vim or Emacs to help with many of these. With enough effort you can get close to what a polished IDE offers... but you're effectively making your own quirky, fragile, non-portable inferior IDE. Yeah, a heavy IDE is slow to start and resource hungry. But hardware is cheap, and you only start the IDE once every few days (or weeks). When I'm on a remote server, then I'm in a shell using vim. Fine, and doable. But to really build and get things done, saving my brain for actual problem solving, I wouldn't want to give up my IDE. Also, some of the cons on OP's list are problems with the language being developed in, not the IDE.
- crispyambulance 5y ago"Not using an IDE" can mean very different things depending on how you define "editor". I would say that an editor that INTEGRATES knowledge of your source in some way, like auto-complete, or red-squiggles, is very much a big step towards an IDE and should could as "using an IDE". Whether it does that using plug-ins/extensions or natively doesn't matter. If it has that functionality there's not that much more separating it from an IDE. VSCode, for example, is more like an IDE than an editor especially as you add more and more extensions.
- tasuki 5y agoWow these are really weak. And I'm not much of an IDE lover...
- devsatish 5y agoIDEs are tech equivalent of power tools. You need them. Of course you can always chisel down when needed, but tooling helps.
- Zababa 5y ago> simply listing Reasons, The Antipattern of the directory layout of your typical Java Enterprise Project is a Testament to this., contribute to a Project, idiomatic Code in the Language of your Choice. What's with the wild capitalization?
- blumomo 5y agoI started with Q-Basic about 30 years ago, which came with an IDE which was as powerful as Textedit or Nano. No auto-completion, no refactoring, nothing. Then came Delphi, MS Visual Studio, Visual Basic, Eclipse, IntelliJ/AppCode/Android Studio, Xcode, Visual Studio Code - all in that order. I came to realize that the more the IDE did for me the worse I became as a programmer! Today I’m back to plain text editing with a powerful text manipulation tool - (Neo)Vim. And I program like back in the 90s — I have all file names, methods, the complete code structure of _all_ products and services of our company on my mind. I can see the final solution in my mind before I start typing a single letter. Refactoring is done with regex, it works the same in all programming languages. I work full stack. And I’m really fast. And I’m not tired by having all code and APIs in my mind. Because programming is pure joy again for me. Pure text editing is what makes me fast and having tons of fun. I ship so fast and things very rarely break. Bugs are fixed within minutes because I see the root causes flashing up in my mind. To me IDEs are for intermediate programmers. It’s a good thing to temporarily improve your skills but I don’t see them as a means to achieve mastery, at least not for the mastery that I could achieve.
- YuukiRey 5y agoOne of my personal role models, https://github.com/Gabriel439/ https://github.com/Gabriel439/, uses mostly vanilla Vim. Maybe they'd be 10x as productive with an IDE, but I doubt it. And in any case, the difference in quality and output between them and me is certainly not the tools. I don't think the tooling matters at all, unless you work in a very specific field where certain tools may be mandatory. Whether you look up APIs in documentation or read that same documentation in your editor, who cares? Seeing red squiggles as you type or in a terminal window that refreshes on change? Who cares. It wouldn't even make a difference if you only saw errors when manually starting compilation. None of it really matters in the end.
- nrvn 5y agoBenefits of being a troll, And art of creating clickbaity titles.
- dave333 5y agoIn the early days of IDEs (1990s) there were projects where I spent more time trying to figure out the IDE than I did on the project code! Same goes for many frameworks. Just when you get competent, the IDE/framework changes. AFter a few generations, informal standards developed in IDE functionality so it was easier to switch. But still by far the most powerful tool I know that I only had to learn once is the Unix pipeline.
- temporallobe 5y agoWhen I first started my career, I used vi (not even vim) on Solaris terminals to develop and learn Perl, which I still know and love 20+ years later. I believe that I never would have learned it so deeply if I had used an IDE with syntax highlighting, autocomplete and the other various nanny features. That said, my life would be a whole lot more difficult if not for modern IDEs (which I currently use for Java, TypeScript, Clojure, Ruby, etc.), and at this point in my career, I can’t see myself going back to bare-bones editors. However, I have started using VSCode more often (when it makes sense to do so) - this seems to be a good compromise between a full-fledged IDE and a plain text editor, although you could certainly configure VSCode in such a way that it is basically an IDE.
- whateveracct 5y agoemacs, ripgrep, fd, fzf, sed, shell aliases & functions, a little custom elisp here and there what more do you need? typing the code is never the bottleneck lol
- randcraw 5y ago“IDEs considered harmful”. That's exactly the thesis of Nicholas Carr's book, “The Glass Cage”. He claims the more we employ cognitive-enhancing tools like IDEs to help us perform tasks that require mental effort, the less engaged we become, the less creative, and the less effort we're willing to apply in tackling other kinds of mental tasks. In short, “flow” stops when we disengage and let automation to do the job for us. https://www.amazon.com/gp/product/B00J9PQXOE/ref=dbs_a_def_awm_hsch_vapi_tkin_p1_i3 https://www.amazon.com/gp/product/B00J9PQXOE/ref=dbs_a_def_a...
- ilaksh 5y agoOne thing that makes a big difference for me when programming in the terminal is the `fish` shell. It just has really good autocomplete. Also check out the `micro` editor.
- VelkaMorava 5y agoThis is truly a HackerNews moment. IDEs bring optional usefull stuff you can ignore if you want. Yet here in comments we have autists arguing that using IDEs (=option stuff you can ignore) is bad vs using their favourite 40 year old text editor in terminal. Jesus christ you people are funny.
- sharikone 5y agoI always take this kind of opinions with a grain of salt but I also don't like bloated IDEs, like the author. But it's a general and trivial comparison. Like using MS word vs markdown, or Ubuntu vs Arch or Alpine. It all comes down to your use case and it's not black and white. My Swiss knife is VS Code, arguably an IDE-minus, or an editor-plus. And given that I work all day on software it happens that I occasionally go down (vim) or up (XCode, Visual Studio, Android Studio) and I have no problem with that.
- Koshkin 5y ago> The IDE is simply compensating for missing language features This is a good thing, no?
- jeffterns8 5y agoTo be clear, this comment is about IDEs for common languages where they are a viable and general consideration as the topic is about IDEs as a whole. Platforms and/or languages where IDEs are commonly known as limited/awful, with no alternatives, are a moot point and not the root of the topic's points. The points made and most of these comments are a joke. Basically bad practice and poor use of source control is being blamed on IDEs. Anyone with these problems (in modern times, old projects/approaches are products of their time) simply isn't a competent dev and/or never studied. I don't even recall any of these things being an issue in the first months of learning to code, 10 years ago. To be a good programmer, don't learn from bad sources and don't be overly lazy to the point you develop bad habits. You can do all of that while still using an IDE. How you use the tools available is on you, not on the tools. If a tool is so bad it enforces bad practice and has no way to avoid complicating workflow, find a better alternative. A tool is meant to streamline and improve workflow, not hinder it. I've never chosen to use an IDE that has enforced any of the issues being commented on, as if the only alternative is avoiding IDEs outright. I choose to use IDEs that are best-suited for the language I am using, are flexible and allow me to work how I like without convoluting my workflow. I also never commit IDE or user-specific files to a repository as that's just awful practice. I'm also yet to read a complaint in comments here that claims to be a specific IDE forcing or creating problems that isn't actually about a company/team that has created a terrible dev ecosystem (or backing off an archaic one) for a project that they restricted and boxed into an IDE. Just because poor project management can make a project a nightmare to work with doesn't make the tools involved the problem.