I’ve been at Microsoft a little over a year and a half. I’m very excited about a number of the new technologies that are here and on the coming roadmap. Microsoft is at a point where it’s more open than it’s ever been. The level of community involvement in projects like the ASP.NET MVC framework, IronRuby and much more has been historic.
I get that it could always be better.
I get that many people in the community want to be contributing source back to some of these projects.
I get that many people want to be more involved and want their specific feedback in every product.
I get that many people are frustrated by the rate of change even if they recognize that there is change.
I get that many people are angry about this feature or that feature in some product.
I get that.
I FEEL THE SAME WAY! I’m trying to get into some of the TAPs (Technology Adoption Program) so that I can get closer to the product teams and give them all of my feedback in a more direct fashion. I’m shouting internally about all of my feedback on the various products and technologies. I’m shouting internally about all of my feedback on the messaging, direction and overall strategies.
As many of the ALT.NET leadership know – I’m firmly in their camp. I want the best practices of agile software development and the best tools that can be brought to the table to lead in the industry and shape the future. I’m first in line to say that the drag and drop/voodoo/snippet driven demos that show a product rather than train the audience are crap and need to go. I’m trying desperately to change that and raise the bar on all presentations done at Microsoft.
What I don’t get is that just because someone fits into one of the frustrations or rants above, that they feel that they can say that all of Microsoft sucks or that a particular product sucks just because it doesn’t fit their exact need or hasn’t incorporated their exact feedback.
What brought on this rant is the Vote of No Confidence on the Entity Framework. That’s the nuclear option. It’s not perfect so kill it. This is in a long line of bombastic statements that I’ve been on the receiving end of. It’s not a new thing. I’ve got a tough skin. But it’s getting old.
I’m reminded of one of my kids when they wanted something and I asked them what the magic word was and they said “NOW”. I put them in a corner and they didn’t get the thing that they were asking for.
I’m reminded of another of my kids whose favorite lunch meat is Louis Rich Turkey Cotto Salami and he won’t eat ANY other lunch meat. He’ll go hungry rather than eat normal Cotto Salami or even another brand of Turkey Cotto Salami.
I can say un-abashedly (and I’m positive that the product team would agree with me) that the Entity Framework is not perfect. Neither is any software out there in the world. It was created by humans therefore it’s not perfect. Additionally, even if it’s an exact fit in a given context, it’s not going to work for someone else in a different context. That’s why there’s a ton of unit testing frameworks, ORMs, scaffolding frameworks, AJAX frameworks, CSS frameworks, text editors and the like. It’s not that any one of them suck – they are all good in some form or fashion. Each of them was created to work a given context. There are some that are broader than others. But that doesn’t make one better than the others. That just means that they are more generalized and kinda fit more situations.
All of that being put out there, I actually agree with most of the points in that the vote of no confidence brings up – so does the product team! You can read their response here. I’m also fine with a petition. It’s a solid way to point out that there are a group of people that are united.
What I disagree with is the way in which it’s presented. The language of “Vote of No Confidence” is intended to start a fight and is long hand for “You suck”. That’s very disheartening to anyone who hears it regardless of how thick their skin is.
I’m not upset that people are giving feedback. I want them to give feedback. But here’s the deal – do it in a grown up way. My way or the highway doesn’t sit well with anyone on the receiving end. There’s a WIDE path between being constructively critical and downright offensive.
The product team has to be more politically correct than I have been here but damn it – give them some credit. They are smart guys weighing a lot of different variables, concerns, customers, other product teams and a ton more. No, they are not perfect. But give them some credit. Every decision and feature represents a lot of time in dev, testing, translations and compromising timelines and other features.
It took me a while to realize, the “vote of no confidence” style tactics are the reason that it’s so hard for Microsoft to release anything. Every tiny crappy little utility that would take you a week to crack out in your basement that Microsoft releases has to be available in 88 languages, completely accessible by anyone with any disability, bullet proof, hacker proof and walk on water or it’s going to leveraged as a way to say that Microsoft sucks. There is no other software in the world that is held to this standard.
So what’s the solution? I’m definitely not saying to lower the bar. But I’m saying let’s look at some realities through the possible solutions.
Don’t do Entity Framework because we haven’t gotten those 5 things right?
If we don’t, Microsoft is not providing a full framework and will get dinged for that.
Wait until we get those 5 things right?
If we do, Microsoft is taking too long to get something out and we get dinged for that and 5 more things will pop up. This design by committee idea is a lose-lose because there are too many compromises. That’s how we ended up with XML Schemas, SOAP and WS-* (or WS-Death* as some call it) which are also things that the same people rail against.
Adopt one of the other open source projects as official?
Even if we could by legal means, we’d pick the wrong one according to someone regardless of which one we chose. And we would be cast as not being innovative and dinged twice.
Release it as is?
Well – we are obviously already under attack as it is so why not since no other solution is going to make everyone happy anyway?
Microsoft will provide a robust and quality solution. It might or might not be close enough for you on your particular project to use. But it will satisfy a wide swath of the projects that are out there. It’s already something that other projects are starting to build on top of very successfully. It’s a huge step forward from ADO.NET Datasets which, while some don’t agree, better than the previous generations and so on and so forth.
ALT.NET is about having alternatives in .NET – right? This is a choice. It’s a good one in most respects. The fact that it’s not perfect does not mean that it’s crap. It means that there’s room for improvement. Notice the difference in the vocabulary there? The fact that it’s not perfect means that you should point out what’s right and what’s not right about it and move on.
< p>Just do so in a constructive manner.