About 3 years ago, I made a big change in the way that I write code. It occurred to me that in a lot of cases, my IDE was slowing me down more than...
For further actions, you may consider blocking this person and/or reporting abuse
Meh...lame . Once you graduate to JetBrains you never go back.
PhpStorm and PyCharm are 💯🔥
PhpStorm and WebStorm happy daily user here, and I also converted some teammates!
When I do C# coding, ReShaper is my third hand along with VStudio.
When playing with Android coding, Eclipse is really a piece of crap, but then I moved to AndroidStudio and my world went to heaven!
JetBrains FTW.
Haha, pretty much what I was going to say - "Have to use too many different IDEs, it's too much effort" Mate, just spring for a JetBrains licence... ;)
Meh... Used JetBrains (Rubymine) for about 3 years. Then moved to Atom, then to Spacemacs and coding was never better than now.
Which IDE are we talking about? Because the things you mention that you are able to do that your IDE couldn’t (without needing to write your own plugin) are things that most of the IDEs I know about can do, either out of the box or with widely used plugins. And I cringe at the thought of writing your own syntax highlighting, let alone intellisense or advanced refactoring capabilities.
The question is often whether the IDE can work for me with all of the languages, frameworks, and tools I use. While it may be helpful in some, if it doesn't cover them all it ends up adding a mental burden as you need to know the tool's way plus the fallback manual way to unsupported features. Or you end up having multiple IDEs for different frameworks, which again increases memory overhead.
Quite right. If you work with a great many languages, which don't overlap well enough in IDE support, then the number+size of those IDEs becomes a factor (at least, if you want them all to be open at the same time). I'd however wager that there is sufficient variation between developer circumstances there, to make the above general dismissal of IDEs invalid/wrong.
Come on, Eclipse and XCode are utter pieces of shit, everybody ought to know that in 2018. I've never been able to use them more than 10 minutes without a crash.
Now it's like saying "I tried to drink water from the sewers and it ain't good so I'll only drink beer from now on". Although beer is good, you can drink much more water and all it takes is buying a decent bottle instead of crawling your way to the sewers.
Invest in a machine with a reasonable SSD and enough RAM, as well as JetBrains Toolbox, and you will never want to touch those awful piles of hacks that glorified text editors are.
JetBrains IDEs work with a very wide range of languages, have free plugins for many more on top, are definitely not unstable or terribly slow and heavy monsters (if you're not trying to run them on 10 years old hardware that was cheap even then).
Editing code on remote servers sounds like almost certainly you're just doing things wrong, however with a decent IDE (like JetBrains) you also have remote syncing features - edit the code locally, it will instantly sync it to your server over SSH.
No clue why you'd even have wanted to run X on your AIX machine if not running X was an option, normally people don't run their IDE on the server they deploy their code to, for a good reason.
A good IDE also includes support for remote debugging, which is much better than your debug prints. Similarly many of the things you would just add temporarily there are things many SaaS services (e.g. New Relic/DataDog/Sentry/...) would provide as things you could monitor all the time incl. in your production environment.
Having gone from literal plain text editors to "programmer text editors" to IDEs to text editors (because back then IDEs weren't very good) and and again to IDEs (because now they are) I can't really imagine seriously working in any non-IDE anymore. My time and sanity are worth the few extra euros it takes to buy a computer powerful enough to run my IDE.
I'm running IntelliJ on Linux and it's fantastic. If I'm pairing with people I sometimes have to use their Eclipse on Windows env and I seriously wonder how they stay sane.
That is so true:
"use Eclipse on Windows env and I seriously wonder how they stay sane."
aahahahahahaha
A timely article, as I've just submitted a set of two posts to my company's blog on the same subject. I guess they'll be published sometime in the next few weeks. Anyway, I decided to deal with the issues you listed by seeing how far I could go in the opposite direction.
I built a lean Linux VM with 512 MB memory and installed the packages and tooling to support 35 programming, scripting, and markup languages with just one editor - NeoVim. The purpose was to prove or disprove the hypothesis that a very lightweight setup could provide a satisfactory and productive developer experience.
The laptop I've been using has 25 IDEs installed on it, by the way. The best of them exhibit the behaviors you list in your article. It goes downhill from there.
One additional point you didn't mention. IDE support for version control systems tends to be flakey and incomplete. I find it much easier to interact with those tools from a command line even in cases when I'm using an IDE. Definitely agree with you regarding refactoring, though.
Of course, I don't need support for 35 languages. I wanted to stuff the VM full of tools and see if it would still work. It did. Not all those languages are well enough supported with NeoVim or Vim to make that environment suitable, but for most of them it's perfectly okay.
In some cases, I found the developer workflow was actually smoother and better than the equivalent activities with an IDE (for instance Scala, Clojure, Ruby, and COBOL). In others, a specialized IDE really is better even if it's possible to manage without one (for example, Java/Groovy, R, and specialized things like Arduino, Android, and iOS development). I also didn't have great luck with the Lisp-like languages using just NeoVim, but it wasn't a show-stopper. .NET development feels about the same as using VSCode. Markup languages like HTML and CSS and supersets like Haml and Sass feel about the same as Sublime Text (and I mean that in a good way).
I'm an oldtimer, so I didn't have to go through what you describe in the second half of your article, and as a TDD practitioner I rarely have to resort to a debugger. I can imagine people who learned to program with an IDE might not really know what's going on under the covers, and would have to backtrack a bit to pick up that info. I've noticed a lot of programmers aren't really sure which functions are part of the language and which are part of the IDE. But I'm sure they can learn that fairly quickly.
IDEs are perfectly good tools as long as we use them as conveniences and not as crutches. In many cases, they aren't really all that helpful.
Funny, I avoided IDEs for years because I typically don't like kitchen sink solutions. I normally prefer light and fast. But a few months ago I switched to VS Code after starting to work with TypeScript, Golang, and Webpack 4. And I've been thrilled with the setup and centralized tools like git, GitHub, terminals, multipane views, and much more. Not without it's occasional headache. But, overall, it's made me better and more productive.
But... VS Code is not an IDE.
True. I guess I was thinking about feature heavy editors. 🙂
Same here, moved from Intelij, to subline, to Atom and finally settled on VSCode. What i realized I was just using a small subset of features on Intelij and was going into feature overload trying to memorize hotkey combination. VScode come with a basic code editor tool and allows me to customize development enviroment. Beside, the majority of my work is done by the browser dev tools and npm/nodejs scripts.
I find the tendency to stick with an IDE relates most to the use of a single language or framework at a job. As you start mixing languages, environments, and tools, the IDE becomes more of a burden than a help.
Agree. In the academic context we worked only with one IDE when working with a language. Kept things fairly smooth going.
From my experience IDEs have previously slowed me down only because for the longest time I only used them as cumbersome, glorified text editors with intellisense. For anyone thinking about dropping their IDE because it slows them down, I'd recommend actually taking some time to learn about what your IDE can do for you if you use it to the fullest. They are the tools of our trade and learning their efficient use is absolutely worth investing some time in. For me the IDE I use is a time saver.
I like developing on lower-end machines, so IDEs are a no-go. I was a beginner and my first programming language was Java, while using Eclipse. Thing is, when I hit that 'play' button I never knew what was going behind the scenes. Once I dropped the IDE (and changing to linux might have helped for that matter) I had to read up about what was going on: compiling to bytecode / jar, call the command
java
on that jar... and that clarity was such a bliss to be honest. Unless I am developing for Android, I don't see why I'd use an IDE (I'm not prescribing to anyone, it's just my own case). I like writing setup scripts anyway 😊Why on earth do you like developing on lower-end machines?
W...what? What did you use an IDE for? "cp, mv, rm to manipulate the files and less, nohup, kill, ps, htop, etc" ???
How on earth would you do
htop
inside, idk, IDEA?I work with Shell script, Python, Go, Scala and a bit of Java and JS. Intellij IDEA, GoLand, PyCharm and Atom.
Of course I won't open up an IDE to rename a file, run a process with nohup, or check for a stuck process. I'll use an IDE to code, an editor to edit, and a terminal for all the rest.
Right tool for the right job. That's why you should delete your IDE, if you don't use it; or not to, if you use it.
Still, OverOps is a cool product.
Total agreement. But then I also do multi-app, multi-platform, and multi-service development most of the time. I ditched IDE's for vim and bash scripts long, long ago. Mainly because I was tired of having to relearn keystrokes for each toolset. vi is everywhere and once you learn it, you are good to develop everywhere. Even when I use an IDE--which is pretty much just for integrated debugging and API-call completion--I'm usually simultaneously editing the files in vim. I'm also fond of my collection of different syntax colors for each language. For refactoring, my own custom "findgrep" and "findsed" bash scripts work just fine. Moreover, it's nice when the filesystem layout is your project structure. Many IDE's create a parallel-but-not-the-same project structure (looking at you Xcode) which just double the complexity of project organization. Using the bash command-line directory stack via aliases for dirs (d), pushd (pd), and popd (od), provides rapid navigation while working. Given all that, I'm actually working on Rust integration into Android Studio because deploying and debugging on a device is much easier with it. But I still edit the files in vim ;-)
Once I found that Emacs + CMake can conquer pretty much anything in my needs wrt. to C/C++, Emacs + composer + npm locked down web dev, I don't use an IDE for anything other than STM32 coding with Eclipse - because of the nice debugging capabilites for embedded.
Nice read.
I think a lot of the benefits you list can be had while keeping your IDE and outsourcing all of your build/run/test commands to a good build tool. For example we do all of that stuff with Gradle, meaning that anyone can build/run/test the system from the command line and use their choice of IDE.
Also, as others have said, try Jet Brains for a top of the line IDE experience 👌
Umm, my IDE knows how to (re)deploy Docker, uses a remote interpreter inside it, gives me 1-click access to databases that I tunnel through SSH to, helps me avoid hundreds of tiny bugs with code analysis, does a mean find-replace accross my whole project while excluding the /vendor folder, runs tests with overrides/command-line params I have saved at a click of a button and analizes my test coverage, should the need arise automatically uploads changed files via FTP, has all kinds of version control and framework integrations, etc.
As a programmer one can afford however powerful laptop is needed to get the job done, so making performance a main issue really doesn't compute for me.
One should know how to get things done with Vim if your laptop suddenly burns down, but IDEs make for a far more effective everyday coder.
I used to work on NetBeans originally with Java, and later IntelliJ. I had the problem of slowness from time to time, until one day the IDE crashed, and wrote 0s on the file I was working with. Thankfully it was only an hour's work or so, but since that day I am happy with sublime and terminal. My wish is to master vim eventually, and be done with this stupid GUI gimmick xD
Delete my IDE ? No, no, no, no ... I would never consider that, even though I understand your arguments.
First, development in a language like Java is next to impossible without an IDE. Eclipse is criticized a lot (yes it's a heavy beast) but it just works, and it works well. Eclipse (or IntelliJ, etcetera) is a necessity for Java development, the whole build process (including Maven) is just too complex and heavy, Eclipse with its incremental compiler and Maven integration makes it bearable.
For scripting languages (Python, Javascript etc), yes it is possible to use just an editor. But for me the most productive setup for those languages is a mixed one - I do a lot of things from the command line, I frequently edit files using VIM, but I also use an IDE (previously I used Netbeans and Webstorm, recently I've switched to VSCode, after trying Atom).
VSCode isn't heavy (it's very lightweight, you could call it an "editor with benefits" rather than a traditional IDE), and after spending some time to set it up properly (installing plugins, configuring keyboard shortcuts) it's giving me a very productive feeling. Integrated debugger, syntax highlighting, code completion, code navigation, etc. I'm sure you can achieve most of that using e.g. Sublime, but VSCode has it 'out of the box'.
But (like I said already) I tend to "mix and match" a lot ... most of the time I do my Git commits or other Git stuff in a terminal, same for npm builds and often even file manipulations. A "mixed" approach (including an IDE) just works best for me.
On the other hand, if you argue that VSCode is not an IDE but an editor, then yes I agree with you (except for Java/Eclipse) ... :-)
Seems like it was a good choice for your specific circumstances.
I started programming using the commandline, so IDEs seemed cumbersome and dumb to me when I first encountered them. That is, until I realized IDEs are really just a bunch convenient abstractions over the set of commands and routines I was already running through the commandline.
Given how often you switch contexts though, your decision makes sense.
I am wondering if you have ever tried any of the new breed editor/ides like vscode, atom or sublime or the other mentioned in the comments. VScode is a delight to work with and I can't think of doing anything without it anymore.
An IDE cannot be considered by itself only. It goes by pair: IDE-language. Not all IDEs are good for every language, and no IDE is good for all languages. I personally find it madness not to take advantage of 'smart' code completion (language and context aware), refactoring, and code generation. Again this only stands for the right IDE-language combination. Trying to hammer a nail with a shovel won't help. I think your case is against proper integration of your language in the IDE, rather the the IDE itself. And I'm not even talking about the 'I' in IDE, which stands for Integrated, meaning that the Development Environment properly integrates all the tools you need for productivity, like debugging, version control, unit tests, task management, automated deployments, etc... I'm a happy Eclispe-Java, ZendStudio-PHP, PyDev-Pyhton user/developer and really wish everyone to find his/her proper combination. As Head of IT and Software Development, I would never hire someone that sticks to the editor unless he/she thoroughly proves him/herself more productive, but I can't see how. True, this could apply to only corporate, multi-project, multi-developer, single language/technology coding. But still, tools are here to help. Discarding one is simply missing the opportunity.
Your point about task switching is right on. I currently work in 5+ languages on a weekly basis and maintaining an IDE for each would consume most of each day. I also use Sublime -- It works for all languages and I keep a terminal window open to do the work of the IDE. Now... If I could put my head down and work in a single language for multiple weeks, I'd totally setup an IDE, but for a workflow like ours, I agree IDE-less is the way to go.
I dropped IDE's years ago, Now I only need Atom and Vim to profit.
Atom is an IDE or not? Or maybe, together with a similar product like VSCode, it's in a "lightweight IDE" category of its own, let's coin the term "IDEditor" ... VSCode and Atom are definitely lightweight and feel like sort of an editor/IDE hybrid.
I am in love with PHPStrom and I don't want to be separated.
I think it's a case to case basis and it depends on the technology you're working on .