[Code Index] by Mike Marynowski

programming for work and fun

Thank You Microsoft

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 when they do I'm very 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 tried to like Macs, I really did. 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 almost can't believe that the same people that make the iPhone and iPad make 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. 

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 took for granted until I was forced to actually work and live with other the platforms 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 and transparency with developers is essentially unmatched and much appreciated. I have come to realize how rare such cohesive, expressive and delightful development experiences are and I am grateful for what you've created.

Now, please make Surface phone materialize into a resounding success so I don't have to build iOS and Android apps anymore, thanks :)

(A developer can dream, can't they?)

*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 preference to Android or iOS development (market share aside, of course). Feel free to let me know in the comments if you disagree and let's discuss!

Update (2017-11-25): With the growing maturity of Xamarin, my dream has been mostly realized in a roundabout kind of way. With us having so much invested in making .NET development efficient and enjoyable, I'm very pleased with how Xamarin has allowed us to leverage existing knowledge to build apps for all device form factors. More importantly, it has enabled us to write and maintain one codebase for all major platforms, which has resulted in efficiency gains that cannot be overstated. It's not without its quirks but Xamarin has worked very well for the class of apps we target so I'm quite the happy developer again :D

 Hi, I am Mike, overlord of Singulink :)

This is where I post mostly software development related stuff I think might be useful and interesting.

Posts by Date