In terms of native development I have been relatively contained in the Microsoft development bubble for the last decade, playing around with other environments but always coming back to old faithful. We've had our ups and downs together and there have been times when I started seriously evaluating other options but it never sticks and I always come back. I don't really consider myself a Microsoft "fanboy" though - I think Microsoft has really messed up a lot of things and I'm fairly vocal about it. I think Android and iOS devices are really good, I love web development with node.js and bootstrap and enjoy writing hybrid mobile apps.
I make an effort to judge things by their merits and put aside personal bias as much as possible. Web development aside, my career path has been one where my clients needed solutions on Microsoft platforms so it usually made sense to use Microsoft tools, and the few times there were other equally suitable options the learning curve to switch for one project didn't make much sense. That said, I do make it a point to regularly evaluate other development platforms so I can get a taste of what else is out there, which has often lead to me porting the parts I really liked over to the tools and languages I was comfortable using so I could get the best of both worlds.
I have tried to like Macs, I really have. A few years ago I forced myself to use one exclusively for a month so I could try to understand what it was about them that people liked, convinced that I just hadn't given it a fair chance and needed to spend more time with it to appreciate it and once I did I would see the light. Well that never happened and I hated every moment of my little experiment. In spite of that, I still thought that maybe it was just me, maybe a month isn't enough time...I don't know.
I had dabbled in iOS and Android development and finished a small project a couple years ago and mostly come to the same conclusion as with the mac - I didn't like it but obviously I just haven't given it enough time to get used to it and learn all the ins and outs and become comfortable with it.
Then about a year ago I was forced to start working heavily with Macs and the iOS / Android development ecosystems to build some mobile apps. I am now convinced that they are objectively terrible* - an impossible to prove assertion of course, but they are. I don't understand how the same people that build the iPhone and iPad build the Mac - it's just bad. When I'm developing for Android or iOS I feel like I'm doing work, and honestly that is a new feeling for me and it makes me irritable and unpleasant. Perhaps I'll make a follow-up post one day going into details about the things that bother me.
What it comes down to is this: when I'm developing in the Microsoft ecosystem I don't feel like I'm working; I feel like I'm spending my time doing what I love to do. I'm being productive instead of figuring out how to make things work, fighting with the tools or reading through manpages and memorizing command lines. That is definitely something I had taken for granted until I was forced to actually work and live with the other development ecosystems and my girlfriend can attest to what a pain in the ass I've been on some of those days. So, Microsoft, I want to take this opportunity to say something that I probably haven't said enough - thank you. Thank you for making my life as a developer as enjoyable as it has been for the last 15 years. Your documentation is fucking fantastic, your tools are a joy to use and (a few notable slip-ups aside) your communication with developers is unrivaled and much appreciated. I have come to realize how rare such cohesive, expressive and delightful development experiences are and I am grateful for that.
Now, please make Surface phone a resounding success so I don't have to build iOS and Android apps anymore, thanks :)
(A developer can dream, can't he?)
*P.S I'm kidding about the "objectively terrible" part - everyone will have their own metrics by which they judge platforms, but I admit that I do have a hard time understanding what possible set of metrics in 2016 a well informed developer would use that would result in a preference to Android or iOS development (market share aside of course).