The pun is intentional. While I have been getting acquainted with the code I am taking over for my new contract, I have also taken advantage of the the trial license for IDEA. The app is using Struts in JBoss, both of which are new to me. You can expect to see some Struts-Turbine comparisons as I get more familiar.
Today I started test-driving some new code in the data access object.
My very first impression of Struts this week was frustrating. Hunting from the struts-config.xml to the objects and JSPs annoyed me. At some point I will probably grok the need for the extra layers of indirection. This week it just bugged me. And then I installed IDEA.
I learned regular expressions from BBEdit and quickly became an evangelist for both. In the past three years, I have become an emacs junkie. I've never been impressed with any IDE, always returning to the comfort of the all-mighty text editor. I've read plenty of accolades for IDEA, but remained skeptical. In the first ten minutes, after setting up the project, I was ready to spend the money.
Setting up the project was intuitive. I didn't read the docs at all -- and didn't even notice that until I started writing about it today. I read through a few tips-du-jour and left it on. I never do that! The tips are entirely relevant.
What I noticed first was the todos extracted from the comments in the code. Not a wiz-bang thing, but incredibly and immediately useful. (Contrast that with the MS Paperclip.)
Next I noticed the local version control. I first used CVS for a safety net in my hobby projects. I have missed that since I joined Turbine and learned to never commit if it doesn't compile. In the back of my mind I have occasionally toyed with trying a local repository in conjunction with the real thing, I have chosen to just do without. I had forgotten about it until I saw the feature in IDEA. I immediately had to see the diff and rollbacks in action. How totally excellent!
Most importantly, in these few days I haven't found any annoyances. That never happens! Preferences have been easy to find. Keyboard access for everything is excellent. Ubiquitous name completion and JUnit integration are also excellent. I love having the "grammar checker" warn me about the syntax errors before I compile. My only challenge is training my fingers new keystrokes.
Back to Struts, IDEA was immediately useful in loading classes by name while looking at struts-config.xml. It took away the nuisance of the indirection. I realize now that this is one of the critical services offered by an IDE: making layers of indirection easy to navigate.
I know the refactoring goodies are cool, but fluidly navigating the code is what facilitates the understanding that comes before code changes.