DISCLAIMER: I am not affiliated with JetBrains in any way.

This article is not about which editor is superior matrix-based comparison. Sublime Text and TextMate, in my experience, are lightweight and elegant tools for hacking away small code-based projects, quick text editing, less developers in the pool. I am trying to address my specific experience in productivity.

Frustrations

I usually work on multiple projects and multiple programming languages. There were 78 git repositories I worked on, including private repositories and pet projects. Implementations are in Ruby, Java, Node.js, Javascript, HTML, Golang, SASS, Phonegap, some lovely PHP etc. All of them use different toolchain commands for building or watch file changes.

Especially when dynamic language like Ruby, Node.js with multiple developers working on a project containing large code base, it’s brain draining to keep track of changes and look for method and class reference.

Any simple editor is not efficient for developing Java. When integrating projects implemented in compiled language with dynamic language, I had to remember two sets of tool shortcuts.

These context switching between editors, shortcuts, toolchains, and conventions are gradually becoming overhead for me. So I started seeking a better solution to improve productivity.

Criteria

I listed some requirements of improvements I am looking for, eventually pleased with IntelliJ:

  • Work well with Java, good Maven support
  • Support additional plugins for multiple language syntax highlighting
  • Support dynamic language refactoring
  • Support custom build tools, watchers
  • Built-in terminal/console
  • Have reasonable key shortcut combinations
  • Spell checker (yes, I s**k at it sometimes.)

Plugins for Ruby, Node.js, Golang and more

Some plugins are only supported by (paid) ultimate edition (comparison). I tried out those plugins in 30 days trial period, they were working great without any unexpected behaviour.

Ruby

Ruby plugin is only available for paid users. Lookup reference and refactoring tools are extremely handy for diving into the large codebase, or even jump into external source code. It has many snippets, builds cycles and test utilities available, and the rest:

  • Rails integration, with all rake commands
  • Breakpoints, debuggers
  • Inline documentation lookup (impressive!)

You should checkout detailed video demo and listed features.

Node.js

Node.js plugins are available for the community edition. Autocompletes and parameter suggestions for Node.js is just amazingly handy. If you were handcrafting each method calls, autocomplete makes us event faster at typing.

Golang

This is probably the most horrible extension so far - most mysterious one to setup. IntelliJ does not offer official support for golang yet. There is an opensouce plugin having some basic compling and code completion features. Once you get GOPATH, GOROOT and SDK configuration setup correctly, it’s much easier to start cracking on Go.

Phonegap

Although IntelliJ is not designed for Phonegap, I can utilize file watcher and SASS extension to automate building SCSS and Javascript, using Ant build tool to automate iOS and Android build. If you write a native Android app, the official Google Android Studio and the Android plugin for IntelliJ. Here is my custom iOS Phonegap build task.

SASS or alternative LESS.js

I use SASS and Less.js in multiple projects. SASS file watcher automatically builds SASS root files (there’s one for less.js too). Build can be configured to work with Compass too. It even outputs build errors in the log window. After opening IDEA project, I don’t necessarily need to launch a console to run additional watch command. It’s probably ok if there’s only one project you are working on. When tasks and projects getting complicated, it’s better to get setup work out of your way and automate seamlessly. Those noises distract you when your focus is on coding challenges.

Built-in Terminals

IntelliJ supports multiple terminals per project with custom layout and screen positions. When launching a terminal, inital path is set to the current project root. I can get rid of most external working terminals and keep the console sit together with the project. I don’t have to worry about looking for tabs in a separate programe window.

Built-in TODO list

Sublime text support this by an outdated extension. IntelliJ has this bundled without hassle. It also allows me to setup filters, for example, only show TODO tasks created by myself.

Final thoughts

This merely covers the surface of the features I love. I am extremely happy with IntelliJ helping me focusing on actual work and being productive in multiple environments. This doesn’t mean it works for your setup, but I strongly recommend to evaluate the daily workflows, identify places can be operated more productively. Maybe just a few bundles in Sublime Text/TextMate might satisfy your needs.

Hey, funny enough that I am writing this markdown post in Sublime Text. Just have to use the right tool, simple.

* Ultimate version usually offers a discount during the year, if you are looking for buying it, keep an eye on those offers.

Leave a comment