On trying an IDE after using Vim and Sublime

I had used TextMate and a few others, but my love affair with text editors began when I saw Jeffrey Way's video: Perfect Workflow in Sublime Text 2. It's a beautifully lean program that's extensible, yet never bloated. It's good looking, functional and quick.

My relationship with Sublime, however, became complicated once I saw people using Vim and deftly manipulating code with a few keystrokes and never leaving the home row, much less ever leaving the keyboard to reach for a mouse. I went to Vim-Town and was a happy resident. I spent almost as much time tweaking my .vimrc as learning to program and I felt like I was crushing the act of editing text.

IDE advantages

At some point, I starting seeing people who seemed to be very good programmers using WebStorm. Later when I started working with PHP, I saw a few people using PHPStorm, both of which are variants of IntelliJ IDEA.

After a few false starts and committing to give IntelliJ a serious try, I have come to appreciate the advantages of using an IDE over a text editor... even for JavaScript and PHP.

The thing that sticks out the most for me is the awareness of the language and the project structure and other files. I still get a thrill when I rename a require in a file and it automatically renames the file itself and any other references to that file.

Being able to rename a variable in a controller and have it automatically change in the views is also incredible to me (but probably very normal for people who learned to program with IDEs). The major benefit is that renaming functions, methods, and variables is so cheap, that you can do it without giving a second thought. Rather than wasting brain power worrying about what files you might also have to change, you can focus on higher level things and rename at will in order to create more readable code.

After all, this is the kind of boring and repetitive task that computers are good for. It's said that good programmers are lazy and I think this is a case where keeping track of everything in your head is just giving yourself a bit of busy work. Some will say it's not that hard and it's kind of not, but if letting an IDE think about something is even 1% easier, it's a win for the IDE in my book.

Lastly, autocomplete is smarter. Because IntelliJ (or whatever variant) understands your code, it won't suggest variables that you can't use or things that don't make sense. Also, because it is project-based, it will auto-complete method etc. from other files and give you information about the parameters.

Stuff I Ignore

The thing that I don't see myself using anytime soon are the integrated versions of tools that I would rather use separately... I'll keep using Git on the command line, thank you. I'm also not using IntelliJ for browser-reload or compiling Sass files or minifying JavaScript. I wouldn't be opposed to using them if I thought they were easier, but since I already have a pretty good command line workflow for these tasks, I think adding a GUI for some things isn't really going to save me any time.

Next time

This post is the why. My next post will be some things I've learned that might be useful for someone else looking to give WebStorm, PHPStorm, or IntelliJ IDEA a try after coming from Vim or Sublime Text.