14 ms·
I find this post along with the comments in "A Picture of Java in 2020" https://news.ycombinator.com/item?id=24551390 https://news.ycombinator.com/item?id=24551
by willbw 6y ago
I find this post along with the comments in "A Picture of Java in 2020" https://news.ycombinator.com/item?id=24551390 https://news.ycombinator.com/item?id=24551390 to be incongruous with my experience as a professional developer.
My first couple of years writing software I used Vim, then VSCode, then worked in a Java shop and was forced to use IntelliJ. I didn't like it at first, but now after a couple of years I cannot see how I lived without it.
The idea that VSCode is the future doesn't seem right to me. JetBrains products allow you to do so much out of the box, without installing a million plugins that may or may not work. In IntelliJ I can write a half baked statement like `new Foo()`, and then Alt + Enter my way to it being `foo = new Foo();` as a private member variable of the class in no time. If you take time to set up configuration it becomes even more powerful. Even these basics are more difficult in VSCode.
To me the future is IntelliJ for Java and all other languages should seek to have such a nicely integrated experience with an IDE.
I am not even sure I could write Java from scratch in Vim - its really that I'm using IntelliJ, not writing Java. Is this bad? In some pure sense, sure, you are further from the language. But I don't care because I can write and edit code some multiple faster than if I was in VSCode.
- paxys 6y agoWhile editors like IntelliJ are definitely more polished out of the box, something that may not be apparent is that internally they are all standardizing on tooling and protocols put in place by VS Code in the last few years. Language toolchains are now expected to provide IDE-specific features on their own (by implementing a language server), and so IDEs themselves don't need to focus on making the language better. So the biggest sell of IntelliJ, reSharper etc. won't be relevant for too much longer, since every editor can (or will be able to) e.g. understand Java and provide basic fixes and refactorings.
- hocuspocus 6y agoIn practice we're pretty far from that. Most statically typed languages, even fairly recent ones that took on LSP compatibility early, are still better supported by JetBrains' IDEs.
- spullara 6y agoThose features are terrible comparatively. If anything I would buy jetbrains server implementing those features if they offered one.
- thu2111 6y agoMost language toolchains are held together by small teams of volunteers or corporates (Apple, MS) that sell their own IDEs. They struggle to provide even the basics like solid fast compilers, portability, debuggers that aren't gdb, profilers that work and so on. Look at Go, Rust, Swift. All of them are fighting with basics like performance and language evolution. And now you want them to implement most of an IDE as well? How will they handle that? The only real exception is Kotlin (by JB!), but that was possible because the compiler and IDE plugin are a unified codebase and because they built on the JVM, so they get top quality compilers and profilers, portability layers etc for free. The key to JetBrains' success is not any particular software architecture, although having language analysis plugins run in-process with direct access to AST structures is an obvious advantage, it's that they're a company that charges money for their tools, which has kept their cost overheads low (very low relative to never-profitable SV startups that snort VC capital like party hounds), and which are building on an already very productive platform to begin with (Java). This combination means their feature throughput is very high but more importantly, sustainably high. They've been doing this for 20 years and aren't about to hit a tech debt wall where they suddenly need to rewrite their product from scratch. Contrast this to their primary competitors, Microsoft and Apple. Visual Studio has a comparable feature set to JB IDEs. But it's Windows only, totally un-portable, hardly supports web dev outside of the .NET stack, and the plugin model is native. They badly struggled with the transition to 64 bit because of this, which in turn meant users regularly hit its internal architectural limitations like project size limits (cuz of the 32 bit address space). VS doesn't scale well because there's no good way to stop plugin crashes taking out the whole IDE. Even though MS have been pushing .NET for 20 years, VS itself doesn't use it. IntelliJ built on Java which hurt them in the early days, but now Java's perf issues are mostly solved and they benefit every day from portable plugins, a seamless 64 bit transition, cross-platform portability, etc. XCode is under-funded, has very few plugins and can't compete for any task outside of Apple's own ecosystem. It doesn't even try, really. VSCode is a text editor with plugins. It is at least trying to compete with JB, but I don't forsee much success in the short term, especially if JetBrains pull their finger out on light mode. It at least uses managed languages. But the most mature JB plugins have been developed over a period of decades by now. The feature-set is overwhelmingly huge, and they have hundreds of employees that do nothing else but add them. How much money is MS willing to throw into the VS Code project? Its lack of revenue model limits them, even with a sugar daddy funding them. It's unlikely they can scale to JB size because a free IDE that competes with their own revenue generating VS product is simply not something they will tolerate long term. VSCode is going to be stuck focusing on the JavaScript/web stack for a long time and won't receive a lot of funding to grow out of that.
- varispeed 6y agoFrom my experience out of the box you get poor performance and you have to spend a lot of time figuring out how to change configuration to improve it as knowledge is scattered in many places and not always up to date. Then it still likes to stall from time to time or sometimes doesn't register key presses properly. It's a poor user experience, but even worse is that alternatives are often worse. I wish there was an editor with low latency, smart search, some proper file system database, so it doesn't take ages to open a directory and built in VCS support, that works quicker than manually issuing commands in a terminal. I think the success of VSCode is because you can easily open it in your current directory from the terminal and it will show you your folder etc. without having to setup a project first and that you are ready to type you code quickly after opening. If I had to open PyCharm every time I want to try some Python in a new directory, I would probably start questioning my life choices. Before VSCode I would just use nano or Sublime.
- btown 6y agoI see them as complementary. VS Code shines if you’re jumping between independent codebases for distinct projects, and startup time matters. But my startup monorepo I keep loaded in IntelliJ for days at a time and have never looked back. For the 1% of time it’s laggy due to a JVM GC or background indexing, the other 99% of the time it’s immensely productive to have e.g. full-stack debug breakpoints that Just Work, well-designed customizable gutters, integrated linting, and more.
- spullara 6y agoI wonder if ZGC in Java 15, now that it is GA, would clean up any lag folks see.
- moonchild 6y agoPersonally, my experience with jetbrains IDEs is not that they lagged, but simply that they were slow. ZGC would probably harm more than help.
- throwaway8941 6y ago
- derefr 6y agoFancy IDEs are lubricants for high-friction languages. If a language is already low-friction, there won't be much benefit to be gained from an IDE, as even a plain text editor will already get you near to optimal productivity in said language. Personally, I'd rather use a plain-old "code editor" (with at most syntax highlighting, but no snippets, let alone autocomplete), in part because doing so will actively steer me away from languages that weren't designed with the User Experience of writing them in mind. Imagine if there was a hammer that was so badly-balanced that—despite being not too hard to lift—you needed to be wearing a powered exoskeleton to accurately hold and swing it. That'd be a bad hammer, right? Hammers are hand-tools; it's an expectation that they'll work when used "manually", i.e. with raw human capability alone. Programming languages are hand-tools as well, in an essential sense. Like mathematics, the "interface" through which we manipulate a codebase is plain, raw text — sequences of symbols. We humans understand source code by reading it with our eyes; and then we write or modify it by editing it the same as any other text. We can do the whole thing on paper, or a blackboard, or even purely in our mind's eye. That's kind of the idea behind having a source code representation of a program in the first place, divorced from a machine code representation — to give us humans a formalism we can intuitively handle. A programming language is something you can think in. Seen through that lens, a programming language that requires the cybernetic prosthesis of an IDE to read and write it fluidly, is a bad programming language. You don't have an IDE loaded in your head. So how will you think in it? (Usually: by thinking in a vague pseudocode instead; or even, by thinking in a different language than the one you're writing in. Obviously, this is going to be lower-productivity than coming up with a mental model of the problem that can be directly typed into a computer.) (Before anyone makes a supposition about my language biases: both "complex" and "simple" language designs can be inherently high-friction due to their design choices. Scheme has very little syntax, but it's also high-friction, in that it's easy to get lost in a sea of parens unless your editor helps you along with a feature like Emacs' paren minor-mode. Most modern code editors do have something like that, but it's still a form of lubrication to overcome a point of friction in the syntax; one that some of Scheme's linguistic siblings—e.g. Clojure—avoid by increasing syntax.)
- yelloweyes 6y agoJava is not poorly designed though. It was built to be an enterprise language. 50 devs working on a 10 MLOC monolith type of stuff. If you don't like monoliths and like to build hundreds of small programs that talk to each other, that's a different issue.
- coliveira 6y agoMy experience of IntelliJ is that it looks nice but it is very complex and offers little compared to Eclipse. For professional reasons I had to learn Eclipse, and now I see that IntelliJ gives a more polished product. But when I need to relearn all that I had with Eclipse, I don't see the point.
- fomine3 6y agoIMO Eclipse is dying. Its new release cycle is pain because it fixes bugs only on quarter releases, they don't release patch releases even if very problematic. I encountered a few bugs.
- coliveira 6y agoThat is the official schedule, but you still can run the "update" option and get changes between official updates.
- tybit 6y agoI can't stand writing C#/Java in VSCode and I can't stand writing anything but them in Intellij/Rider personally. It's a trade off between speed and feature set. I'm glad it's one I can decide to make when and where I want to. Hopefully one day a full featured IDE will be as fast as I want, but until then I'll be switching between VSCode and JetBrains products depending on what I'm doing.
- jameslk 6y agoI used to use Intellij for everything (and I'm not even a Java dev). It is indeed very nice and comes with so much out-of-box around languages and popular libraries. However, Intellij is _sooo_ very slow to load and edit with. This is more tolerable if you work on one project. But in the past couple years, I've had to work on many smaller projects, and loading up Intellij for multiple projects meant gigs of RAM disappearing, along with that sluggish start time wait for each project and slow editing. I really loved Intellij and I wish it could be made to run more efficient. VSCode fills the niche of "loads fast, moving around code is fast, and I can have many instances open at once without crushing my computer" I guess it depends on the type of project you're working on, but I think these tools still serve separate use cases.
- justrudd 6y agoAre the projects related? Or all unique? If related, you can create a uber project and import each directory as a module. I’ve got a project right now with 5 modules - 2 JS, 1 Go, 1 Python, and 1 Ruby (Rails). I’ve found this keeps memory usage down.
- jameslk 6y agoThey're for separate clients. I've thought about doing something like a giant monorepo of client projects even though they aren't related. It's hacky at best, but ultimately I felt I should just use the right tool for the job and VSCode seems like a better fit for this scenario. I'm sure someone else will benefit from this suggestion though. Intellij is pretty flexible and it is amazing what it can do, if you don't mind the performance trade-offs.
- scarface74 6y agoIntelliJ still has that Java GUI stench that made me stay away from Java over 15 years ago.
- sethammons 6y agoHa! Every older point of sale software and every medical screen Seems to have that distinct java ui. Never liked it.
- Zak 6y ago> I am not even sure I could write Java from scratch in Vim - its really that I'm using IntelliJ, not writing Java. Is this bad? What I see here is the IDE being powerful to make up for a lack of power in the language. Is that bad? Maybe. I tend to think it's bad because tooling usually does less for making code easy to read than it does for making code easy to write. Furthermore, one of the few characteristics that seems to consistently predict defect rates is codebase size. On the other hand, increased abstraction can also require more effort to read, and you'll get a lot more resistance in most projects to switching languages than you would to you switching your editor.
- headcanon 6y agoOther replies have expanded on this quite a bit, so I'll just add my 2 cents: When using a strongly typed, object-oriented language like Java or C#, Jetbrains tooling, namely the intellisense and refactoring is well-worth the cost. However I'll still spin up VSCode for most all other languages since the tooling advantage diminishes when using a loosely-typed language like JS or Python. Also consider that VSCode is free compared to Jetbrains, and the tooling is "good enough" for most cases. Even the C# tooling is passable with the right plugins.
- MiroF 6y agoI agree - but I also think that strong typing is the future.
- thrashh 6y agoI use refactoring and IntelliSense for Python and JS pretty often and while it’s not as good as for Java, I find that it works pretty well. Granted when we write code, we keep in mind whether an IDE will be able to refactor it later.
- Quarrelsome 6y agoIt doesn't replace the IDE, it replaces the simple text edit like Notepad++.
- aspaviento 6y ago> JetBrains products allow you to do so much out of the box It's all nice and shiny until it takes several minutes to index your whole project structure. Then you can only hate it a little bit more every time you start it. VSCode is not bloated (for now) with millions of options, I can add extensions and/or disable them whenever I need without losing performance or even creating my own ones without too much effort.
- mekster 6y agoThe indexing is what matters. After that, IntelliJ knows pretty much all about your project files. It only takes a minute on first load and reopening it will only scan what's changed which is fast. I doubt IntelliJ plugins slow down the IDE noticeably, though I do keep the number of plugins activated to minimum for only what I use.
- game_the0ry 6y ago> To me the future is IntelliJ for Java and all other languages should seek to have such a nicely integrated experience with an IDE. If you think Java + IntelliJ is well-integrated, you should try C# + VS, C# + Resharper. I am not joking or being facetious - modern C# IDE support is on another level. And I don't even like C#.
- winphone1974 6y agoIf you think c# with resharper is good, cut out the middleman and just go with rider.
- baby 6y agoOr swift/objective-C and Xcode
- sk5t 6y agoConversely, I always hated the bloaty, intrusive ReSharper on VS.NET, and find IDEA very much nicer, even though C# is more naturally ergonomic than Java (but less ergonomic than Scala).
- the__alchemist 6y agoI'll add to your Java anecdote: JetBrains editors appear to be the most sophisticated across multiple languages. PyCharm is a pleasure to use with Python, Rust, and Typescript. Perks include catching errors on its own (eg before compile in Rust or TS, and don't even need to run Python's type checker), auto-complete, and refactoring. In comparison, VsCode appears to only understand these languages at a surface/syntax level. I don't like this situation: I wish there were more competition, but it appears one company has the edge at present. I use VsCode for one-off files, since Jetbrains isn't a good fit for these.
- sys_64738 6y agoIt's remote server support over ssh is seamless. It's pretty amazing it took this long to get to this point. Pity it gobbles so much memory.
- dfee 6y agoI’m going to save this comment for many years down the line. I don’t agree with your sentiment (having also used VIM and Rider, but happy right now with VSCode), so it’s a sort of personal check-in I can have with my thoughts sometime near 2030.
- karmasimida 6y agoYep. Not seeing myself switch to VSCode anytime soon from IntelliJ or Pycharm.
- kumarvvr 6y ago> without installing a million plugins Perhaps that is because of the very narrow focus on what IntelliJ does and the functionality of plugins is part of the core system of IntelliJ. In my view, VSCode is a platform. It's unfortunate that they chose to use Node (its slow) but otherwise, its a great platform to develop extensions for. For someone just getting into programming, it offers a great stepping stone and it can handle medium sized projects quite well.
- mekster 6y agoThe problem is, after installing bunch of plugins it is still no match for IntelliJ. If it was, why would I pay for it... I want a plugin to parse the SQL query and do auto complete, check for syntax and column/table name errors according to the database I connect to through ssh tunneling but it's just a string in VS code. It also auto completes join columns by checking which foreign keys may match on the table I'm trying to join at the point of typing "JOIN [table name] ". I want a plugin, so if I open a file, it checks the remote file and make sure it's not modified, so that I don't accidentally overwrite it in case someone has edited the remote file. (Yes, this sounds dumb but non programmers don't do like we do.) Jump to definition should work like expected, reverse jump to uses from definition should also be there. Formatting code with so many customizations on many languages including SQL, CSS with a hotkey or against a whole directory. Should the brackets go to next line or not, should there be spaces, should it be tabs or spaces etc. I see there's "prettier" etc but the supported languages and customizability aren't there. My use case for the IDE should be narrower than others as I only use it for the web development but still it's a few miles ahead of VS code today. But competition is good. I'm sure JetBrains may start sweating in 3 or so years when things actually start to be competitive but VS code is free and lighter.
- dragonwriter 6y ago> I see there's "prettier" etc but the supported languages and customizability aren't there. Er, how? What language does VSCode not support formatters for with an appropriate, existing extension, including full customizability for the formatter? Now, there's not an integrated UI for customization, instead relying on each formatters native configuration method, but that also makes the formatting configuration independent of the editor. For me that's a plus.
- shp0ngle 6y agoon the other hand if you look at source code of a random IntelliJ/IDEA/... plugin and on similar plugin in VSCode, it's obvious VSCode design is more clearer. Which _will_ work for it long-term.
- jvolkman 6y agoDo you have any examples, out of curiosity?
- j2kun 6y agoI write Java in vim all day and it's fine. I'm also one of the top code contributors in my org by any metric (LoC submitted, bugs fixed, tech debt reduced, etc.) And everyone else uses IntelliJ. You devote time to learning your tools and improve the efficiency of the parts that matter, and the tool itself becomes mostly background.
- rawoke083600 6y agoTHIS ! As a "professional" you owe it to yourself, to spend some time and actually learn you tools ! Not just "how to get by" but actually schedule time in your week to learn about the tool ! Shortcuts etc !
- guytv 6y agoCould you explain how would you go about renaming a method with a few dozen usages using VIM? (curious what's the "right" way to do this in Vim)
- deleted 6y ago[deleted]
- mplanchard 6y agoIf they’re using a language server plugin, it’s entirely possible that they just call a refactor function provided by the LS. This works just as well in vim or emacs as it does in vscode, since they can all use the same language servers (generally)
- DougWebb 6y agoI spent a bit more than half of my professional career developing in Perl, on a large web application implemented across 100+ modules. All of my work was done through a terminal connected to a remote server, using vim. When I had to rename something, it was a manual process: one terminal opened to the command line, using grep to locate all of the instances I might want to rename. From there I could use sed or perl on the command line to do the renaming, or I could open individual files in vim. Once in vim, I could use a global search and replace command, or search for each instance and replace manually or with a macro or . command. Slower than an IDE? Absolutely. But it never changed something I didn't intend to change, and the process taught me the value of good naming conventions. I never felt it was a hassle, and I became very good at refactoring without breaking things. Today, I use Visual Studio to develop in C#, Javascript, and sometimes Typescript. The C# refactoring tools are great, and I've learned to trust them, though my naming convention habits are still useful when it comes to refactoring names in comments. Javascript, and to a large extent Typescript, generally require my old manual search and replace process. And whenever I do any refactoring, I always have a separate commit for it, which I carefully review to make sure the tools didn't do anything unexpected.
- gerash 6y agoI have had the same experience. VS Code looks like a fine lightweight text editor plus a marketplace of plugins with variable degree of maturity and interoperability whereas IntelliJ is a mature and polished IDE. All IntelliJ lacks is two things: 1. Being a lightweight editor with syntax highlighting which IIUC they are / have already built 2. Remote development where the IDE is just the front end running on, say, a laptop and the computation runs on a remote work station
- modernerd 6y agoI prefer IntelliJ to VS Code but for me IntelliJ also lacks the ability to: Disable plugins on a per-project basis. (I currently put up with plugin exception reports for other language plugins in projects for unrelated languages.) Enable or update plugins without a full restart. (This is getting better but many plugins still need a full restart.) Sync all plugin settings (for example, AceJump plugin settings aren’t synced). Split the terminal pane horizontally. Open a file in a vertical split from the navigator or search everything box. (I want to believe I missed an easy way to do this; someone let me know if so!) Set alpha keyboard shortcuts in quicklists. Style the title bar colour on macOS to match the editor background. Write a quick script to add missing IDE functionality without boilerplate or build tooling. Add a command line run configuration. (There are workarounds but the original feature request remains open after 7 years: https://youtrack.jetbrains.com/issue/IDEA-112256 https://youtrack.jetbrains.com/issue/IDEA-112256 ) I can do all of these in vim and Emacs and most in VS Code. They’re nitpicks and no editor or IDE is perfect. I think I feel the pain points with IntelliJ more acutely because for many of these I can’t fix them myself.
- zelly 6y ago> In IntelliJ I can write a half baked statement like `new Foo()`, and then Alt + Enter my way to it being `foo = new Foo();` as a private member variable of the class in no time This will be in VS Code one day, except when it's there it will be for all languages (some neural code completion engine) and do much more.
- imwm 6y agoNot a problem I've encountered, but one that will be solved by the robust extension ecosystem of VSCode. You can apply this to any UX problem you might encounter with VSCode.
- risyachka 6y agoIf only JetBrains made their IDE version that eats less RAM I would gladly pay twice as much for it.
- tjpnz 6y agoPeople have written the same hype driven articles about Sublime, Atom and even IntelliJ. The same articles will continue to be written for whatever comes next. Just use whatever you feel makes you most productive. Having tried VSCode I ended up sticking with PyCharm/Goland.
- hliyan 6y agoBefore all this, almost twenty years ago, there was JPad Pro another editor that I felt as close to as I feel about VSCode now. It didn't have plugins per se, but you could very easily script new behaviors into it. After that, there was a period of vi usage, before I adopted Sublime. The lesson for me is that VSCode too, will be superseded by something different.
- greggman3 6y agoit's not that simple is it? I've been programming for ~40 yrs. I've used a bunch of different editors. I certainly don't know each feature of each one but many features I find to be force multipliers so ignoring them is a disadvantage IMO. I'll be wasting my time doing something manually the could be automated for example. Unfortunately it's hard to know how to configure every editor and know how to get these time saving features. A few I get from VSCode (love to hear about other editors) 1. the best Javascript support via integration with eslint Eslint's plugin system means I get react specific hints and error messages. I'm not used to an editor giving me library related errors. Usually they only give language related errors 2. codespell plugin This only matters for dynamic languages but it turns out spell checking code can be surprisingly useful. The language it self can't tell me person.name = `${entry.firstName} ${entry.lastNane}`; is wrong but codespell will highlight `lastNane` ps: I get that's bad code ;) 3. opening folders Lots of people mention this but it's arguably a killer feature. I can't believe that it took until now for an editor to have this. Most previous editors I've used to had to go through the process of making some kind of project to get similar functionality. If I wanted to easily search and replace in a project across files I had to make a project or configure stuff. If I wanted it to find references to other files I'd have to make project or configure stuff. vsc seems to find these things with no work on my part. 4. pretty good file support (renaming and moving files, including the required code refactoring to go with it). Every IDE-ish editor I've used since the early 90s has had some kind of file tree panel but VSC's is the first one I use regularly for more than just opening files. 5. friction-less easily discoverable plugins I think this is overlooked but consider the Apple iOS app store vs Windows CE. I could install apps on my 1998 Casio Windows CE PDA but it wasn't friction-less like the App stores today are. That difference is huge. Every editor I've used since the 80s has been customize-able but I rarely looked for other people's customizations. It was just too much work. Not only did I have to learn how to install them and get them to run I had to go manually find them. VSC suggests them. I get that can be annoying but given low-discoverablilty or a few annoying notifications I think promoting them is a net win. That said, I hate that VSC is slow! I work on quite a few hobby projects where I just want to put all the code in 1 file. At about 1000s lines VSC starts acting up, getting janky (on a 12core 64gig ram AMD Ryzen 9 3900XT) and eventually I'm forced to split the file. Sure, better organization is good but my tools shouldn't be forcing it on me when I'm just making something throwaway.
- nitemice 6y agoAs someone who uses all three of the editors you named, I think that each serves a pretty different purpose in practice. Each aspires to be the be-all, end-all editor/IDE, but that's just unrealistic to me. For me, I use VIM all day, every day at work (C++), because while it doesn't have the full IDE experience out of the box, it's close enough, and can be brought much closer with various plugins and knowledgeable adjustments. I've stuck with it because "it just works" and I'm use to it. A previous colleague was a big VIM evangelist, so got a running start from him, and now I've tweaked it enough that it works well for me. VSCode is my general purpose text editor at home. If I'm writing markdown, or fixing some script, or I just need to see what's in that file, I'll use VSCode. It is the obvious, far superior replacement for Notepad, and has plenty of niceties to make it that much easier to use. But if I'm building something with a lot of moving parts in one of its supported languages, I'll use IntelliJ. I don't often write Java these days, but PyCharm is just a reskin for Python and I think it's great. It does so much junk for you, and it makes testing and debugging so easy. It does trip up my muscle-memory occasionally, but for the most part it's a powerful tool that's great at what it does.
- Osiris 6y ago> I'm used to it That about sums it up. People use what they are used to. I don't try to convert anyone. I use the tool I like and to each their own.
- devilduck 6y agoAgreed. Converting other people is a fool's errand anyway. I am interested in things like EditorConfig to allow some similar settings between editors so that individual team members can use whatever software they like without affecting general code style. But I don't think EditorConfig is end-game and there's room to grow in this area.
- cookiengineer 6y agoYour description pretty much sums it up for me. I use vim primarily for around 9 years now, and with ALE as a linter plugin it's integrated with languages I even don't know existed until I need to fix something in it in a foreign codebase. If I need to go typescript or web, vscode is very tightly integrated with the build toolchains, so the occasional fix in vscode is necessary for me when I need to fix a bug upstream. I tried migrating to neovim a lot of times, but their syntax highlighting is always so damn broken even with a plain vimrc that I stopped bothering anymore. Currently, I'm trying to migrate to kakoune because I've heard a lot of nice things, and the ecosystem seems to be better integrated with lsp and rust, but honestly my muscle memory is damn strong, so it's actually kind of a burden at the moment and I'm gonna need a while if I keep pursuing this. One benefit though that both emacs and vim have is ssh usage. Debugging and reading logs on a remote server is pain sometimes, and my vim profile eases that sooo much up that I saved a shitload of time by using it.
- makstaks 6y agoI think the fairer comparison is with Visual Studio 2019, not Visual Studio Code. Visual Studio Code is free, making it highly attractive for a larger audience. The pricing for IntelliJ is not accessible: https://www.jetbrains.com/idea/buy/#personal?billing=yearly https://www.jetbrains.com/idea/buy/#personal?billing=yearly I've also used IDEs that are highly optimized for Java and .NET. I agree it's great for the use case I had.
- why_only_15 6y agoWhat do you mean not accessible? $150/yr isn't insane for a piece of software you might spend 6 hours a day in.
- makstaks 6y agoIf you are building software in a paid capacity then yes it's a small price to pay. But if you aren't getting paid or getting paid somewhat decently (e.g. study, hobby, open-source) then it's a lot. It's great they have various editions, to address the above, so if those editions are good, then it makes my point moot. edited: Recognizing different free subscriptions exists
- willbw 6y agoPersonally I never have used the features of Ultimate and just use the Community Edition and CE is free.
- deleted 6y ago[deleted]
- hliyan 6y agoI tend to look at stuttering behavior such as Foo foo = new Foo(); as a problem with the language itself. That said, I do agree that writing Java without IntelliJ can be a pain.
- 978e4721a 6y agoIntellij is always too buggy and slow for me. Things it helps you with - it's a language verbosity problem. Ideally you should just use better language. And they also stopped bringing any more advanced features, like refactoring from null to Optional for example, or reversing template method. If we're talking about java specifically vscode and vim would just use eclipse language server which can do most of the things intellij can like refactorings and snippets. And for other languages like python ms language server is even better than pycharm for example.
- deleted 6y ago[deleted]
- edem 6y agoI'm using IDEA and VSCode in conjunction (for Kotlin and Typescript respectively) and I find them equal in power. Maybe I'm not a power user, but I reached a point where they even look the same (more or less). There are 2 minor differences I experience very often: VCCode is blazingly fast compared to IDEA, and VSCode has much more quality plugins than IDEA (at least for those things that interest me). I'd compare VSCode to Emacs in a sense that the architecture is really simple (all you have is functions that do something) which makes VSCode more appealing to prospective plugin developers. I'd even go so far as to say that to me VSCode becomes the new Emacs.
- sinfulprogeny 6y agoI tried out vscode for python now that I started a new job. I'm on linux for what it's worth. The experience has been massively frustrating coming from pycharm. First I installed the open source version, and found that microsoft publishes plugins that are programmed not to work with the open source version. They don't tell you this, rather, the plugin throws exceptions that some API is missing. I tried out the official version, and instead of whining about not being supported, it now just crashes intermittently. I gave up less than three days in. I found configuration of code to be pretty annoying as well. Either you write json, having to google for things like how to format keyboard commands, or use their (subjectively) ugly configuration page. The fact that I can't detach the terminal from the code window without some weird workaround was also something I couldn't come to terms with. I'm back in pycharm again.
- erezsh 6y agoIf you want a detached terminal, why not just open a terminal window?
- sinfulprogeny 6y agoIt's not just the terminal, it's the python interpreter, ipython notebooks, debugger, e.t.c. The terminal was what came to mind. Besides, when working in a remote dev project, the terminal automatically SSH's into the remote, and if local, it opens the working folder. It's practical to use the internal one sometimes.
- oblio 6y agoWhich Open Source version? Is it supported by Microsoft? Do you use an unsupported version of Pycharm? :-)
- kace91 6y agoMy personal gripe with intellij is how unintuitive the shortcuts are and how much clicking is the default way of operating. intelligent completion is something like cmd+mayus+space. "find usages" is cmd + f7 (which in osx means cmd + fn+ f7). The "open" dialog for opening a project doesn't even have a default shortcut, it's mouse based and will open a second dialog asking if you want a new window or just reusing the current one. CMd+mayus+f for global search wont work if my focus is on the integrated terminal, I have to click out of it. I feel like I'm learning to play piano placing my hand in weird chord shapes constantly, and half those things launch an ui pane or menu that I practically need to navigate by clicking even if they sometimes technically allow some kind of keyboard interaction. It's not like I'm an extreme vim+dvorak user obsessed with having everything in the home row at one button press, but a bit of thought into priorizing shortcuts and placing the common ones in comfy places would go a looong way.
- BozeWolf 6y agoshift-shift is the 42 of intellij editors, open files, rename things, import ordering, search class/function/method definition etc etc. "shift-shift open" to open projects. next time it will probably be "shift-shift o" It also displays the actual shortcut. Integrated terminal (and all other cases) switch focus to the editor: escape. For all other cases: you are probably aware that you can change shortcuts. For example to vim shortcuts. Not 100% the same but still. And yes, switching editors take some time get used to. (I love pycharm, i like VScode for small projects, dont like the un-integrated mess of for example spell check correcting function names?)
- Cthulhu_ 6y agoI've switched between IDE's and "lighter" editors like Sublime Text and VS Code so many times now (and I can't get used to vim and co, I'm too young I guess lol). IDE's helped me so much writing Java code; refactorings, autocomplete, code generation etc are features that never became as good in 'lighter' editors. Then the JS era appeared, and IDE's couldn't really do much with it - in part due to its unstructured setup, lack of importing code, lack of namespaces. Autocomplete and jump-to-definition was non-existent. I switched to Sublime Text for web work, and relied heavily on the powerful and fast global search and cmd+p navigation for a good while. Over time, things changed; JS got modules, JS got types (or type inference) through projects like Flow and Typescript, and JS got richer with e.g. JSX. Still mainly used VS Code (by then) for front-end though; heavier editors didn't seem to offer enough added value to warrant the switch. But every time I did back-end work I would switch back to a proper IDE. Java / JVM languages are things I never did in a lightweight editor. Go (which I use as a back-end language currently) support was rough for a good while in both editors and IDEs, but it's getting there. In my current job, I handle four languages over two projects; there's the legacy project, PHP and JS / Dojo, and the new one, Go and TS / React. I've fully switched to using an IDE again; intellij's JS / TS support is good enough, and honestly for the legacy codebase I need it. The codebase is nearly 10 years old, and the 'hip' editors simply don't support PHP 5 or 13.000 line spaghetti messes. But intellij does; I configured it for PHP 5.2 specifically (so if I use the shorthand array syntax it flags it up) and ES5, it struggles a bit but it can make sense of the huge files, and it helps me a lot in making sense of it. It's a safety net that the codebase and language itself doesn't give me. VS Code and co wouldn't come close. Anyway I still switch to VS Code from time to time for one-off tasks, quick edits, formatting, etc.
- guytv 6y agoAgree. I am now working on a project that includes development in Android, Java server side, Swift, Xamarin, Unity (c#). By using Intellij products namely AndroidStudio, Idea, AppCode & Rider - I have a unified experience which makes development so much easier, and fun! Only con might be the price - but I would not know as its all payed by the corporate I work for - with their IntelliJ licensing server.
- greyman 6y agoI agree, I used VSCode for Python programming, until I found Pycharm is better. I also used it for Go programming, but later found Goland to be better. But what confuses me is that the article always references it as a "Text Editor", not an IDE. As a text editor it might be the best, but as far as I am concerned, I just don't need "standalone" text editor. I don't have usage for it. I use IDE for programming, and as far as writing text goes, I need that only for writing notes or software documentation, and for that I use Drafts app, Roam Research, or Google Docs. But I am curious to learn how people use VSCode as a "text editor".
- oblio 6y agoIf you spend your entire day in a huge project with a ton of code and work together with a large team of software developers, you'll probably use an IDE. Your workflow probably involves launching the IDE once per day or even leaving it open all the time. If you do mostly consulting work, small projects, switching between languages with poor IDE support (usually dynamic languages), you'll probably use a smart editor. You'll launch that editor multiple times per day, close it, reopen it, etc. We should talk more about workflows, there are a ton of them and they're very different in my experience.
- DougBTX 6y agoIt seems like the only distinction between an "IDE" and a "Text Editor" nowadays is that an "IDE" is slow to start up but a "Text Editor" is fast to start up. Everything else that would be in an IDE historically (project browsers, intellisense, code completion, refactoring, integrated build and debugger UI, test runners, etc, etc) all show up in "Text Editors". The only question is how good that functionality is, which varies between editor-language pairs.
- EE84M3i 6y agoIn my mind the biggest difference is that in an IDE I need a stateful "project" or "solution" and with a text editor I don't.
- AlphENsign_Tech 6y agoNothing beats fully CLI workflow with Vim (with some continent configs). All these GUI editors, to me, feel bulky, slow and bloated.
- slightwinder 6y ago> The idea that VSCode is the future doesn't seem right to me. VS Code is the future of editors, not IDEs or all developing. There will always this two sides which live from the box and those who build their own box. And for the later VS Code is nowadays one of the best road to walk. > JetBrains products allow you to do so much out of the box, It's also very limited on where you can work with it. It works for the handful most popular languages they support, but what if you get a bit more exotic? What if need something non-programming, like markdown, rst or plantuml? What if I am not satisfied with a certain feature in the IDEs editor or workflow? If your Box is not supporting it, you need to customize it, and there JetBrains is just not as good as editors like VS Code, vim, emacs.. And VS Code even goes to great lengths to gain the IDE-state of having everything out of the box.
- thrashh 6y agoThen you install the plugin for Markdown, rst or PlantUML into IntelliJ? ????
- slightwinder 6y agoYes, that's the point. For everything outside the box you need to install a Plugin for IntelliJ too. So there is no difference in that regard. But there is a difference in culture and availability between a box-driven community and a plugin-driven community. The plugin-culture has more likely a good plugin for something exotic than the box-culture. For example, searching for mermaid (popular diagram-tool for markdown) in InteliJ-Plugins I only found one commecial plugin that I need to pay for. So it seems here already is a popular corner which is not well covered in this box-culture. And we always can go deeper there, toward more exotic stuff. For VS Code I immidiatly found a dozen tools BTW.
- pirocks 6y agoJust wanted to let you know that all those file types have support. Markdown and rst via the official markdown plugin, and plantuml via a free(in both senses of the word) third part plugin.
- lm28469 6y ago> JetBrains products allow you to do so much out of the box, without installing a million plugins that may or may not work. The problem is that all I need is 2 or 3 plugins. If all I need is a golf cart I don't care that your Lamborghini is amphibious and can fly to the far side of the moon
- 29athrowaway 6y agoIntelliJ is a much better experience than VSCode. Without leaving the IDE you can: edit (with autocompletion), static analysis, debug, test, code coverage, version control, profile. All using JetBrains official plugins. It also integrates with databases, Docker, etc.
- city41 6y agoI agree that JetBrains products tend to go unnoticed. But them bring commercial versus vscode being free makes it hard for people to choose them. I recently bought a personal license for Webstorm and really like it.
- deleted 6y ago[deleted]
- kexx 6y agoThe IntelliJ story ends when they ask $300 a year, with no other option.
- mqus 6y agoLike the options to 1. Use the Community edition for free, which does lack enterprise features but includes everything intellij makes so nice, or 2. Buy a version and just use it indefinitely without upgrading and ever paying again?
- kexx 6y agoI double-checked this, you are right, I thought they completely moved to the adobe model, but they are just trying to represent themselves as they did, still you can stop paying and keep using the software you bought