Back in February, I wrote that VisualForce was going to be a “game changer.” Now that it has been released into the wild and I’ve started to work with it, I wanted to give an update on my thoughts.
This is perhaps the most impressive technology I have seen from Salesforce.com since I started working with the app almost 4 years ago.
I don’t say this lightly. I’ve seen a lot of amazing things from Salesforce. The Ajax toolkit, Custom Objects and other deep customizations, formula fields and rollups, workflow, the Appexchange, Apex code. I loved every one of these and I know they are amazingly complex.
But VisualForce is amazing. Here are a few reasons why.
- Separation - UI is separated from logic is separated from data schema. This adds to readability, maintainability, and migration.
- Inheritance - the simple controller paradigm of using theirs, using your own, or using theirs with a slight tweak is brilliant. I couldn’t ask for a better balance of flexibility and keeping standard functionality.
- Look and Feel for free - how much of my life has been spent faking the Salesforce.com UI? Not another minute. Want a date picker? You’ve got it. Need a picklist lookup field? No code necessary. Oh, and it’s got the same all, some or none logic as the controllers do, so you don’t have to worry about look and feel until you want to.
- Browser independence - Salesforce.com has taken on the responsiblity of making VisualForce work in modern browsers. I no longer have to care about why my javascript doesn’t work in Safari.
Apex may be the most difficult technical challenge that Salesforce.com has pulled off to date. Allowing thousands of people to run crappy code in multi-tennancy without burning down the house is a feat. But VisualForce is the most impressive thing I’ve seen, much in the same way the iPhone is impressive–it’s the design that is brilliant, not the brute force technicality of it.
I’ve been amazed during my learning process just how much I don’t have to do to get things to work correctly. I showed a colleague my first real VisualForce page that will replace a complex S-Control for creating multiple payments connected to an Opportunity. He liked what he saw, But he wanted me to make a change. “Add the Paid checkbox to the form where we’re creating multiple Installment records, so that users can create payments and mark them paid on creation if they want.”
To add that simple bit of functionality to the S-Control would have taken me at least 30 minutes. I would have had to change the SOQL statement to include the field. Then I would have changed the HTML table to make room for this new field. Then change the for loop in to add a new checkbox to each row of the display. And then change my update statement to get this new field from the DOM object and insert it into the new objects as they are created.
In VisualForce the change was literally 10 seconds. I told the VisualForce page that I wanted the Paid field in the table. That was it. Once VisualForce knew where I wanted the field in the UI, the rest was taken care of for me.
So congratulations to Doug Chasman who was the inspiration for VisualForce so long ago, and to Andrew Waite who has shepherded it on the difficult road to General Release. And to the myriad folks at Salesforce.com who were involved. This is killer platform technology.
Once again Salesforce.com has shown just how far ahead of other cloud databases they are. We continue to see the future of database development in Salesforce.com, and it comes once again in the form of platform design. So get your tools and your reference manuals and get at it! You have to work hard to stay in front of the wave!