I used to be neutral on the choice and even the use of an IDE for writing code. In university, I learned and used Vim for assignments. When I started my first job, I switched to a popular Java IDE because everyone at work was using it and it featured a nice debugger. Other than debugging and basic auto-completion, I didn’t learn the IDE much in terms of its features. But that changed one day when I ran into an issue compiling a Java project. I went over to the developer’s desk who had made the most recent commit. He opened up the project in his IDE and in just a few keystrokes, he had the entire maven dependency graph displayed on his screen. Just like magic. Few more keystrokes and he was able to locate the root cause. I was surprised because after months of using the IDE, I had no idea it had that feature. Two things happened:
- I realized that up until that point, I was using the IDE like a text editor and missing out on many of its powerful features.
- I became convinced that knowing how to effectively use an IDE has a profound impact on developer productivity. This is especially true for complex enterprise applications, where superior knowledge of IDE can provide a significant boost in productivity.
I started out with Vim and loved it. When I first tried Eclipse/NetBeans for Java development, I was overwhelmed by the number things that were cluttered on the screen.
The second thing that put me off was that I had to use the mouse a lot for navigation. But I saw the value in refactoring, code-completion and generating boiler-plate code so I decided to bite the bullet and switched to it from Vim. In retrospect, it was a good decision.
Many developers who become proficient in text editors like Vim or Emacs don’t switch to an IDE. I worked with a developer who wrote code exclusively in Emacs. When I hired him, he told that he’ll use nothing but Emacs. I was sure that in time I’ll be able to ‘show him the light’ and that he’ll see the value in using an IDE. But after watching him write code in Emacs, I realized that he was obviously an expert in Emacs and had more to lose than gain by starting all over again in an IDE. I didn’t make any attempts to convince him to give up Emacs for an IDE. (On the contrary, he got me thinking that I should perhaps ditch my IDE and switch to Emacs.)
So if you are already using Vim or Emacs and are productive in it, I won’t try to convince you to switch to an IDE. But if you sitting on the fence and don’t have a preference, I’d strongly recommend picking up a good IDE and learning it really well. The choice of the IDE will depend on the language you are are programming in. I have been using IntelliJ IDEA for Java development and highly recommend it. It’s extremely powerful and I feel like I can’t live without the alt-enter shortcut anymore. It impressed Martin Fowler after developers in his company voluntarily switched to it:
The biggest endorsement of IntelliJ came from ThoughtWorks developers. If anyone suggested a standard IDE for ThoughtWorks projects we needed tear-gas to control the riots. There were JBuilder zealots, textpad zealots, slickedit zealots - don’t even get me started on the emacs zealots.
Within six months nearly everyone was using IntelliJ. Voluntarily and eagerly.
But don’t just use IntelliJ like any other IDE. Make an effort to learn and understand its features to enhance the development process. I’d also suggest learning keyboard shortcuts and start relying on the mouse less and less until you don’t need to use it all when writing code. I haven’t completely got there myself, but it is possible to do 100% mouse free development in IntelliJ. Watch this presentation by Hadi Hariri in which he demonstrates how to ditch the mouse and use IntelliJ only with the keyboard: IntelliJ IDEA Tips and Tricks Full Version.
Notes:
- Enjoying Java and Being More Productive with IntelliJ IDEA
- For Python development, I use PyCharm which is developed by the same guys as IntelliJ IDEA.
- I replaced Sublime Text with Atom by GitHub on my machines.
- Mark Seemann makes some strong points against the use of productivity tools (including IDEs). You be the judge.
Comments (5)
Umer Mansoor
The C++ IDE I really liked (for Windows programming with the VCL) was Borland C++Builder. Qt Creator looks decent enough although I know a few C++ developer who exclusively use Vim/Emacs (+plugins) and are very happy and productive.
IntelliJ IDEA also has a Vim mode but since I have decided to cross the chasm and adopt Vim, I’ve been learning IntelliJ’s key mappings and features. Productivity tools is a brutal business and tools come and go fast but I can see myself sticking with the IntelliJ for some time.
guest
vim mode in Qt Creator drives me nuts because I can’t use the escape key as usual. I type something, hit escape and I’m still in insert mode because the escape key dismissed the autocomplete box that popped up.
zakius
Sometimes it comes to power vs speed battle, if you have to work on not-so-powerfull machine, especially without SSD, using even the best IDE, the one you love and can squeeze every droplet of magic from, can be real pain and you tend to use simpler things just to get stuff done
zakius
I don’t know how was c++ Builder, but Delphi was incredible, probably the only one on par with JetBrains’ products, in some tasks much more powerful, but in others falling far behind
Umer Mansoor
I find myself using Vim a lot when ssh’ing into remote machines.