Choices, choices, choices. There are many choices to be made when getting started with Xamarin and I'll get deeper into more of those in future posts, but in this post, I'll focus purely on the choice of IDE because this is an important decision that will effect your impression of Xamarin negatively if you go into it with the wrong expectations.

One choice you don't get to make is whether or not you'll need a Mac for Xamarin development. If you want to do cross platform development with Xamarin, you will most certainly need a Mac. It's required. There is no getting around that. Okay, yes, you could build a Hackintosh, but good luck getting everything working and keeping it up to date. Personally, I don't have time for it and my time is worth money, more than the savings I might reap by building a Hackintosh.

Using Visual Studio with Xamarin##

Most C# developers spend their careers inside of Visual Studio. It's a great IDE and has all of the features you could ever want. One of those features is Xamarin integration. Not so long ago, using Xamarin in Visual Studio came at a premium price. It used to cost something like $1,500 per platform or something (I can't remember the actual price). But, since Microsoft aquired Xamarin, it's now free.

Well, let me back up. Xamarin integration is now included with Visual Studio. That means, if you have an MSDN license for Visual Studio, you get Xamarin integration too. But, since Visual Studio Community is free and it also includes Xamarin integration, Xamarin is effectively free. Price was a large barrier for many developers wanting to get started with Xamarin and while the cost of Xamarin used to be pretty high, now it's attainable for anyone and can be used right inside Visual Studio.

But, is using Visual Studio for Xamarin development a good idea? I know, it's anathema to even ask such a question. Of course Visual Studio would provide a superior development experience than the alternative, Xamarin Studio. I mean, Visual Studio is way more mature, it has all of the familiar tools and conventions integrated. It feels like home. This is true. And the Xamarin team has done a great job of creating a great development experience in Visual Studio and I would expect that to improve further with the Microsoft aquisition.

While the tooling for Xamarin in Visual Studio is great, there's a hair in the soup and it's a major problem. It's the build/deploy time for iOS. Because all iOS apps have to be built on a Mac using XCode behind the scenes, the build from Visual Studio has to occur over a network. In my own development environment, I use a MacBook Pro and run my Windows environment using Parallels (which is a great piece of software by the way). So I run a build of my Xamarin app in Visual Studio and it moves over the network to my host machine (the Mac), which then builds and deploys the app to the simulator (which runs on the Mac). This takes a long time. Too long to be practical in my opinion. It takes several minutes for a trivial app, not seconds.

Because of this horribly slow build time, I have done the unthinkable and ditched Visual Studio for Xamarin Studio.

Using Xamarin Studio##

First, let me say this: if you're not targetting iOS, you can get away with using Visual Studio, but if you're going to target iOS, you're best bet for speedy development is to run Xamarin Studio natively on your Mac. At first, I hated Xamarin Studio. It felt clunky and unfamiliar. It didn't feel like home. But, there's one thing Xamarin Studio does very, very well: it builds and deploys iOS apps fast.

The speed of running a build and deploying to the iOS simulator from Xamarin Studio is nearly as fast as running native Swift code from XCode to the simulator. It's that good. Because mobile development requires so many cycles of build -> deploy -> test, this build and deploy speed is critical if you want to get anything done. For this reason, I forced myself to use Xamarin Studio for mobile development and along the way, I grew to like it. In fact, I think it's a superior IDE to XCode (but not Visual Studio).

Since I first tried Xamarin Studio about 8 months ago, it's come a long way with several big releases. Performance has increased and they've added lot's of nice features. It is possible to get used to a new IDE but it takes time. It's not love at first sight, it's a learned love. For me, the speed of development is worth the trade off of figuring out the quirks Xamarin Studio presents.

In conclusion, if you plan to target iOS, first you need a Mac and second, you'll likely want to use Xamarin Studio over Visual Studio for development. Yes, it will take some time to adjust your brain to work with a different IDE, but it's totally worth the trouble

In my next post I'll discuss some of the quirks of Xamarin Studio and show you how to tweak it so it feels more familiar. I'll also show you some of its unique features.