by Michael S. Kaplan, published on 2011/03/14 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2011/03/14/10140462.aspx
What follows are my own opinions and are in no way official policy. I am also going to avoid the snark related to personalities involved which, while of some relevance overall and better at proving the sort of palace intrigue people always enjoy, are not relevant to the specific issue I'm going to talk about.
So the other day in A resource segue, #3 (how'd they manage to screw this one up?), I talked a bit about the rivalry between Windows and the Developer Division. But I didn't really talk about any of the underlying issues behind the rivalry, which may have made it come off a bit like a butter side up/butter side down thing., without any meaningful reason behind it.
That would be the wrong conclusion to come to.
Remember a few years back, when a judge decided Microsoft should be split up?
Well, I'm not going to comment on that specifically. but in looking at one the many seemingly "natural" division points that would theoretically benefit from not being together, perhaps there will be an indirect comment in there.
The one characteristic that both Windows and DevDiv share is a belief that each has -- that each is the one who best understands what the developer wants, what the developer needs.
When on considers the importance that Microsoft has always placed on developers?
Cue gratuitous Ballmer/Domo Developers Developers Developers videos here:
These two big chunks of Microsoft are making some pretty freaking bold statements here -- i mean when the CEO goes on about how crucial developers are, claiming to understand developers is a claim to understanding the thing that is crucial.
I'm going to go out on a limb with my own bold pronouncement. Lucky for me no one is paying attention here! :-)
Microsoft understands developers, but individual parts of Microsoft have an incomplete understanding and, if left to their own devices, would fail in this space. And fail huge.
This is something Raymond hinted at a bit in his Why doesn't Win32 give you the option of ignoring failures in DLL import resolution?:
Okay, but when Visual Studio was looking at how to add delay-load functionality, why didn't they implement it by changing the Win32 loader so that failed imports could be optionally marked as non-fatal?
Well, um, because the Visual Studio team doesn't work on Windows?
There's this feature you want to add. You can either add it to the linker so that all programs can take advantage of the feature on all versions of Windows, or you can add it to the operating system kernel, so that it works only on newer versions of Windows. If the feature had been added to the loader rather than the linker, application vendors would say, "Stupid Microsoft. I can't take advantage of this new feature because a large percentage of my customer base is still running the older operating system. Why couldn't they have added this feature to the linker, so it would work on all operating systems?" (You hear this complaint a lot. Any time a new version of Windows adds a feature, everybody demands that it be ported downlevel.)
This is a very real aspect to the problem that Windows itself continues to have a stubborn myopia about.
They also have a sense of entitlement about being the big platform that hurts getting things added to it in a timely matter, which is a problem they have with being a good partner. But I'll focus on this other issue for a bit.
Every version I'll be in some meeting hearing about some exciting feature and I'll ask what the down-level story is. And they tell me that there isn't one. If they are particular confident and/or arrogant, they'll even suggest that this feature will drive upgrades.
That is not properly understanding developers, by a long shot. Thay's a blind spot the size of China (including the Xinjiang Uyghur, Xizang, and Inner Mongolia regions).
Developers have to care about the versions that all their users have even if it isn't the version they run themselves, and if Windows had a business model and an engineering model that respected that then they would be a lot closer to being able to credibly claim that they understand developers. Until then it's like claiming you understand how to make breathing work but forgetting to provide lungs.
Now folks in DevDiv may be confused now, thinking that this is exactly what they do -- so it seems like they totally understand developers.
Unfortunately, DevDiv doesn't get them either. They are missing another crucial piece, which is the creativity and innovation in user interface that they depend on Windows and Office to provide.
I mean, its great that DevDiv understands that developers want exciting features their users want down-level. But they fail utterly at seeing that developers want exciting features their users want down-level.
So they can create something like WinForms, the biggest ever "try to wrap multiple versions of all kind of crap and make it more consistent".
But a new and better FileOpen dialog? Or the Ribbon? Or font picker? or Aero? Or Glass? Or the Language Bar? Or RichEdit? Or MMC (the bedrock of Server UI)? Improved [human] language support?
Nobody makes stuff more usable to developers than DevDiv, once someone thinks of it.
But until does think of it? Nada. And not Nada Surf Nada, but Bubkes Nada. They are not the place the ideas come out of that drive the platform forward.
Them claiming they understand developers is like claiming you understand how to make breathing work but forgetting to provide oxygen.
And the things they do think of, they don't make the partnerships with these other groups to take their ideas where they can go. in the long run, this hurts them most of all. Just like it hurts Windows.
In the end, that's why Microsoft does better as a huge bucket of crabs, each of these large groups (crabs) trying to climb up atop another and in the process keeping someone else from climbing too high, provides a balance that gets everything to developers, eventually.
Of course any one of those crabs in their own bucket would fail.
And nothing gets a Microsoft exec crabbier than failing....
Now is this the only solution? Of course not.
But it is the best solution until/unless these groups get better at seeing their shortcomings and improving their bad partnership skills is to have things as they are.
Now I may talk about what I think would be a better all up model, at some point.
And the weird split in the Windows Server business that forces people to straddle both sides of the Windows/DevDiv issue has led to more than one casualty and a lot of wasted time/money over the years.
But for now I'll leave things right here and suggest that these different parts of Microsoft actually need each other. Even if the don't always admit it, or even realize it....
Otaku on 14 Mar 2011 10:32 AM:
Love the candid comments, and couldn't agree more with you.
However, besides not understanding developers, MSFT also doesn't understand its own employees - i.e. you could get in a lot of hot water over this article. Riffs are still around. There is no point in being a pundit inside of MSFT. I hate to say and believe it, but it's the worst point of failure - wanting to do the right thing for customers and coming up against political barriers, egos and budgets.
All of that being said, please don't stop the rants / objectivity. It's good to see someone go out on a limb here.
Michael S. Kaplan on 14 Mar 2011 10:52 AM:
Of course Microsoft is free to get rid of me whenever they like. They haven't yet, but one never knows. For now I'm T.U.T.F..... :-)
Yuhong Bao on 14 Mar 2011 7:26 PM:
Michael S. Kaplan on 14 Mar 2011 8:35 PM:
Well the execs will have their own reasons, and although that kind of palace intrigue stuff makes for better copy, it's not my trade. :-)
go to newer or older post, or back to index or month or day