Zach Horton and I split east coast destinations for Salesforce’s Mobile Developer Week. Zach shipped up to Boston, and I headed over the border to Toronto to hang out with the illustrious Pat Patterson.
During Pat’s presentation, he described mobile development approaches using the Salesforce Mobile SDK in three flavors:
- HTML5 – web apps built with a mobile-friendly (aka responsive) design in mind.
- Hybrid – HTML5 apps (see previous bullet) enhanced with a simple Native wrapper (see next bullet), allowing developers to access some hardware on the device (camera, voice, etc)
- Native – apps built using the iOS or Android mobile platforms, allowing developers to access all hardware on the device beyond the “wrapper” mentioned above.
Clearly, the level of sophistication of an app increases as you read down the bullets. The tradeoff? So does the level of complexity to develop them.
I would recommend that any Force.com developer building a mobile app to “go hybrid”. Force.com devs already have the skills to build an HTML5 app quickly, and the wrapper needed to go from HTML5 to a Hybrid app is a weekend project away for any nerd that can’t seem to get their fix of code during the workweek (read: all of us).
Also, Force.com developers typically build business apps. A mobile app will likely plug a specific hole for your company. It would benefit from a device-specific user interface and some streamlined functions, but it probably won’t benefit from a graphics accelerator or a multicore processor that native development may afford. While an “Angry Birds : Salesforce Edition” sounds intriguing (and I’ll let you all decide which Salesforce executive aligns with which bird), “Lead Closer 9000 Extreme Edition” is probably closer to our development reality.
Finally (and at risk of showing of my development ineptitude), native development is hard! I’ve picked up XCode three or four times, only to put it back down in a huff, grumbling to myself “Objective-C makes me feel stupid”! No doubt, there are developers who would laugh at this, but to hark back to my previous point, if you don’t need the sophistication of a native app, you don’t need the complexity of developing it.
Save time. Save money. Go faster. Go hybrid.
Now, throw tomatoes (or angry birds) at me in the comments.