Friday, December 31, 2010

GWT Designer

I am not a fan of WYSIWYG software.  Almost every experience I had with WYSIWYG tools had the same pattern:
  1. I implement some application using the tool because I am pressed for time.
  2. I get the initial project done very quickly.
  3. Someone requests a change.
  4. Because of the WYSIWYG generated code, I essentially have to rewrite the app.
Maybe I just didn't use the WYSIWYG right.  Obviously, a lot of people love them.  But they were always counter-productive for me.  In the end, they cost me more time than they saved.  So, you can imagine my feelings when I read about GWT Designer.  Here was a Drag and drop visual editor for GWT, complete with integration for SmartGWT and Ext GWT.  I was hesitant, to say the least.

But I also firmly believe that as a Software Engineer, you have to keep your mind open and constantly re-evaluate new tools.  So, I installed the GWT Designer plugin for Eclipse.  I used it for my capstone project, a CRUD application for running a sign installation company.  I was pleasantly surprised.  

Here are a few observations about the Editor:
  1. I was able to jump between code and the visual editor easily
  2. Changing my code by hand didn't break the visual editor 
  3. The code generated by the editor was easily readable and clean
Even though I started with the WYSIWYG, as I got a simple layout produced, I found myself easily translating into the code. It was a good experience.  The visual components I created were originally going to be mock ups, but they were so clean, I've transitioned them into the working code.  The application is not done yet, but its looking good - I've already been able to easily incorporate changes requested by my client.  

Now, here are the drawbacks I encountered:
  1. My 5 year old PC and laptop run the visual components a little slow. 
  2. The visual rendering isn't yet perfect.  While it was mostly reflective of the actual output, there were a few differences.
All in all, though, the drawbacks were more annoyances than restrictions.

If you use GWT, I recommend you try GWT Designer.