The Business Case for Xamarin
If you're expecting Xamarin to be the silver bullet for multi-platform mobile development, you'll be disappointed.
We've been using Xamarin for just under a year, and one thing is clear. If you're expecting Xamarin to be the silver bullet for multi-platform mobile development, you'll be disappointed.
From a technical standpoint, Xamarin presents a unique solution to a widespread technical problem. The wide variation in mobile devices is such that it's unsustainable as a business strategy to focus exclusively on one platform. Even if you ignore Windows Phone, Blackberry, and the new line of Amazon Fire devices, that still means that your app needs to run on both Android and iOS devices.
One tool for every solution?
On the surface, this is a compelling enough argument to seek out a tool that promises a 'write once, run anywhere' workflow. Combined with the performance issues present in packages that allow apps to be built using web technologies but still run natively on mobile devices, tools that convert one code base into multiple native apps (like Xamarin) are particularly enticing.
However, Xamarin is not right for every situation. Here are some specific things to keep in mind when evaluating whether Xamarin is the right tool for your app:
- Xamarin's most obvious advantage is the ability to write shared code --- code that needs to run regardless of platform and can easily be abstracted into its own set of libraries. If the vast majority of functionality is platform specific, Xamarin may not be the best choice.
- Xamarin's unique feature is its use of the .NET framework. If you're looking for functionality that already makes use of .NET code, or a particular feature is easier to build using the .NET framework, Xamarin may be right for you.
- If you're already familiar with C#, learning Xamarin's idioms may be a straightforward process. If you're more familiar with Objective-C, Swift, Cocoa, and/or Java, building native applications for each platform may present less of a learning curve.
- Xamarin is a third-party product built on top of the native mobile frameworks, which means that sometimes it lags behind releases or can be prone to bugs. If you need to stay on top of new features in the newest versions of operating systems, Xamarin may not be right for you.
- Xamarin's IDE, Xamarin Studio, is a direct descendent of the open source project MonoDevelop. Xamarin Studio does have some bugs, which seem to affect some developers more than others. If you are less comfortable with your version control system, don't use one (you should), or don't have the time to ensure your development environment stays stable, Xamarin Studio may not be the best choice.
- If you're looking for quick time-to-market, without a lot of bells and whistles and platform specific customization, Xamarin may provide a very short path to an initial prototype. Keep in mind that anything more than a prototype may be stressing Xamarin's capabilities.
Our Experience
In the past several months, we've used Xamarin for several mobile application projects and gone the native route for others. We've used our experience in working with Xamarin to help us determine which option provides the best return on investment for each client.
While this reflects our experience with Xamarin (and seems to reflect others' experiences as well), we're interested to hear if you use Xamarin, and if your experience has been similar. Please let us know in the comments.