This week we have released our updated IntelliJ IDEA Refcard, with tips and instructions on how to get started with the popular IDE, along with useful keyboard shortcuts. I discussed the advantages of using IntelliJ IDEA, and the refcard with the author, Hamlet D'Arcy.
Get the Refcard!
Click here to download your free IntelliJ IDEA Refcard now!
James Sugrue: How long have you been using IntelliJ IDEA?
Hamlet D'Arcy: I was a late-comer to Java and only started using it full time in 2005, when IntelliJ IDEA 5 was current. For me, one of the main draws to Java was the fantastic tool support, and I had been an extremely satisfied Eclipse user. One week before my hire date, I found out my new employer was an IDEA shop. I panicked and had Manning overnight me a copy of IDEA in Action. I didn't want to look like a fool on my first day at work, so I spent the week cramming on the book. I still recommend IDEA in Action for new users, even though it hasn't been updated since version 5. The core concepts around navigation, code generation, and templates are still relevant.
Sugrue: What are the IDE's strengths vs competitors like Eclipse and NetBeans?
D'Arcy: The immediate benefit I saw from IDEA was a fuller set of automated refactorings. Most of us live in a polyglot world, where we're simultaneously editing Java, Spring configurations, Freemarker or Velocity templates, maybe even Groovy. It's great to have a tool that supports refactorings across all of these languages and formats. And IntelliJ IDEA 8 offers at least seven new refactorings like Extract Method Object, Extract Class, and Type Migration. We're approaching a point where Fowler's entire Refactoring text is reflected in our tools, and that's awesome. Developers interested in incremental
design have never had it so good. The JetBrains site lists all the officially supported refactorings at:
http://www.jetbrains.com/idea/features/refactoring.html. However, I'm not sure there is any one right answer for this question. For me, there are a hundred small things that add up to a better experience. I'd urge everyone to at least try IDEA on a project to see if you like it... and I'm not getting any kickbacks from JetBrains for saying that!
Sugrue: And does it have any weaknesses in comparison?
D'Arcy: Clearly, the price of IDEA is an issue. Venkat Subramaniam used to ask No Fluff attendees
first how many people used Eclipse, and second how many would use IDEA if it were free. By the show of hands it was always clear that people wanted to use IDEA but couldn't afford it. He called Eclipse and developers a badly arranged marriage: passionless but convenient. Here's a question for IDEA users to consider: would you rather have Eclipse and two monitors or IDEA and one monitor. This is totally un-empirical, but both options seem to be about equal. Many shops are setting people up with two monitors and some people are paying for a second one themselves. I'm willing to pay for a second monitor myself and I'm willing to pay for an IDEA license myself. But you don't need to pay for an IDEA license anyway! JetBrains sponsors tons of user groups and most will give you a free license for presenting. Plus, speaking at a JUG is a great way to stay focused and sharp... it's one
of Jared Richardson's Career 2.0 recommendations. Even if you bomb, it only cost you one hour of
Sugrue: For someone who is about to choose an IDE, what are the deciding factors in choosing IDEA?
D'Arcy: The biggest factor is what the guy sitting next to you is using! But we're talking specifically about Java IDEs, and Java projects often devolve into a state where you're mostly just shuffling baroque, almost ornamental, structures around from here to there and then writing enough unit tests so the next guy isn't completely screwed. For this type of work you need to find where state and entities came from and where they are going, which is all about project navigation
and search. The IDEA RefCard covers most the navigation features like Structural Search
and the find usages options, but IDEA 8 also has a "Dataflow to this" feature,
which reveals how a variable or parameter moved through the method chain to arrive at it's current value. Very handy! Also, I hate to self-promote, but the RefCard is a really good seven page guide to the IDEA features I think are most important. So this paragraph is my short answer and the RefCard is my long answer.
Sugrue: What is your favourite feature in the IDE?
D'Arcy: The IntelliJ IDEA 8 database support is what I've always wanted in a database editor. Code completion, syntax highlighting, easy manipulation of variables and parameters. I've long lamented the horrible state of tooling for SQL editors and now I finally feel like I got what I wanted. My other favorite, which doesn't have as broad of an audience, is the excellent Groovy and Grails support. JetBrains created the Groovy joint compiler that allows compile time bi-directional dependencies between Groovy and Java classes, and that work is now part of the open source Groovy project. Now it looks like the same work is being done to allow Groovy, Scala, and Java bi-directional dependencies. Say what you will about non open source software, but JetBrains has shown real innovation and then donated that innovation back to the community. Kudos.
Sugrue: What is your number one tip for users of IntelliJ IDEA?
D'Arcy: No problem, I'll form a number one tip by composing two other tips with an AND clause:
1) Learn the keyboard shortcuts by using the KeyPromotor plugin, posting the keymap next
to your monitor, and simply hiding your mouse for a while. The mouse slows you down, plus using it wears holes in the elbows of your sweaters from rubbing on your desktop AND
2) Stay up to date with the new features. Subscribe to the IntelliJ IDEA blog; it's not trying to sell you
anything, just help you learn the IDE. And my blog isn't a bad place to see IDEA related posts either, if you can put up with the graphics.
Sugrue: Is there a plugin community for the IDE?
D'Arcy: Yes there are a lot of plugins listed on the plugin page, but it's pretty different from the
Eclipse plugin community. You really don't need any plugins for IDEA to work great and the plugins you do need come preinstalled with the IDE. Also, the features of plugins have a way of being folded into the base product with each release. That being said, some of my favorite plugins are Keypromotor for learning the keyboard shortcuts, the new IDEA Server plugin to synchronize environments across machines, and the Revu plugin which people on my team have been using for code reviews. I also use CopyAsHTML to get nice, syntax highlighted code snippets for documents and such. JetBrains holds plugin contests yearly, so following the IDEA blog will help you keep up to date on this.
Thanks for the opportunity to speak my mind James! And happy developing everyone!