Not to beat a dead llama, but I was away for a little while, remember? Before I left, mobile was “coming soon”, and I’ll admit that I wasn’t paying much attention (yes, even though I had seen Mary Meeker present her Internet Trends IN PERSON at a Salesforce management event in March 2010 and say “Mobile Will Be Bigger Than Desktop Internet in 5 Years” – heck, I figured I had some time). When I came back from South America in May, mobile had arrived! 2 years early! It was time to get on board. I spent my first eight weeks ramping up. I have more to learn, and new tools and devices are announced daily, but want to share my “Mobile 101” learning here, in case you are in a similar place.
#1: Enterprise Mobile is Different than Consumer Mobile
I thought I knew about mobile apps. I’d used iPad apps exclusively while on sabbatical: iPhoto, Facebook, Blogger, etc. No laptop. But that was consumer mobile. Those apps were free. If they stopped working, there were no serious repercussions. No business repercussions. That has always been the difference, even with Desktop web apps. If a business app stops working, the business stops. The bar is higher. And the apps are not free.
#2: Enterprise Mobile is the Same as Consumer Mobile
Your employees, partners, and customers will not tolerate lousy enterprise mobile apps, just like they won’t tolerate lousy consumer mobile apps. This is a new behavior. The user is king here, and you cannot force people to use a lousy app. They’ll delete it, and fill that gap on their screen with another app, either from a competitor or from an untrusted provider (or with something that shoots bubbles). If you want people to use your app, the experience needs to be great. This interview with Chia Hwu, CEO of QUBOP, a mobile app consulting company, really made me think about the new challenges of UI design for mobile.
#3: As in All Religious Debates, Choose Your Own Path
HTML5? Native? Hybrid? At first, we had endless debates about this at Salesforce.com. We had spent years perfecting a single stack, simplifying our development process and in turn, bringing that value to our customers and partners by taking the complexities out of app development. Our only variable was testing on multiple web browsers. We thought that was a pain. Now, we are facing multiple devices and multiple operating systems. Might as well be coding desktop apps! How could we make this easier for ourselves and for our Force.com developers? We needed to invest in cross-platform support, and that’s what we’ve done with our Mobile Services, which support HTML5, iOS, and Android platforms.
But that’s not all. It’s not just choosing the right platform, you also need to choose from hundreds of frameworks and tools. JQuery Mobile? AngularJS? Backbone.JS? This is an emerging market, everyone is in the game, and there is no clear winner yet. The MVC (Model-View-Controller) design pattern is back and stronger than ever, and the tooling tends to focus on one of these layers, or on connecting them. At Salesforce.com, we are focusing on technologies with the most traction and ones that are enterprise-ready. We add new ones as they evolve, and we now support eight popular frameworks.
At the end of the day, like any religion, it is a personal choice. The platforms and frameworks that are most robust, reliable, and easiest to use will win in the end. Until then, you need to make a business decision that weighs time-to-develop and fidelity of user experience. You can develop a mobile app anywhere along the continuum. Need more fidelity? Write more native code. This DeveloperForce article outlines the pros and cons.
#4: Mobile is NOT Magic
Mobile does not remove the need for coding, testing, deploying, and maintaining your app. Mobile does not remove the familiar enterprise software hurdles of authentication, data storage, and performance. In fact, mobile makes these hurdles even more important, since the device is no longer under lock and key, chained to an office desk.
#5: As a Force.com developer, you are already halfway there.
You are a cloud developer.
You already have a MBaaS (Mobile Backend as a Service) at your fingertips: just create some Custom Objects with Force.com, access them with our REST APIs.
You have enterprise-ready authentication. Create a Connected App to generate the oAuth Consumer key and define the Callback URL you need to authenticate between the mobile app and Salesforce. (Connected Apps became Generally Available in Summer ’13. If you haven’t used them yet, this Enterprise Mobile Patterns article has a good summary of using them for mobile apps.)
You have server side controllers with Apex Classes, which you can expose as a web service.
Mobile has arrived and it is a new paradigm, but it is still software development. The concepts are familiar, the tooling is new, and the future is here. Business should start by dipping their toes in with HTML5 and moving up the continuum to Hybrid and adding Native user interactions as needed. This allows you to iterate quickly to identify the mobile use cases meaningful to your company and go from there.
Now is the time! If you haven’t dipped into Mobile yet, I challenge you to spin up a new DE (Developer Edition) org here, grab one of the HTML5 or Hybrid Mobile Packs, walk through the Getting Started steps, and then try it with your own data. If I can do it, you can, too!
This MobPartner article outlines pros and cons of HTML5 vs. Native and compares popular HTML5 frameworks: Top 5 HTML5 Frameworks’ for Mobile Web Apps.
A recent study commissioned by VisionMobile captures how your developer peers see the mobile platform landscape, and whether they prefer pure HTML5, iOS, Android, Windows Phone, or Blackberry.
Other great resources here: Mobile Services Resources.