With Mobile Devices projected to be 1.4 per capita by 2018, the reality of having a roadmap involving their usage regardless of the industry is becoming a necessity. Thankfully there are many technologies available today to help facilitate a rapid development depending on your team’s skillset and your application. In the end however, each company is different so the goals of a mobile application will more than likely be different. In this post I will go over the three big questions that apply to every new mobile development that I encounter.
Question 1: Native or HTML5?
One of the first questions I try to answer when mapping out a mobile project is, should this be native or a responsive HTML 5 Web Application?
A couple factors play into this decision:
- How much money and time is allotted for the development?
- Which platforms does the client want the app deployed to?
- Is there app going to utilize any functionality not exposed in HTML5?
- Does any member of your development have native development experience?
While the gap has been significantly reduced for native mobile application development thanks in large part to the work Xamarin has done with their framework, the time to develop for the main platforms (Android, iOS and Windows Phone) is still longer than that of an HTML5 Web Application. However, depending on the application’s requirements and how much integration to the platforms is required, HTML5 might not be even possible.
Lastly, development experience also plays a huge role in the decision making. If one is primarily an ASP.NET Web Forms or MVC developer and an HTML5 application is an option, then strongly weigh the options of going HTML5 and Native. The ramp up time for someone who hadn’t developed a native application is considerable – especially not realizing the quirks of the platform itself (handling data connection loss gracefully, efficient data pushing and pulling and the touch versus mouse UI).
Question 2: Is there an existing infrastructure, thereby creating integration points on both ends?
If the answer to the previous question is an HTML 5 Web Application, the impact of this question maybe considerably less. Or if your application is entirely offline, then this question wouldn’t pertain to your initiatives.
Undergoing a transformation in an Enterprise can be a huge undertaking, dealing with not only the legacy systems, which have their own quirks and limitations (for instance being on ASP.Net 1.x), but also driving forward with current technology efforts, like a mobile application infrastructure. Having recently revamped one such infrastructure, it led to many discussions.
Some discussion points to consider having early on in your development:
- Who would be affected by the new development?
- Would the mobile experience negate having some components of the old system?
- Leading to the retirement of certain functionality.
- How would the data get back to the old system?
Question 3: Where is the backend to be hosted?
While this question might seem trivial, there are some time and cost considerations to take into consideration. For instance, if you’re developing a fairly straight forward mobile application with social media integrations and don’t have a huge team to develop a backend, Microsoft’s Mobile Azure Services might be a good fit. As of this writing, the service is free for up to 500 active devices and 500,000 API Calls and the documentation provided can get your application’s backend up and running in fraction of the time it would take to develop a web service backend on your own.
If the hosting is onsite, on another provider or an existing infrastructure exists at a minimum for a native application you will want to develop a web service using either SOAP or REST technology so your application can communicate data back and forth.
If you’re developing an HTML 5 application, a complete backend isn’t required in regards to an externally exposed API, however I strongly suggest wrapping your SQL/backend logic in its own library and exposing it with custom classes so if down the road a native application is required, all one would need to do is create your Operation Contracts (if using WCF) or a few methods in a Controller (if using WebAPI). The initial development sprint will be slightly longer, but not only will you allow flexibility going forward, your code will inherently become cleaner.
Hopefully the questions discussed in this post will help guide your mobile development initiatives and spark discussion amongst your development team on how to take that first step towards creating a Mobile application and associated infrastructure.