What is our primary use case?
The strongest use case for this solution is developing cross-platform mobile apps. Most people are building both Android and iOS, and Xamarin lets you reduce your development efforts and build it from a single code base. You can build for Windows and Mac from it also, but most people are using it to build mobile apps.
What is most valuable?
Xamarin.Forms is a framework that's coupled with the Xamarin platform, and I think one of the biggest productivity gains is that you can build a single UI using Xamarin.Forms and it runs on both platforms. Plus, it gives you the ability to use C-Sharp, which is a very mature, robust language. The combination of forms for cross-platform UI and C-Sharp for the programming language are my two favorite features.
What needs improvement?
The solution struggles a little bit with binding libraries. If you want to use something like Google Maps or a third-party component that's been built for Android or iOS but isn't part of the actual Android or iOS platform, you have to build these things called binding libraries. It's a tedious process and the tooling doesn't do a lot to help you with it. The really common libraries usually have bindings already built that you can use, but if you get stuck having to build binding libraries, it's a lot of work.
I'm a Mac user and I'm not a huge fan of the Visual Studio for Mac because it's not as strong of a tool as the Visual Studio for Windows, and you don't have the same features on both. That's why I have to resort to a different IDE. I generally work in JetBrains Rider because it's a much better IDE for Mac. The IDE support on Mac lags, but they do have a new version of Visual Studio out, so I can't say I've given it a fair chance yet.
For how long have I used the solution?
I have been using this solution for about ten years.
What do I think about the stability of the solution?
I think the stability is slightly stronger when building iOS apps. When you build an iOS app, there's nothing that is really restrictive, so you should be able to achieve the same type of performance, look, feel, and quality of using Swift and all the native iOS stuff.
The Android apps run pretty well, too. I noticed a little bit of a performance hit on the Android side, but that's because there's some pretty complicated architecture stuff. Overall, I would say you can build very high quality apps with the solution.
What do I think about the scalability of the solution?
The scalability is more based on your backend than Xamarin itself, but there are no real restrictions. You can add developers to the team and there's no restrictions with Xamarin that you wouldn't encounter with any other mobile development platform.
I'm a contractor, and my last customer had five developers using the solution.
I heard about one mobile team in Denver at Charter Communications that had 25 people on it, but that's a lot. I would say most teams and companies that I've worked with have between two and six developers using the solution.
How are customer service and support?
This is a Microsoft product and you go through the same channels for tech support that you do for any other Microsoft products. I would say they're pretty good at getting back to us. Parts of Xamarin are maintained by an open source team, so that's always a challenge as to what responses you sometimes get from them.
I would say they're as good as any other solution on support. I almost always find solutions on Stack Overflow before I hear back from them, because there's a pretty big community there. I did a lot of work at Cinemark and we had two to three million users a month and I've never run into anything that we weren't able to solve pretty quickly, within a day or so.
On a scale of one to five, with one being bad and five being excellent, I would rate their technical support team as a four.
How would you rate customer service and support?
How was the initial setup?
The setup is moderately complex. In general, I don't think development for a nice mobile is very simple, but I wouldn't say that it's super complex. .Net itself is a pretty productive programming language, so it helps you with a lot of things, but there's definitely a learning curve to get up to speed on it.
It takes a day to get the solution configured on your workstation, if you know what you're doing. The reason I say that is because you have to install the Android SDK, the iOS SDK, and then you have to install Xamarin on top of all that. All of them have to be installed and configured correctly for everything to work, so there's a lot of dependencies. I think it probably takes at least a day to get a workstation set up and configured, and then you're off and running.
In regards to DevOps and all that, in most places I've worked, you have developers with their individual machines configured. Then when you merge your code into a git repository, the builds are automatically done and either sift to the testing team or are uploaded to the app stores, depending on where you are in the project. That might take a week or so to get going, but just as an individual developer, it takes about a day.
What's my experience with pricing, setup cost, and licensing?
There's no licensing cost for Xamarin. Like the rest of .Net, it's open source, but there is a licensing cost if you want to use the IDE. There's a number of different development environments you can use.
You can use just traditional Visual Studio. I license Visual Studio Professional. It's about a thousand dollars a year and Xamarin comes with it.
I also license another IDE, which I could run independently. That one is called JetBrains Rider, and it's only about $200 a year. You could do all of your Xamarin development with that if you didn't care to license the other stuff.
The actual platform itself technically doesn't require anything. If you wanted to download Visual Studio Code, which is a free IDE, and figure out all the plugins to get everything to build and work the way you wanted, you could actually technically develop for free, but I don't think many people do that.
What other advice do I have?
I would tell people considering this solution that there's a lot of training available. There's a lot of documentation on Microsoft's website and apps for getting started. Places like Pluralsight also have a lot of video training. I would recommend downloading the IDE and going through some of the Microsoft tutorials initially, and then jumping into Pluralsight to find some deeper training.
I would rate this solution pretty high. I would give it a nine out of ten. I've never had the Xamarin platform cause a project to fail. In other words, I've been successful in every project where we've tried to apply it and, except for external problems with the requirements or things like that, I've never run into any technical problem that I couldn't solve with Xamarin. The apps that you can produce can be very professional depending on how much time you put in and you can dramatically reduce the amount of code you have to write to support two platforms.
Disclosure: My company does not have a business relationship with this vendor other than being a customer.