In SD Times on January 30th, Larry O'Brien writes about Strategies for mobile enterprise development in his Code Watch column.
He talks about three different types of mobile apps: web-based, cross-platform and native. What's the difference? Web-based is as you might think: HTML5-based web application that can run on any device, including mobile. Cross-platform apps are apps that use languages and/or tools that can also be used to create apps for other platforms, such as Mono with its MonoTouch and MonoDroid products or Corona. And native is when you use the tools provided by the mobile device platform manufacturer, such as Xcode/Objective-C/Cocoa for iOS devices.
Larry talks a little about using MonoTouch for iOS app development and notes that it works well, even if you still have to use Xcode and learn a lot about Apple's Cocoa framework API. Having looked at MonoTouch myself, I don't see the point. Why bother to attempt to shoehorn Cocoa into C#, something it was never design to work with? You might as well take the next step and use Objective-C.
But in the end, he suggests that "the wisest strategy for the majority of enterprises is to make their first mobile projects web-based." His reasons (risk management, speed and simplicity) make a lot of sense.
As Larry notes, there are risks when creating a native application for mobile devices. After all, mobile devices are in their early stages and change is constant. Going with a web-based technology is more proven.
Here, mostly Larry is referring to the speed of development and deployment. With a web application, you are already familiar with the technology. Plus you can roll out changes quickly and easily. With a native app, you typically have to submit it to a marketplace for review or use their enterprise tools to deploy it to your users. Either way is less convenient and you probably won't get the level of control you want.
Because web apps won't have direct access to all the bells and whistles of the mobile platform, it forces you to simplify you app. You can instead focus on what your customers really need, rather than waste time "chasing new platform features."
Keep in mind that Larry is discussing enterprise software here, not consumer software. For consumer software, a native or cross-platform application is still your best option. But for enterprise software, think web first.