Why am I not happy with emacs and the power of the command line and all the tools available a few key strokes away you might ask? Well, as being a lazy programmer is nowadays considered being a plus, I want some more help from the environment. I want to be reminded about all those FIXME’s and TODO’s scattered in the code. I want better integration with subversion, better and easier testing and reliable refactoring support for starters.
It is easy try an IDE and quickly loose interest. You start the program, look around, get annoyed when you don’t find the keyboard shortcuts or don’t understand the concepts. I’ve done that before. I know this and decided to use Zend Studio on the biggest project I’m on at the moment. The team members are located in two different countries, use different operating systems and time is sparse. Everything needs to run smoothly. Blissfully ignoring the tingling bells warning me not to do it I imported the project into Zend Studio from subversion.
That part went really well. It seems easier to import a project from subversion than directly from a directory structure.
Using the IDE
One of the concepts I always have had trouble understanding is when the IDE keeps weird project files in the code tree. Thouse files should not be part of the project. Team members should be free to use whatever tools they find best for their productivity. Zend Studio does not do this even though it has it’s own status for files which is good. It can still be a bit annoying when Zend Studio gives me the weird error Could not open the editor: Editor could not be initialized when opening files. Huh? If you look at the java exception, available as error details, it only means the resource or file have been changed from outside of Zend Studio. To open it you need to refresh the file through F5. A minor nuisance but why not tell me the file is changed and ask if I want to reload the file? It can’t be that hard.
There are many good things though. I like having PHP Documentor just a click away. Using the refactoring feature and being able to reliably rename class methods throughout the project is a big plus. Code folding, inline language warnings and errors in the editor and easily navigating between different places in the code are also things that makes life easier. It is also something you’d expect in any modern IDE. Sometimes I miss grep on the command line but it is probably just a matter of getting used to the GUI way of searching.
So all in all I’m happy this far. The IDE gives me the support I want. But there are a few things that I think is problematic.
Subversion integration. It is easy to see the history of a file and compare against different revisions directly in the IDE. But it is actually very hard to see the small annotation icons which indicates if a file has local changes. (I have a 17″ laptop with a screen resolution of 1920×1200.) And the other day when committing a change that spanned many files in many directories not all of the changed files were selected for commit. I didn’t notice this and subsequently the when updating the test environment it broke. Easily fixed but still annoying. This problem together with the editor not handling file updates from outside of the IDE is making life a little bit harder than it should be.
Encoding support. I am in the habit of using UTF-8 for everything. This particular project was originally created on a windows machine and all the files were encoded in ISO-8859-1. I didn’t give it much thought as i’ve been on the project for some time and Emacs have always detected the encoding without bothering me. Zend Studio for Eclipse use UTF-8 as default but completely ignores the encoding in the already existing files. I didn’t notice the problem until a team member using windows called me and asked why I screwed up the files.
It is my responsibility but the stupid editor didn’t exactly help me. Setting the project encoding to ISO-8859-1 and then manually fixing the faulty files removed this issue.
Both of the above problems can be fixed by me being a bit more careful now that I know more about the IDE. It is still serious when you can’t trust the IDE fully.
The last and most annoying bit is the speed. Or rather lack of speed. The program is slow. Dead slow. I have a modern dual core laptop with 3 Gb RAM running Ubuntu 8.04.1. Zend Studio for Eclipse is a bit slow to start with. After working a few hours in the IDE the editor can’t even keep up with my writing. After a long day the laptop sometimes start swapping. I don’t know if it Eclipse, the Zend Studio part or java itself. The speed is still not acceptable.
I chose to try the Professional edition as I want, among other things, subversion and refactoring support which is not available in the community version. The price is 399€ which isn’t that much if it increase my productivity enough. The slow editor and the fact that I have to double check many things isn’t really a productivity boost though. I haven’t used all the features I thought I needed. On the other hand I have only tried it with an old, non Zend Framework project. Support for the framework, which I use for new development, is integrated into the IDE in various ways and I haven’t had the time to try it out.
The trial version is working another two weeks. Before then I have to decide if the extra features in the commercial version are worth 399€.