A Love Story
I have loved Microsoft for most of my life.
(Don’t worry, this post isn’t just a clip show of my life, there’s some good stuff in the middle)
I remember in 1999, I was a Freshman in high school, and I wrote (and read aloud) an essay explaining the superiority of the open Windows hardware ecosystem to that of the proprietary Apple Macintosh. I tried to write a follow-up essay but the class groaned and so I wrote about Shakespeare.
Here’s a picture of me circa 2004—I would have been 19 or 20. I’m wearing a VB.NET “World Tour” T-Shirt. I remember taking about 3 hours of buses and climbing a fence to get from my home to the west Chicago suburb where Microsoft’s local office is to attend the .NET User Group meeting where I got that shirt.
I remember taking personal time to go to the swanky Expression Studio launch event, and the Windows XP Tablet PC event, and a Group Policy Management seminar when I was basically a young kid with barely two nickels in my pocket and no reason to be there. I’ve had a Windows Mobile device or Windows Phone almost exclusively since 2005. People would ask me why and I’d say “I like having a phone I can program”.
I loved .NET, VB, and Visual Studio so much that I begged my uncle to use his credit card to spend the $12.95 to get the 180-day Visual Studio .NET 2003 trial DVD shipped to me and that built relationships with other Microsoft products such as SQL Server, Windows Server, and IIS.
It’s possibly the only company, the only team, and the only project that could get me, a lifelong Chicagoan to even consider moving to the other side of the country, away from my family, for any length of time.
Which is why it’s so painful for me to consider that that love could be the worst decision of my life. Literally all of the pain and frustration I feel isn’t from merely using Microsoft. It’s from loving Microsoft.
And I’m probably not alone. Satya once said he wanted to take people “from needing Windows to choosing Windows to loving Windows”. I guess, in my head I (perhaps wrongly) expanded that to taking people “from needing Microsoft, to wanting Microsoft, to loving Microsoft” but so what? Should I love one part of Microsoft and distrust another? Shall I love your right arm but not your left foot?
In any event it seems like we’re going in the wrong direction. Microsoft has a group of people who fervently love them (and have loved them even when it meant given up other OSes) and it feels like they’re problem solving how to “get them to love us less, they love too much”, “wouldn’t it be great if they loved us less enough to be open to using other tools instead of the apparently addictive substance we make that they want to use exclusively until the end of time”.
And with choices like these those people (like myself) will go from loving Microsoft to just… really wishing for stuff. Not expecting it. But kind of desiring it. And eventually, not even wanting it but just … dealing with what you need because it’s what you have already. And when “The .NET Team” says “We’re not going to evolve the language, enjoy using it as it” they’re in effect saying “We want you in that 3rd bucket of people who just need us”. But what comes next when you don’t need it? Apathy? Hate?
Behavior unbecoming of being loved
There’s a notion I observed while in the halls of Redmond. I don’t know if it’s because the company has so many college hires who have never lived outside of the Microsoft bubble. Maybe it’s an engineering thing. But there’s an assumption (they aren’t conscious of it, I promise) that if you block off certain things to customers you create a path of least resistance for them to do the things you want.
So, for example,
- If there is no express edition for Windows Desktop, people will make Modern Windows apps.
- If we take down the WinForms videos, people will start programming using XAML.
- If Xbox One is online only, people will buy Xbox One and stay online.
The problem with that thinking is that it’s manipulative. Would you ever love someone who curtailed your options in order to get you to behave the way they want?
The basis for this faulting thinking is the belief that you’re entitled to that love to begin with. It’ll just come to you whether you deserve it or not and it’s just about deciding where it goes. Or as PlayStation-fan buddy describes certain Xbox behaviors: “The assumption that all roads lead to Microsoft”.
I’ll give you another example. In 2010 there was a bug in the Visual Basic runtime around the feature that makes it super easy to make single-instance Windows Forms applications in VB. The way it works is that when you open an app it opens a socket and listens and the next instance that opens tries to connect to that port to check if an instance is already running and terminates if it is.
The problem with that approach is that in an untrusted security environment (or, I think, with the Windows Firewall on) this throws exceptions. So, the solution was to use IPC (inter-process communication) rather than sockets.
In 2012 (I was on Roslyn at the time), I remember the team that owned that component deciding not to fix the bug. And the rationale was “Once Windows 8 comes out everyone will just make Windows 8 apps and there won’t be any new WinForms apps so why does it matter?”. They genuinely could not imagine that everyone wouldn’t immediately drop whatever they were doing and run to what was next simply because it was being made. They bet on it. They weren’t malicious. But, is that reasoning becoming of being loved?
I question if the thing that would be best for Microsoft (and I swear, not something they’ve ever uttered even privately that they’re going for) is obedience.
Love is hard. You have to earn it. You have to keep it. You can’t always control it. Obedience is easy. It’s definitely not a universal problem in the company, but what “The .NET Team” is in effect saying is, “Obey or begone”. I do not see how that gets them to love. I do not get how other people love someone who behaves that way to people who already love them.
I really want this company to behave like someone deserving of love, so that others will love them as I have.
The desire to be loved
In 2016, I along with colleagues in the UX research group at Microsoft conducted a study of VB developers. We pulled from a number of sources, sent them surveys, looked at the results, scheduled interviews with a few dozen. One thing we were trying to compute was the “Net Promoter Score” of VB—a metric that was all the rage at the time and tells you how likely customers are to recommend your offering to others. There were a lot of folks who rated 10 “would recommend highly” but also plenty of folks who were what they call “passives”. They were scoring VB just below the point where you’re considered a promoter. And there were a few people who were outright “Would not recommend!”. Looking through the raw survey verbatim feedback of why they said what they said, a majority of respondents who didn’t score 9 or 10 said some variation of “Love it, would otherwise recommend it, but wish Microsoft would show it some love”. In other words, it’s not language instability, or the phase of the moon, or the average IQ of VB developers, or an increasingly git-based world that hurts VBs potential. The most commonly cited reason for not promoting it—for VB not growing faster is Microsoft.
And you’d be surprised how often the word “love” appeared in those verbatims. Many developers either said the loved the language or wished Microsoft would show it more love. Not, “I wish Microsoft would show us a set of stable templates in our core scenarios” but love.
A company should not be its customers biggest problem, perceived or actual, and if you think I’m exaggerating, consider how many problems VB.NET developers had on March 10th this year and how many they had the next day and who was entirely responsible for the delta.
Trying hard to stay on the platform
I’m trying really hard to stay on the platform. Writing this much and prototyping for open source this much isn’t free. This is not about recent events, but for the first time in my life I’m more open than I’ve ever been to the looking at languages beyond VB, IDEs beyond Visual Studio, platforms beyond .NET, and even OSes beyond Windows. But I’m trying.
Right now, there’s a whole bunch of folks around the world that just saw a post on the .NET Blog who just want to keep loving Microsoft. They just want to snuggle up to it, use its stuff, and give it their money.
If someone wants to love you, you should let them.
I want to keep loving Microsoft too. I just wish they’d let me.
-Anthony D. Green
Preface | Part I | Part II | Part III | Part IV | Part V: An Open Letter to Satya Nadella
I was one of the ones you personally called, and my reason for not recommending it is the same then as it is now — MS had basically just said they weren’t going to give it any loving in the future. .Net core wasn’t going to support VB, it’s 4 years later and that seems to have changed a bit, but only a bit…they are saying the next version will mainly support it and they don’t intend to enhance the language in any way that can be avoided. Languages that aren’t growing are dying, and MS proclaims they aren’t going to grow.