<http://schema.org/articleBody>
"Michael Thomas\u00A0is the\u00A0Principal Development Lead for\u00A0SkyDrive,\u00A0Microsoft\u2019s personal cloud storage service. In his role, Michael is responsible for many facets of product development, including planning, technical investigations, quality assurance and execution.\u00A0\r\n\r\n\r\n\r\nA promise of cloud storage is the customer\u2019s ability to access data from everywhere, anytime, on any device. As such, mobile device support is a critical component of a successful cloud storage service.\r\n\r\nGiven the current mobile device market, customers need high-quality apps on the top three platforms: Android, iOS and Windows Phone. However, designing and building apps across these platforms can lead to a myriad of challenges, among them the need to reconcile the unique native languages of each platform while creating an elegant, consistent user experience.\r\n\r\nOutlined below are some key lessons learned from working on mobile clients for SkyDrive, Microsoft\u2019s personal cloud storage service, and best practices for anyone looking to build high-performing mobile apps across platforms.\r\nStep 1: Select the development technologies\r\nOne of the biggest challenges in developing cross-platform mobile apps is that each mobile platform has a native language and SDK, or software development kit. Windows Phone has C# with .Net, iOS has Objective C with Cocoa and Android has Java with the ADK. There are also solutions that allow code sharing; HTML5 can be run on all three platforms, as can code written in C++.\r\n\r\nWe found that using the native language and SDK on each platform had significant advantages in supporting the full functionality of the platform, ease of development and high performance. It also provides the quickest access to the new features of new operating system versions and SDKs. For the best experience, the advantages of the native platform are paramount.\r\n\r\nHTML5 provides the ability to update application functionality by updating a web server from which the HTML is downloaded, which could be a good solution for some applications. C++ could also be a good solution for some common cross-platform modules.\r\n\r\nHowever, access to the platform functionality and writing the user interface would be more difficult in both of these cases. You may still have to combine these options with native SDKs to utilize some platform unique functionality.\r\nStep 2: Define the user experience\r\nIn some cases, the desired application functionality may be the same for each platform. But customers of each platform expect the style to be similar to the other applications that they use. A good motto here is \u201Capplication personality, platform look and feel.\u201D\r\n\r\nWith application personality, customers can feel the unique values provided by your applications. The applications on different platforms can have many things in common to identify themselves, such as similar color themes, features and flows for user actions. Even if a customer switches platforms, he or she should still be able to use the application with little or no ramp-up time.\r\n\r\nWith platform look and feel, the customer interactions will be similar to other applications on the platform, and customers can immediately use the application. For example, the command icons will be in the same place on the screen as other applications on the same device.\r\n\r\nTo illustrate the concept of \u201Capplication personality, platform look and feel,\u201D here are screenshots of the same screen for iOS, Android and Windows Phone:\r\n\r\n\r\nStep 3: Develop rapidly and use the application\r\nIn the mobile space, the competition is fierce and customers expect updates on a regular basis. Traditional product development processes with long planning, development and test phases can take months, or even years.\r\n\r\nA better approach is to adopt a rapid release cycle process. Each release cycle should contain a set of smaller features which can be developed in a few weeks or less. Each release cycle can be a logically complete set of features which could be released if desired.\r\n\r\nWhile stabilizing the code, some team members can start planning the next release cycle. In this way, release cycles can keep rolling, and customers can enjoy the updates they\u2019ve come to expect.\r\n\r\nFor ease of development and maintenance, applications should have similar designs for the non-platform specific logic, such as the business logic and the common infrastructure to handle user actions. Developer expertise can be leveraged if the same developer owns a feature across platforms.\r\n\r\nA key to providing quality in this environment is early customer feedback. Real customers will use the applications in ways that cannot be easily recreated in the lab. They\u2019ll experience a wide variety of network characteristics, and use their own data.\u00A0In addition, they\u2019ll use the application on a wide variety of devices.\r\n\r\nThe best way to achieve quality in these situations is to get the applications into the hands of as many people as possible prior to release. A dog food program reaching a business group, social group, friends or potential customers adds a lot of value and also helps build enthusiasm for the application. The application should provide an easy mechanism for those early users to report issues; a single tap to report issues greatly improves the chance of getting more feedback.\r\nKeys to Success\r\nIf the aforementioned steps are followed, you\u2019re in a great position to offer a high-quality cross-platform app. Below are some additional considerations that will greatly increase your chances of success.\r\n\r\nProvide a great customer experience\r\n\r\nWith the small screen sizes, it can be hard for a customer to see all of the data and find the all of the needed commands; the application needs to make navigation easy. Most of the screen space should be devoted to showing the data the customer wants to see, and the most important commands, status, etc. should be on the screen.\r\n\r\nAny less commonly used items can be moved to menus or other dialogs. Always ask the question, \u201CHow may taps does a customer need to finish an operation?\u201D Fewer taps make customers more likely to use a feature.\r\n\r\nTune the application for high performance\r\n\r\nThis is critical in an environment where the customer is typically watching the application while it runs, and the hardware and network may be slow. Response time and CPU-Memory-Network consumption are the key areas that should be examined.\r\n\r\nTo improve the response time, move all of the time-consuming operations to the background to free up the UI thread for user interactions. When showing a large list, load the data one page at a time from the network to reduce waiting time for users. Caching the resources downloaded from your servers can save considerable network consumption and reduce the response time dramatically.\r\n\r\nWhen the underlying data changes, you should update only those UI elements affected by the changes. Keeping the memory footprint small reduces the chances that the operation system will remove the application from memory when it\u2019s in the background. When users come back to the app, it starts more quickly.\r\n\r\nIt\u2019s best to run monitoring tools against the app frequently to find and fix CPU, memory and network consumption issues.\r\n\r\nInteract with other applications\r\n\r\nWith hundreds of thousands of applications in the app store, mobile customers can do many different things on mobile devices: texting, receiving/sending emails, social networking, browsing content and even editing documents. They expect their applications to work together, and enabling interaction will drive usage of your application.\r\n\r\nMonitor customer feedback\r\n\r\nOne of the great things about mobile applications is how quickly feedback becomes available in product reviews and blogs. This feedback enables developers to quickly address urgent issues and is a source of ideas for future improvements.\r\n\r\nImage credit:\u00A0bloomua/Shutterstock"^^<http://www.w3.org/2001/XMLSchema#string>
<http://thenextweb.com/dd/2013/11/26/best-practices-building-cross-platform-mobile-apps/>