Let me start by saying a few things since my profile here is anonymous.
I am a former Evil Corp Senior .NET Full Stack Engineer. Forgive the Mr. Robot reference, but I'm not allowed to speak for said company that I've spent most of my career working in multiple senior roles. I started out as a career SQL Server Architect and DBA. Spent 4 years as a consultant and 6 as a BI Developer. Then, the last 5 as a Full Stack Engineer for Evil Corp in the Financial Systems Automation field. I utilized the full .NET stack, with SQL Server, MVC, Webforms, WPF, Silverlight, React, Angular, and a host of other web technologies, but also everything else from Apache admin to Java Engineer to Teradata dev. I quit last year to be the principal engineer of a tech startup. Our first app is more of a side project, with 50k user guaranteed exposure in the first day. The main purpose being more or less an experiment.
Reason for choosing Xamarin:
This should be obvious as a .NET dev and desire to build cross platform, this is 100% of the reason for choosing Xamarin. I also assumed (and was partly disappointed - more about that later) that Xamarin had a deep community of engineers with a proven track record of rich, stable apps with the ability to develop and scale quickly.
Specifically: I chose Forms because of my experience in the Silverlight / WPF world. Also, the MVVM concepts are intimately familiar to me and our shop is 100% .NET so far.
First, I know the Xamarin community is now more than a million developers. While I am certain many of you have a depth of experience in mobile development and .NET, you are not highly visible save one or two of you. At first I thought perhaps this is a natural consequence of antiquated forums with very little moderation, lacking organization and a lot of junior or even hack / non-devs looking for assistance in the wrong place. However, other sites seem to display (to me) the same lack with a lot of engineers who have a surface level framework and mobile platform general knowledge. Most with just enough knowledge in a given area to make what they need work - little consideration of scalability or adherence to industry standards. That is not to say my experience is 100% awful. There are the few and I have utilized many a great walk-thru, blog and 3rd party library.
First, I would like to say I am delighted at the performance, ease of implementation, documentation (though seemingly stagnant as of late) and sample projects. I am delighted at how quickly new platforms are supported and how well Xamarin is integrated with Visual Studio. While I have some complaints, I recognize the complexity of what has been accomplished. I hope the complaints I do have are resolved in the near future. And, as a MS fanboy I have high hopes. My main complaint is the lack of standardization, a few key missing framework features / wrong directions / thinking, and the perception (purported mostly be Xamarin) that Forms is meant for quickly developing conceptual solutions and not a long term enterprise option or mature, rich, high performance, scalable app store releases. Xamarin.Forms even with all of it's drawbacks, the LEAST of which is performance, is an amazing option especially for organizations that are largely .NET shops who do not want to expend the resources on another framework or team. This stigma is hurtful to the community and I'm not certain why we (Xamarin and a few key bloggers) are purposely emasculating Forms in this way. If this doesn't change, it is a matter of time before Forms is replaced with another portable .NET, cross platform UI - of which a few already exist. It makes people like me wary of really adopting it at all for fear of lacking future support or premature end-of-life. Beyond that, the drawbacks in performance are in my opinion quite minor and more visible with indie developers creating bad architecture solutions. The biggest drawback aside from all that, is lack of standardization and missing or overlooked features. Just a few examples:
Missing / Overlooked Forms Features:
- The MinimumHeightRequest and MinimumWidthRequest confusion / non standard functionality and the wrong thinking that it shouldn't be fixed because it will break too many current implementations.
A dozen others, but these are the most annoying in forms to us so far. Unfortunately, the community's voice is not getting heard and it is largely due (I believe) to the next issue.
Finally, my biggest negative overall (again revolving around the community) is the forums themselves. Cumbersome, outdated, not moderated and flooded with daily inappropriate posts gone un-managed due to lacking features. This is a major hindrance to community involvement. I seldom bother posting at all. Everything I post here goes on SO as well because the forums especially for Forms is mostly a ghost town though occasionally I am delighted with someone of experience responding. Just in case someone doesn't understand, here are a few specifics:
The community engagement is seriously lacking and just maybe, it's partly due to the Forums.
To say that I necessarily regret my choice is too strong. However, I will absolutely be considering other frameworks in the future and possibly even for projects already completed. As I consider the amount of time spent writing custom renderers etc in Android/iOS projects and working around Forms issues, I question how much time is really saved. Given the lack of direction, feature standards and some wrong thinking from Xamarin regarding all of this, I can absolutely state that this experiment while successful has left us disappointed in Forms but not for the reasons Xamarin thinks. My hope is that Microsoft truly adopts Xamarin as a whole and does a full audit, road map, features and documentation update. Then, comes up with a plan for future sustainability and community involvement. As a .NET solutions provider, Microsoft (not Xamarin) needs to sell me on Forms. I would also like to see Microsoft hosted Xamarin conferences. A lot of unanswered questions about the regular Evolve conference which seems to have just died?