You kn0w, I am amazed by abundance of videos and tutorials out there that show you, how “easy” it is to create a mobile app. Sure, creating a “Hello world!” example with a few fields and a progress bar is not difficult, but that is hardly a representative app. In real world, you would want user to authenticate, you would want to store some user data (you know, in case he or she decides it is time to wipe the phone and then regret the decision), you would want to offer some payable services to those users and differentiate between free and pro users etc. etc. Yet, you don’t see tutorials for that. And you know why? Because those things are hard to do right.
Another thing that is nearly impossible to do. Create one code base for all three major platforms (Android, iOS and Windows Phone). Specially, if you are on a tight budget. Sure, there are free tools, like Apache Cordova (a great project) that fake the compatibility by using WebView to display HTML5 pages with JS and CSS as mobile apps. As great as that sounds, those frameworks still offer sort of a limited set o features.
So, if you want to do things “right” (e.g. without WebView), you are stuck with frameworks like Xamarin. But, with Xamarin, you either cash out or it is yet another useless thing you installed on your computer. You see, free version is so limited, that a “Hello World” example that ships with a marvelous editor named Xamarin Studio does not compile. And I don’t mean it doesn’t compile for WP and iOS (you cannot compile for those two platforms on free edition). It doesn’t even compile for Android platform, as resulting binary is too big! For everything else, you have to pay. A lot. As the “most popular” package is most popular for a reason. It is the cheapest package you can actually do things for which you wanted Xamarin in the first place.
Now it may seem I am dissing Xamarin. Not true. I am just using them as an example as their competition is exactly the same, if not worse.
Still, no matter how much you cash out for development environment and what framework you use, you still need two machines to compile the code. A Windows PC and a Mac (or god knows what Apple calls them these days). You see, even though, you can have one code base, neither Apple nor Microsoft were kind enough to supply us with cross platform compatible SDKs (Android compiles on any major OS and kudos to Google for that). So basically, if you want your application to run on iOS and you are a Windows user. Tough luck. Run and buy the Mac. Move code there. Use something called XCode to edit and compile your code. If you are a Mac user, you go the other way around. I am assuming it is cheaper to be Mac user, as you can get cheapest PC for like 300 EUR, while cheapest Mac (Mac mini) costs around 500 EUR. But with PC, you still need to buy Windows 8.1, as lower versions cannot compile WP8+ apps. Not something you would expect from a company that desperately wants to get market share in mobile business. Thankfully, Visual Studio has now a real, full-featured free edition.
So in this chaos, we developers get the short end of the stick as we have to juggle between market demands, frameworks, number of code bases, technologies etc. and everyone involved seem to try and get the most money out of this situation. But, if Microsoft is serious about getting into mobile game, they (as the weakest player) will have to accept the fact that people won’t change to their platform just because it is out there. The main reason to use iOS and Android is the fact that you can get any app your hart desires in their app store. Not so true for Windows app store. To convince people to develop for WP as well as for iOS and Android, I am predicting that within a year Microsoft will publish cross-platform WP SDK based on ASP.NET Core and vNext technologies.