> > My manager now wants me to learn Xamarin, but I don't feel confortable > doing mobile apps etc. > How stable is the technology, should I buckle down and learn it, or should > I start looking for another job? >
Cough! In the 37 years that I've been writing software, I can tell you without a doubt that developing using Xamarin is by a long-shot the most abysmal experience I have ever endured. Many times each day my wife will hear me scream out the phrase that I plan to have chiselled into my gravestone ... "Everything f***ing doesn't work". My bad experience is tainted by the fact that I'm using Xamarin Studio on an iMac. Here's the bad news ... official Xamarin releases may randomly break your development completely (satellite assembly resources are currently broken for example). Debuggers misbehave or fail in undiagnosable ways. The code/XAML editor has weird quirks and insane intellisense. Tiny code or XAML mistakes cause crashes in seemingly impossible locations. Breakpoints go haywire. The complex dependencies involving the large numbers of independent platforms, kits and the 3rd party ecosystem is as fragile as a spider's web. App appearance varies in subtly irritating ways on different devices. Web searches for help usually produce vast screenloads of outdated unresolved arguments and crazy suggestions. And this is the tip of the iceberg. Here's the good news though ... once you learn to live with and avoid most of the serious Xamarin quirks and pitfalls (and you'll learn the hard way), it's still probably faster than writing Objective-C/Swift and Java to produce parallel native apps. I have some basic rules of Xamarin development: - Don't "push it" too hard or you'll dig your own hole. Try to work with what the platform can do. - Don't write UWP apps, write native ones in Visual Studio and you'll get apps that feel "right" on Windows. - Avoid 3rd party packages and anything that touches the native platforms as much as humanly possible. We've had shocking problems which were cured by stripping out "fancy" packages and platform specific code. - Don't make too many changes in one go or you'll break something and not know what it was, then waste hours trying to backtrack to where you were. - Write your whole app as a stand-alone controller which behaves like a state machine in a portable project. The Xamarin UI is then as thin as possible and it just binds to the app controller's properties and calls its methods. *(This is a sensible design in any case, but do it strictly and carefully in Xamarin and you'll be far better off)*. Good luck! *GK*