Today there was a lot of discussion on Hacker news about Xamarin when this question was posted, Ask HN: Is Xamarin worth learning? Last I checked, there were well over a hundred comments.
Surprisingly, most of the comments are negative. I spent some time reading over the responses and I can't help but come away feeling like many of the developers commenting only gave Xamarin a cursory try or don't really understand what Xamarin is. Again, this is mostly due to mistaking Xamarin.Forms for Xamarin.
Another reason I think many of the responses are negative is that many of these people seem to have tried Xamarin a few months or years ago and the platform has come a long way very recently.
I'll admit it, my initial experience with Xamarin was a bit lack luster. I didn't like Xamarin Studio, I had a hard time learning the iOS API (not the fault of Xamarin) and the overall experience felt a bit clunky. But, as I learned more about how things worked, I grew to like Xamarin and Xamarin Studio on the Mac as time went on.
Getting over the learning curve took a lot of time and dedication. I can understand not everyone's willing to put in the time, and frankly, not everyone has the time, but you really can't judge a technology based on the limited experience of a few days, or even weeks.
For me, I had no choice but to commit to Xamarin. I was building an iOS app for a client and I had no Objective-C or Swift experience. This forced me to stick with Xamarin and I'm glad this constraint was imposed on me because I might have abandoned Xamarin otherwise, admittedly over nit picky reasons.
I've learned to get Xamarin to do what I want and over the past few months the tooling and the platform have improved a great deal. I expect that trend to continue. I didn't comment on that HN thread, but if I did, I'd tell that developer asking the question that Xamarin is definitely worth learning, but the learning aint easy. And, be sure to learn the right aspect of Xamarin. That means, don't use Xamarin.Forms at first.
You're not only learning how to use the tools and the platform, you're learning the iOS and Android API's too. It's also imperative to learn how to use MVVM, which will help you maximize code re-use between platforms. If cross platform mobile app development is your goal, Xamarin is definitely worth the time and if done properly you'll really enjoy using it.