The Closeted Microsoft Fan Boys
The other day I was having drinks with a colleague of mine who is currently working as a Delivery Infrastructure (DI) engineer on our project. His team is working on setting up an “infrastructure as code” CI/CD (Continuous Integration & Delivery) pipeline in the beautiful world of Linux containers. In the midst of our late night bar conversations, it comes out — we both have always loved Microsoft!
To give some context, many of my colleagues both past and present have had a distaste for most things Microsoft, mostly by engineers who operated outside the Microsoft space. It’s symptomatic of the typical Microsoft vs open source crowd we have all been used to hearing about. Since becoming a consultant at ThoughtWorks, I now work in a place where Microsoft developers and administrators are the minority. This means I’m surrounded by engineers many of whom have chosen their sides from the Linux vs Windows battles from the 90s and 2000s. I still have to take a big gulp when I look them in the eye and say, I work on “.NET” and I actually have Windows servers at home. But to their credit, they usually respond by saying how much they appreciate the direction Microsoft has been going in the past few years. And that’s where we all agree. More on that later.
Going back to the bar conversation, my colleague and I struck commonality praising Microsoft for its success pre-Nadella era. While the “true” coders were bragging about writing C using VI in bash and compiling everything via makefiles, some of us were building Visual Basic apps that looked very familiar to end users whose lives were made so much better, all with the least amount of developer friction! I could open up VB 6, put some buttons on a WinForm, write some logic, create an installer package AND put it on a network drive all within a day, maybe even an hour if the code was simple enough. I didn’t have to worry about the Windows API or packaging which library or any of that. Obviously there are many good reasons why we moved away from that but at the time (when the internet was still maturing) it did the job. And even in networking, the learning curve to set up even just a peer to peer network was so much less. As someone who knows peanuts about computer networking, Microsoft again comes to reduce the friction. “Right-click, share drive”. Of course, if you’re security minded (as one should be) this is palm in face but my point is the overhead for the average user was so incredibly little. I want to access my machine remotely? “Enable remote-desktop”. Mount another volume? Right-click “My Computer”, “Manage Disks”. Even after all the notorious security issues that Microsoft had to deal with, they still focus on enabling these features with ease. Take the idea of a “Windows Homegroup”. I could easily see a standard user going through the wizard to enable file shares on all their Windows machines relatively securely on their private WiFi network. All this, out of the box!
This being said, the critics had valid points: Microsoft was proprietary, closed-source, insecure, buggy, and had a crappy developer experience. Interestingly enough, it seems as of late that Microsoft is addressing these shortcomings while Apple seems to be becoming all the things Microsoft was notorious for. This is evident with .NET Core becoming open-source and truly cross-platform (instead of in Microsoft terms of working in “Windows XP AND Windows Vista”). Windows Subsystem For Linux (WSL) gives you all the beautiful tooling Bash provides while Hyper-V allows you to run Linux containers side by side with Windows 10. Since Hyper-V is a type I hypervisor, I often just bypass WSL and spin up random Linux distros in Vagrant to run RHEL/Debian packages while having Visual Studio 2017 open in another window. At this point, Microsoft and Apple are pretty much neck and neck because I have to do the same thing on my MacBook. Short of the fact that OS X gives you bash out of the box, I still need a VM to run containers and while there is HomeBrew and MacPorts, they are just not as great as the Apt-Get or YUM.
The future of Microsoft, especially under Nadella, looks very promising. I have a feeling that Nadella wants to gut Windows. He’s taken a few initiatives to support that such as renaming from Windows Azure to Microsoft Azure, the recent shake-up of it’s Windows team, introduction of Azure Sphere, and the entire “Microsoft Loves Linux” pitch. My hope is that the Windows kernel will die and replaced by Linux. This will obviously generate compatibility issues with legacy apps so I think Microsoft will either partner or take over WINE (the “Linux Subsystem for Windows” or WSL in reverse) similar to what they did with Mono Framework. Imagine running Windows with bash, native container support, using a Debian (or RHEL) package manager, and an open-source kernel WHILE being able to play your favorite steam games, running your favorite desktop apps like Visual Studio and Photoshop, seamless integration with Active Directory, and run all your legacy Windows apps without any virtualization! NTFS would cease to exist and WINE would emulate the drive letters for legacy enterprise apps! To me, this would speak of a company that cares less about ego and forego market sectors where they clearly failed and building on top of where they haven’t.