The Incremental Approach to Enterprise Mobile Development

By Henry Lu JDi Data’s CIO, Senior System Architect

“Mobile” is the business buzz word nowadays. Organizations large and small have been actively developing mobile solutions to connect their operations with the customers. In contrast to conventional systems, mobile apps are associated with a steep learning curve and limited talent pool, making the cost seemingly prohibitive or the return on investment somewhat uncertain. The fragmentation of the mobile platforms further aggravates the situation by forcing businesses to address iOS, Android, Blackberry and Windows phones altogether, or else risk losing a significant portion of users. To ensure a steady return on investment and wide user base coverage, an incremental approach is preferred by many organizations.
As have been frequently outlined by the mobile development community, there are three mainstream approaches to mobile development:

  1. Native apps, which require learning the targeted platform’s SDK and programming language, but provide the most robust and versatile functionality. Once the apps are developed, they enjoy the additional benefit of easy access and free publicity when they are certified and listed in the official app stores of mobile devices.
  2. Web apps, which leverage traditional knowledge in HTML and JavaScript and are associated with fast development, ubiquitous access and minimal entry cost. Functionality will be limited by the sandbox provided by mobile web browsers, and web apps are not listed in the official app stores.
  3. Hybrid apps, which have part of the functionality written in HTML and encapsulated in a native web-view component, which compiles into a native app that pulls most of its content from a web server. Apps like these can be developed quickly, and enjoy the benefit of being listed in the official apps stores as well.

Fortunately, these three approaches are not mutually exclusive. Businesses can migrate their apps from one to another in phases, especially when the apps do not rely heavily on the hardware features of the mobile devices, such as camera, accelerometer and hardware graphics acceleration. A prime candidate for incremental development is the type of app that allows customers to view, enter and search business data. It involves the initial prototyping as a web app, then progressing as a hybrid app, and eventually maturing into a native app if the market response is favorable.

Prototyping as Web App
This is the stage where a business carefully examines the requirements of the intended mobile app. Which features are the most critical to its users? Which make the most sense for mobile consumption? Which are the most attractive for initial launch? Most importantly, how much time is allowed for development?

JDi Data's VCC mobile web app developed in jQuery Mobile.JDi Data’s VCC mobile web app developed in jQuery Mobile.

For quick prototyping, there are a few mobile web frameworks that come in handy, such as jQuery Mobile,Sencha Touch and KendoUI. I personally prefer jQuery Mobile for its wide community support, adaptive web browser compatibility, clear documentation, clean code and esthetic UI elements right out of the box. If your mobile app has to support some older but still widely used devices (such as Blackberry 5 phones), jQuery Mobile is a clear winner.
Programming on these mobile web frameworks varies from super easy to moderately challenging. jQuery Mobile and KendoUI both adopt HTML5 syntax — you code in traditional HTML tags and just add some new fancy attributes; very little scripting is required. All the heavy lifting is done by the frameworks themselves. Sencha Touch, on the other hand, is a purely JavaScript-based framework and has a moderate learning curving. You need to know how JavaScript classes work in order to have some success with this framework.
Progressing as Hybrid App
Once the market has shown some initial interest in your mobile web app, it’s time to fine-tune it based on user feedback or new business goals. Maybe you have noticed (e.g. through your web server logs or other analytic utilities) that certain features are used a lot more often than others. Maybe, you have created a communication channel where users can voice their opinions and request to add, remove or enhance certain features. Maybe, your company has identified new business opportunities through the initial launch, and is now pondering additional features for the mobile app. Whatever the reason, your app is very easy to modify as it is all in HTML code. And once it is modified, your users will see the changes immediately because it is a web app and no re-installation is required.
In the meantime, it is also pertinent to start thinking about making your app appear in the app stores of Apple, Android, Blackberry and Windows Phone devices. Packaging your web app in a native wrapper is easy with the help of such framework as PhoneGap. All of the three web frameworks mentioned above support packaging by PhoneGap. Once it is done, your app is ready to be submitted to the app stores for approval and listing.
Because PhoneGap adds a native wrapper around your web app, it also allows your app to access some native APIs that are normally out of reach by web apps, such as access to camera, audio/video capture, compass, accelerometer, geolocation (GPS)*, contact records, multimedia files, local storage and notification queue. PhoneGap provides a common set of JavaScript commands for invoking these native APIs, so you don’t need to learn a new programming language for each mobile platform. (* Note: Some mobile devices support GPS access directly in mobile browsers, even without PhoneGap, but not all devices do.)
Maturing as Native App
If your hybrid app has received much success in the app stores, and you want to take some extra steps (and devote additional resources) to make your app perform even faster or integrate with the mobile operating system on a lower level, it will be time to look at converting it to a native app. Only a native app can leverage all the performance and functionality of the mobile device, but that also means you have to learn the SDK and programming language for each and every mobile platform that you want to target. It is a daunting task for smaller businesses with limited budget, but gladly, you don’t always have to go there. If your customers are pretty happy with your hybrid app and you feel its performance is acceptable, maybe you never have to go the extra mile.
If you do decide to take the native route, there are plenty of independent mobile developers that can do the job for you. Or, you can use a single third-party framework that will generate assemblies for multiple platforms. If you are a JavaScript guru, you might want to considerAppcelerator Titanium. If you are a seasoned C# .NET programmer, maybe MonoCross will be your next best friend. There are many other mobile frameworks out there to help you streamline the development process. The best summary I can find is this mobile framework comparison chart provided by Markus Falk. (Thanks, Markus!)
If your company has enough resources and you want your app to look and perform the best for every major mobile platform, then of course you are encouraged to dive into the SDK of each platform and leverage all the hidden jewels in the SDK to make your app really shine. It is not an easy task, mind you, and it is not for the faint of heart.
Conclusion
Well, there is not really a conclusion. The mobile devices are constantly evolving, and so are the programming frameworks and SDKs. It is hard to say which is too little and which is too much. It all depends on what your customers need and what you can truly afford. But I would recommend not to aim too high on your first try, and listen to the user feedback as you go. For larger enterprises, maybe heading directly on the native route is the right approach; for smaller businesses, a web app or hybrid app could be all that is needed to make your customers happy
About Henry Lu
JDi Data CIO, Senior System Architect
Henry Lu is the CIO and Senior System Architect at JDi Data. Lu’s work experience developing T-SQL, ASP.NET, C# and AJAX application platforms, as well as intranet and extranet solutions, Lu brings a robust expertise of the information technology industry to the table. As Chief Information Officer for JDi Data Lu has his hand in the creating and development of the Claims Manager® software and the implementation of the Worker’s Compensation State Reporting EDI module, Medicare Reporting EDI module, and the addition of General-Liability and Medical-Malpractice lines to the Claims Manager® system.