Since the days of the personal computer battle between Windows and Macintosh, software companies have been faced with a difficult choice. Develop separately for both platforms with two separate teams at twice the cost or pick only one platform to support. Neither of those choices have ever been appealing. The difference with the platform battle between Android and iOS on these modern personal computers we call smartphones is that the stakes are much higher and the demographics of both platforms overlap more than ever. Choosing one platform or the other really isn't a reasonable choice anymore. So here we are, 30 years later, still having to develop two completely separate copies of the same app using two completely different programming languages and software development platforms. It's not just expensive and inefficient, it's really time-consuming. It would be great if iOS apps could run on Android devices or if Android apps could run on Apple devices. Unfortunately, that is neither technically possible (because of the operating systems and frameworks) nor commercially likely (because of the intense competition between Apple and Google). But what if a simple layer of abstraction could enable the same code base to be translated and compiled into native platform code for each platform? The answer is Xamarin.Forms. Xamarin.Forms, which is a subset of the Xamarin native mobile development platform, is currently the only solution on the market that solves this problem without compromising performance, device capabilities, security or design precision because of its' unique approach. Only Xamarin.Forms makes it possible to quickly build high-performance, custom-designed and fully-native mobile apps with up to 100% shared code across platforms with support for iOS, Android, WatchOS, TvOS and Windows 10 (UWP). Xamarin.Forms essentially maps every common aspect of each platform to a shared universal language. For example, when we create a Button for our shared user interface in Xamarin.Forms, it is mapped (or rendered out) to a UIKit.UIButton on iOS, a Widget.Button on Android and a Controls.Button on Windows. We define the button's appearance and placement one time and that definition is translated to native platform code when we publish the app for each platform. This is an oversimplification for the purposes of brevity but it is a truly powerful concept. Imagine you were tasked with writing an original daily blog in English Chinese, Swahili and Navajo You could either learn all four languages or you could write your blog in one language and use sophisticated technology to translate your blog into the other three languages. This is the essence of Xamarin.Forms. Unlike spoken language translation, programming languages and platform frameworks are conceptually identical to one another and so the translations are precise. And when a feature is only available on one platform, it can be utilized directly right from within the shared code. Ultimately, software development is about solving problems quickly and efficiently. The lifetime costs involve initial development costs, opportunity costs of time to market and the costs of ongoing maintenance and evolution. Do you really want to lock your customers or employees into one mobile platform or another? Do you really want to build and maintain two or three independent projects for each app your company requires? Embrace the future of native mobile development and start building native apps with Xamarin.Forms shared code today. Whether you want us to build your next cross-platform app or enable and train your own team in Xamarin Forms, contact us today for a free Xamarin consultation at Services@ProductiveEdge.com or 312-561-9000. You will be glad you did!