-
Get a monthly update on best practices for delivering successful software.
Last week, I wrote a blog post with my first impressions from trying out an early beta of JetBrains' RubyMine IDE for Ruby and Rails. I ended with this slightly glib statement:
"Overall, the help RubyMine was giving me wasn't the help I wanted, and the help I wanted, it wasn't giving me."
A representative of the JetBrains RubyMine team quite reasonably posted a comment on the blog asking me what kind of help I wanted. Or, in other words, "calling my bluff".
So here's my list. Three cautions:
One of the things that has bothered me about the IntelliJ/Eclipse/NetBeans interface family is the default layout putting code in the middle with sub windows to the left, to the right, and to the bottom, plus a couple of layers of toolbar and whatnot at the top. Not only does this totally cover my screen, it's not at all hard for me to wind up with only about a dozen lines of code visible.
I'd rather have one code window and have anything else the IDE is doing for me in separate windows (I realize this is an option in all these systems. The next person I see using them that way will be the first.). It's usually more important for me to go back and forth to my browser than to whatever thing the IDE has put in the bottom third of my screen.
If I'm writing a new part to my rails app, I'm generally working through at least five files at the same time -- controller, helper, model, view, test. I'd like some easy, intuitive support for going back and forth among these files. (To be fair, TextMate has keyboard shortcuts for this that I rarely use.) I like split screen views to some extent.
For example, NetBeans has a project view option that flattens the standard Rails directory structure. I find that useless. But I'd probably use an option where there was a virtual folder called "User Files" that contained the UsersController, UserHelper, User model, all user views, the fixture file, and the test files.
Features that might be helpful along this line include the ability to run all tests, one file's worth of tests, or one specific test, and the ability to run autotest or something similar. I'd also like to see test coverage data integrated into my code view (IntelliJ has this).
In day's gone by, the Prograph IDE had a cool feature where, in development, it would respond to a missing method by popping up a dialog saying "I see you are trying to call method X that doesn't exist. Would you like to create it?" That seems like it would play nicely with test-driven development.
On a given day, it's not unusual for me to work in five or six different languages or text modes (Ruby, CSS, JavaScript, HTML, Markdown, at least). No matter how great your tool is for Ruby development, if the HTML support isn't good, that lessens it's value for me. This is one area where I've come to prefer Jack-of-all-trades to master-of-one.
On the other hand, I'm writing this in a completely custom text editor aimed at blogging (MarsEdit).
If you are going to try to warn me of potential errors in my code, please be courteous enough to get it right. False positives will cause me to shut off or ignore your warnings.
Yes, I know the I stands for Integrated, but I really don't need my IDE to take the place of my web browser, my terminal window, and my file explorer. I'd much rather just have it play nicely with all of these components. (Although something that read the log and hyperlinked all the stacktrace lines would be nice).
I love well-designed shortcuts or templates. My experience is that there's generally only a fixed number of them I can keep in my head at any one time. Still, TextMate's templates, and the ease of creating new ones, are a critical part of how I use TextMate. (And as for IntelliJ, I once convinced my entire team to use it because they were amazed at how little typing I was doing during a demo...).
I don't much care how well your IDE integrates with my source control. I do think your IDE can augment my source control by keeping local snapshots every time I save a file, a feature I used all the time in IntelliJ.
I haven't used an integrated debugger much at all since I started using test-drivend development, but even before that, I very rarely used features like custom watches and the like
Autocompletion is nice, but the TextMate/Emacs "use escape for all tokens in the file" implementation combined with the TextMate RubyAmp "use ; for all tokens in all open files" actually covers about 95% of my autocompletion needs.
That's my list. For now. What do you want in your development environment?
Update: I can't believe I forgot this. Kent Beck, in his keynote at RailsConf 2008, decried the lack of usage of Ruby IDE's written in Ruby and wondered something like "Why would you want to use an IDE written in Java. Aren't you afraid it will rub off?"
Related posts:
Topics: Ruby on Rails
Wow, my complains with them are all different
But I also dislike them (Netbeans/RubyMine/etc)
Font rendering is horrible on them (at least on Linux), interface latency is very high (interface hangs many times while doing simple things), and memory consumption is also very high as well
All known symptoms of a Java app, so why there is not a simple, well designed, c/c++ ide for Ruby? Something like Coda, or QtCreator (http://trolltech.com/developer/qt-creator)?
Comment by Paulo Cesar, Wednesday, December 17, 2008 @ 8:05 pm