Thursday, March 5, 2009

Force.com Experiment

I've spent most of the last month continuing to explore the Force.com developer platform with an experiment to implement some NetPromoter capabilities. Building and updating my business object model was very straightforward using their web-based developer platform and Eclipse plugin. Within a week I was able to implement some simple business processes using their workflow engine that allowed me to notify my employees about detractor events, create tasks for them to do, plan and approve mitigating actions. I also found their Visualforce web platform to be quite easy to use and their Apex Java-like scripting language to be powerful and succinct.

It is; however, a huge system and learning its subtlties was rather slower than getting "Hello World" working. I started with the workbook tutorials that I got at the Cloud Connect conference. As far as it goes, the tutorial really got me off to a good start. When I got out of its wading pool; however, I encountered the volumes of help documents in their online help facility and frustration began to set in. The CRM platform has so much capability I had to spend a lot of time understanding it before I could make more progress on my own experiment. The help documents only describe the simplest of examples, leaving a lot of my questions unanswered.

I turned to their discussion boards and posted a few questions to their developer community. Perhaps I am still too much of a noob to be bothered with, or my questions did not make sense, but their community did not respond like the one I've experienced with Apache Hadoop for example. A majority of the questions posed by developers just go unanswered. I think Salesforce.com employees could do a better job of monitoring their discussion boards so that developers in my state of learning can get across the gap between their nice toy tutorials and developing a real system.

While I'm still a little frustrated, I have not given up. From a cloud computing perspective, the force.com platform is at the highest tier of the Infrastructure-as-service, Platform-as-service and Application-as-service pyramid. This means there is maximum functionality to leverage but also maximum vendor lock-in to use their application. Apex, while Java-like, is not Java and porting my application to another platform (e.g. open source) does not look feasible. Visualforce, a taglib-style web toolkit, looks like lock-in too. This is a big bullet to bite.

Their CRM offering; however, is well accepted world-wide and the ability for me to develop an application that can leverage their 55k+ customers' CRM artifacts and workflows is very attractive. Once I get my application working in their environment, it is fully scalable, localizable and web-service enabled. This means I can concentrate almost completely upon the features of my own product and leave all the infrastructure headaches to force.com. They even have an AppExchange to help me market and distribute my application. I gotta learn more about this stuff.

2 comments:

Anonymous said...

Thanks for a great post Jeff. Let me know if I can help you in any way. I'd love to connect to figure out what would be a good next step after the tutorials - perhaps the core resources?

http://wiki.apexdevnet.com/index.php/DeveloperCoreResources

Regards,
Jon
--
Community Manager - Developer Force

Jeff said...

Within a few hours of my initial posting, I got an email from Jesse Lorenz, a Technical Evangelist at force.com. He wanted to know my handle on their discussion boards and the nature of my problem. I responded with some information and by the next morning he had posted a response to my most pressing problem. It did not fully answer my question, but he showed me a better way to get the job done by using Visualforce email templates instead of the simpler Text templates.

Thanks Jesse, kudos. I will also follow up on Jon's comment.