/* begin rant

Sometimes code doesn’t work. When that happens, we research the problem in detail, scouring books, notes, and the internet for the documentation that we hope will explain both the issue and the fix without much fuss. When that doesn’t work, we search for tutorials and code samples of similar work, and perhaps we even start discussions in online forums where we hope people with more experience will come around to help us out.

That process may work fine with popular code libraries. It does not work with Xamarin.

For whatever reason, I seem to have the hardest time finding the help I need in the Xamarin world. The Xamarin docs are fantastic for understanding the fundamentals of Forms and connecting to native systems to use platform-specific features, but when I go beyond the basics the docs are no help at all. It feels like sailing the whole world with only a map of Europe (history does repeat itself, after all). Somehow, I keep wandering into uncharted territory, and the docs just aren’t enough to get me back home safely.

Quote - Get lost in nature and you will quite possibly die.

But if you think heading to the Xamarin forums helps, I have some bad news for you. I’ve searched those forums up and down for information, and I’ve come to find it’s a place where many questions simply go to die. For whatever reason, many of the forum users seem to be asking questions more than answering them. This hints at the possibility that many forum users may be basic- to intermediate-level Xamarin devs and just can’t answer questions beyond what is already described in the docs. And that’s totally fine! Every person operates at their own respectable level. It just doesn’t help me when I have a more challenging problem on my plate.

It makes me wonder - where are all the advanced Xamarin developers?? I’m pretty sure such a mythical creature exists, after all. It’s true that some companies develop with Xamarin, but perhaps they aren’t as active in the Xamarin community as I had hoped. (I guess they could be on Stack Overflow, though…)

And look, I know there are Xamarin team members (the ones with that classy ‘X’ icon in their profile pictures) that float around the forums responding to questions here and there, but I’ve never gotten a good solution out of them. I’m sure they’re intelligent, friendly people that I’d probably love to chat with in any other context, but when they respond to my posts I can’t stand to work with them.

I honestly don’t think they read my posts. I’m always sure to write what I need and what’s not working, and I provide code samples where possible. But when they offer up a solution, it’s as if they’ve read a totally different question. They ignore my end goal and offer a solution to a problem I didn’t present - with absolute confidence that it’s exactly what I need. (Spoiler alert: it isn’t.) When this happens more than once in the same thread, I just give up. I give up everything and walk away.

But look, it’s like I said - I’m sure they’re great people. But they’re also busy people. There’s probably a misunderstanding somewhere, and things just don’t work out. Oh well. The internet is a big place, and I can always find some nice code samples for what I need, right?

Nope. No. Not at all.

Obi Wan Kenobi saying the archives must be incomplete

Finding tutorials or code samples for Xamarin fundamentals is easy. Everyone copies everyone else’s blog posts and spreads the same basic info far and wide for those precious views, likes, and shares. (Highly unethical, I’d say.) But it’s all the same content! If I want to find something specific, something less common, something that hasn’t been done by a lot of people… I just can’t. I can’t find what I need at all, and I spend days, weeks, sometimes a whole month banging my head against a wall trying to sort out what’s wrong with my code.

Perfect example - Xamarin implementations of AdMob, which is what finally triggered the need to blow off some steam in a post like this. Some background - AdMob is a Google ads service. It has native Android and iOS libraries. Those libraries have (conveniently) been ported to C#/Xamarin and are downloadable as Nuget packages for inclusion in your native projects. I wanted to add rewarded ads to my project. HOWEVER, there are no good code samples for implementing different ad types in your native projects!

Well, I shouldn’t say ‘no’ code samples. To be clear, there are ‘some’ samples, but I’m not sure they count here. They’re 5 years old, all long enough for Google to have updated their libraries to use new properties and methods (which they did), and they show the use of a limited number of ad types - usually banners and interstitials. And they’re hard to find at that! I searched github for hours trying to find something, and when I did find them the samples were only for Android. No iOS samples at all! It was real frustrating since iOS was where I was stuck at the time.

This situation actually made me feel worse about my search. Instead of finding what I needed, I found almost what I needed sitting next to an obvious void where the information I wanted was completely missing. It’s enough to drive a man to drink.

Was I able to reverse engineer the code samples and figure out what I needed to do in my situation? Yes, kind of, and then I made educated guesses until I got it right, which took a lot longer than I would have liked. But in the end, my point is this - I always seem to be searching for information that doesn’t exist, and I don’t think that’s a personal problem. I’m starting to think that’s a Xamarin problem.

Should be using a different multi-platform framework? Or even learning pure native mobile development? I don’t know! I really do like Xamarin, but I wish it wasn’t so painful sometimes. And I can’t help but wonder if I’m the only one who feels this way.

end rant */

Now if you’ll excuse me, I have to get back to my Xamarin project.