As a Windows app programmer that wants to also develop native iOS and Android apps, one should learn to develop native macOS apps first! In my opinion it’s easier to learn standard Cocoa first, and only then Cocoa Touch (sharing, of course, the Foundation and other concepts). Mostly because on a Mac you have more power, a large screen, and – even more important – a mouse, just like it was on Windows before!
With macOS supported, one would have already learned a lot about Apple‘s development tools, including the Swift language, the core types and all commonly available features.
Finally, despite its market share, and considering all (other) economical reasons as well, I think you can safely let Android the last: even if simply because Apple‘s ecosystem has a desktop operating system that is raising in market share – becoming a valuable milestone towards the mobile duopoly and being highly similar to what you’ve been used to – while Google‘s Chrome OS (although raising too recently, and interestingly starting to support certain Android apps as well) is generally more (i.e. too) close to the Web.
Moreover, by retargeting your Windows apps to the Mac first, i.e. before getting them rewritten for the mobile devices (and lastly, for Chromebooks), you could get some earlier profits: Mac users (even more than iPhone owners) are – from what I saw around – people that understand very well that good software cannot be free and they will be happy to pay the correct price to obtain it.
Introduction to the above
Until recently, Windows was everything to many developers. Java and Web struggled to become the next big things, but in my opinion they both failed to become dream cross-platform technologies.
In the meantime, as mobile devices become more and more popular, we were all hoping that Microsoft will eventually come up with a successful strategy to get signifiant market share for their Universal Windows Platform concept in that field, especially as they were abstracting virtually everything really nice, from the operating system to user interface development. If we could have continued living that dream, Windows, C# and XAML could have remained all we’d needed (unless we just wanted to learn more for fun).
But as all Windows mobile strategies failed, and have seen Apple‘s iOS and Google-backed Android breaking all records, we needed to ask ourselves: do we want to continue with the .NET technology-oriented development only? If we answered yes, we could thank Microsoft for acquiring and freeing up Xamarin, but hey, cross-platform frameworks always have drawbacks (just like Java and Web browsers) and we just don’t like that.
The correct answer, in my opinion, was in fact no: we didn’t need to remain tied up to Microsoft while it seemed their big ship was sinking and while just some cloud services business could be saved (using emergency boats). Instead, we could embrace Apple and Google client technologies too, actually just like Microsoft themselves seem to do now!
And assuming that we’ve selected the multi-native platform way to go, we just needed to decide what to learn first: iOS or Android? And that last question could have only one right answer too, I guess: none of the above. macOS should be first if we have previously been developing Windows desktop apps, as I explained in the first section of this post…