My mobile development itch started as soon as the iPhone came out. I just wanted to create some quick apps/games as a hobby. Over the course of next couple of years I developed on the iOS/Android and WP7 with different experiences/features/limitations. Below I summarize my personal experience in different platforms.
Full Disclaimer: I am not developing primarily for monetary purposes, since this is a side project it needs to be fun for me and I have been using .NET since the first beta.
iOS Development with Objective-C ~ circa 2009
Although architectural approach looked perfect on paper (use of MVC, clear separation of different responsibilities), the development experience with IDE and the language was a while different story. Simple things such as creating properties would require 3 disconnected steps, the libraries were a left-over from the Next Systems (NS-prefix on everything) and frankly for someone with Java/C# experience on a day to day basis it felt like I was going back in time to develop on a device. Long story short, I was not having enough fun to develop on the iOS to make it a hobby. I suppose since I was not quite interested in the monetary rewards that comes with iOS development, I lost interest and stopped altogether.
iOS Development with Titanium ~ circa 2009/10
Andoid Development with Titanium ~ circa 2009/10
While I was at it, I figured it would be interesting to see if the same code-base I used for iOS using Titanium would compile and run on Android. Unfortunately the experience was not that great. Credit to Titanium folks who really try hard to create a consistent cross-platform compatible API and I admit that it is a very hard problem get 100% right and make everyone happy.
Although 80% of the code-base just worked fine, certain things kept just crashing and I was not too keen on isolating every single issue and then forking the code, so I stopped there.
Android Development with Java ~ circa 2010
After the not so successful try with Titanium on Android, I went ahead and started looking into Android SDK. Farnkly, I love the architecture. It is well thought and makes complete sense to any programmer who looks at it for the first time (unlike the iPhone SDK). I created a couple of prototypes and deployed onto the emulator everything worked fine and I was happy. Since I did not have an Android device at that time, I did not test on the device. The only thing that I did not like about this was how slow the Simulator was and each compile/deploy took forever on a reasonably good machine (dual-core, 4GB ram etc).
Windows Phone Development with Silverlight: ~ 2010
When they announced Windows Phone 7 SDK beta prior to the device launch, I did not pay much attention to it. Then one day, I realized it was using Silverlight. Since I had used Silverlight on a couple of projects I had a good idea on how to get started on it. I downloaded the SDK and within 6 hours I had ported the game done in Titanium over the course of 2 weeks. I have to admit that C# and Silverlight with Visual Studio are my comfort zone. That probably has much to do with the fact that it took so little time.
One thing that was not too exciting on the Windows platform was that it is way too simple to get started and create the apps just like the VB6 days. Stuff everything into the UI control handlers and let the code execute in the UI thread and eventually lock the thread by doing web-bound I/O. Hopefully, certain frameworks that are available out there will emerge and somewhat force developers to use the MVVM pattern when developing apps on the WP7.
As per gaming experience, I certainly love the XNA model. It was my first introduction to XNA with WP7 and it is very simple to grasp and run with. I definitely recommend looking into WP7 with XNA to all developers who are trying to get into game development.
In my experience, working with iOS using the intermediary language/platform such as Titanium was a good enough way to create some line of business apps or simple things. Android has a great SDK but really suffers from JDS (Java Development Syndrome) on the windows stack – hopefully Linux environments are faster/more stable, and Windows Phone 7 development is the easiest for existing .NET developers, has great IDE/environment support.
I am really hoping to use MonoTouch and MonoDroid in the next couple of months to see if cross-compilation/execution of mobile apps is possible with C# or will people have to wait for HTML5 to be available on all platforms.