Skip to content

This is why we can’t have nice things, people

April 9, 2008

Rob Conery (a Microsoft employee) has been working on a series of screencasts (part one, part two) illustrating the construction of a web commerce application using TDD. His intent is to learn the process, and by doing so, help others to do the same. These screencasts have caused some major backlash on the intertubes, where people have attacked him for not fully understanding TDD, and therefore presenting his allegedly poor ideas as Microsoft best-practices. The debate culminated in a conference call between Rob, Aaron Jensen, Ben Scheirman, and Scott Bellware.

First off, let me say that Microsoft must have killed Scott Bellware’s puppy or something. All you have to do is say the word “Microsoft” to raise his blood pressure to unhealthy levels. He’s clearly very intelligent, and has good things to say, but every time he tries to make a point, it gets drowned in piss and vinegar.

Note to Scott: not everything has to be Israel vs. Palestine. We want to hear what you have to say, but lay off the holier-than-thou stuff and you won’t come off sounding like a pompous ass. People don’t respect those that don’t respect others. The more you alienate people, the less you’ll be taken seriously — and the less effective you will be at getting your message across.

Anyhow, a comment by David Nelson on Rob’s post describing the conference call sums up why this whole situation is ridiculous:

When you open up with “My name is Rob Conery and I work for Microsoft”, you are declaring yourself to be an expert at whatever you are talking about.

Are you kidding me? I really hope that this is an aberration and the majority of the .NET community doesn’t feel this way. If someone works for Microsoft, I tend to think they have their finger on the pulse of what’s going on in the company (or at least in DevDiv) — but Microsoft is a huge corporation, so even that is suspect. Just because someone works for Microsoft doesn’t mean they’re an expert at anything, or should even be listened to in the first place. Now, I tend to think Rob is a pretty sharp guy, but that’s more due to his contributions to the community than the fact that he works for Microsoft.

Software developers are smart people. Since when did we forget how to think for ourselves?

This, in a nutshell, is what’s wrong with the .NET community, and why Microsoft largely remains a “walled garden”. If a Microsoft employee can’t communicate their perspective to the community at large without it being taken as the One True Way, they will simply stop talking, and the trumpet of Sales and Marketing will drown out the voice of the technologists. This is not the fault of Microsoft employees, or the company itself. If people truly do take the word of Microsoft employees as fact, the problem is systemic, and each developer that thinks this way shares in the blame.

This is also at least part of the reason why Microsoft has traditionally been hesitant to associate their name with open-source software. This results in an offshoot of the Not Invented Here syndrome, Not Invented at Microsoft — which leads to unnecessary projects like MSTest, ASP.NET MVC, and Unity. Don’t get me wrong, there’s nothing inherently wrong with Microsoft creating these projects, but they are all “me-toos” created after similar open-source efforts (NUnit, MonoRail, and Windsor, respectively) have had success. Now, I understand that a lot of developers have difficulty convincing the “powers-that-be” in their companies that open-source is a viable alternative to commercial software. A lot of companies are wary that if they build their products on open-source, if they need commercial support, it won’t be there.

However, what if, instead of hiring leaders of the .NET community to create official, Microsoft Brand(tm) alternatives to existing open-source software, Microsoft certified and funded open-source projects directly? For example, NHibernate and the Castle Project are two of the most well-respected open-source efforts in the .NET community. Their software provides fantastic value to a huge number of companies.

What if Microsoft awarded these projects a grant, so they can provide commercial support, and then told its customers that these are quality software products, and are safe to use in their infrastructure? Microsoft would save money, improve the legitimacy of .NET as a development platform, and give the developers that donated their time to the community a chance to make their hobby into their day job.

As long as the average .NET developer believes that what someone says is solid gold just because their paycheck says Microsoft on it, this will never happen.

About these ads

From → miscellaneous

  1. Well said. When you come across like this:


    it just tends to make me want to ignore the message completely.

    As for your points about open source software, I think a Microsoft grant for support is a great idea! I’m personally in a situation where I can’t even bring things like NHibernate and Monorail into any architecture discussions. They are immediately shot down as alternatives, because the guys up the ladder worry that support won’t be there down the road if we need it. Maybe a grant would be a valid way to combat that argument.

  2. Very good post, Nate.

    The idea of Microsoft coming up with some sort of a certification program for open source projects is an interesting one. And it doesn’t seem that far-fetched to me for some reason.

  3. I think it’s a great point you made about the double-standard going on. We want Microsoft to be open, inviting and casual yet we say their speakers have to be held to be all knowing about every topic they mention? Something is wrong with that picture. Microsoft employees are just regular geeks like the rest of us.

    Great post!

  4. Amen. I think that the sharp critiques of Rob’s work certainly shows that at least people are listening. Some of the people listening though would be better off to show us what they think is the right way to do things rather than ripping apart other people’s work. I write about a lot of things that I am not an expert in, and quite frankly, I don’t consider myself to be an expert in anything. But what I am not going to do is put a freaking disclaimer on everything I do and write saying that I am not an expert. If someone reads something I write, then I hope they think about it constructively and don’t take it as the final word. It is so easy to critique when you aren’t offering up anything public yourself (well, except for whining and moaning).

    Oh, and one more thing, I’ve heard people saying that it “takes guts” to put your work out there like Rob is doing. Well, it shouldn’t take guts, and it makes me sad that it has become this way for some people. I should be able to put my work out there, have it critiqued professionally, and not have to worry about being lambasted and flamed.

  5. I totally agree. How easy could it be to take one or two full time Microsoft employee and dedicate their work towards a particular open source project? (Think “Mono and Novell”) Instead of having a team working on unity – have two guys work on windsor. Saves money, plus this would show my boss that support for windsor will not cease to exist.

    About the “Software developers are smart people. Since when did we forget how to think for ourselves?”:
    I have to confess that I seriously am starting to think about switching from windsor to unity, not because I like it (quite the opposite!), or because I follow the herd – no, because there is way more to consider. For example: I have seen a weaker product win because of marketing one too many times to still think naively about those matters.

    (even wrote a blog post voicing my concerns a couple of weeks ago: )


  6. Human permalink

    I don’t know the details of this particular misunderstanding, but I’m sure any programmer using MS technology can attest to see some “bad practice” example code in the KB.
    I think the best thing Rob, or pretty much anyone, can do is to disclaim their experience level when opening a discussion on a topic. What teacher has never learned something new from their students anyway?

  7. @Human: My point is, though, that presenters shouldn’t have to say “here’s what I think, but I might be wrong.” Shouldn’t we as readers just assume that to be the case? If you don’t consider the possibility that the presenter is wrong, and you don’t put what they say through some level of critical review, you’re just following blindly — and that doesn’t help anyone.

  8. I agree 100%. Trashing people is really something I hate.

    I was reading Scott blog posts (and had great respect for him) until he didn’t cross the hate line and start trashing MS in every post

    Jeremy is another example of a person I really have high respect but who also started lately to be bitter

    Ayende’s trashing are already legendary

    I start to get impression that getting on the top of ALT NET community requires beside expertise trashing everything “mainstream”

    That is so unproductive :(


  9. Really good post.

    I am totally with you on the second part of your post about MSTest, ASP.NET MVC, and Unity but I think that it is kinda sad what you described in the first part.

    It is quite possible that there is a rule in place that you have to start with “My name is Rob Conery and I work for Microsoft”. I would have been worried if Rob would have added “…and I am a TDD Evangelist in the Developer Division”. Well he didn’t say that and made it pretty clear what his intention was. In fact I like the road he is going. It is much better than the “Simon says” approach where you should listen, swallow it and then go for it.

    There must be a reason why Microsoft brings in people from the outside to teach their own technologies to Microsoft employees. Of course you have to have the right attitude to get invited. Some comments I read sounded to me like those people are taking it personally that they are not part of this group of contractors and therefore Microsoft bashing is their call to action.

    Getting up in the morning, knowing that it will be another day you are going to learn something you never heard of put things in perspective and keeps you grounded. I like to believe that this is no different for all the developers at Microsoft.

  10. Nate,

    I see most of your points, but I think you (and many others) might be being a little naive about the Microsoft/Expert thing.

    The simple truth is, for the vast majority of .NET developers, when a person with [MS] after their name says something, it is the gospel and is THE way to do it. Great care MUST be taken by MS bloggers (even on their personal blogs — it sucks, I know, but I’ve seen this happen and have had arguments with people over stuff MS employees have said on their personal blogs) to elevate the level of knowledge and principles.

    I’m not singling out Rob Conery, he’s a good guy trying to do the right thing and he’s trying to help while learn like everyone else.

    Though the delivery was sour, Bellware’s point that it’s irresponsible for MS people to not take this stuff seriously is a valid one. We need to call it out (with more tact and diplomacy though, please!) and encourage them to do their screencasts, etc in such a way as to promote good practices and principles.

    I would REALLY like to see these types of screencasts (from Conery, Hanselman, Haack, etc) to use TDD. It’s irresponsible not to, IMHO. Here’s why I think that: I believe that if just those three guys, not to mention the rest of MS, started using TDD in their screencasts, TDD would spread rapidly and software development, on level, will be raised to a much higher level of quality and we’d all reap massive benefits from it professionally.

    Likewise, if they DON’T do that, it enforces previous poor practices pervasive in the .NET developer community and makes the job of someone like me more difficult when trying to promote good practices and principles.

    I have actually heard things like, “If TDD is so great, how come the Microsoft guys don’t use it [in their screencasts and such]“.

    So, while they may not be ‘experts’, as you pointed out, their influence is quite powerful and deserves some special consideration.

  11. @Chad: I understand what you’re saying, but the point remains: when I write something on my blog, it’s me writing it, not my employer. That is a very important distinction to make (from both a rational and legal perspective), because I say things that my employer might not agree with. Just because someone works for Microsoft should not preclude them from voicing their own personal opinion for fear it will be taken as Microsoft-branded strategy.

    It’d be another thing if we were talking about something written on one of Microsoft’s official sites, but we’re not. Rob (and other Microsoft employees) are fully entitled to their own independent ideas without requiring them to carry the Microsoft banner.

    My point is, it isn’t Rob’s responsibility to tell people to fact-check and critically analyze his work. It’s something we as competent developers need to do on our own.

  12. Sid permalink

    That guy is a real jerk. Enough said.

  13. Nice post Nate – and for what it’s worth I had a real fun time talking to Scott :). He’s quite a nice guy on a mission – we talked a lot about the delivery and I’ll keep that to myself; the short story is we’re meeting next week in Redmond and going over some things.

    @Chad – “we meet againnnnn” :). The interesting thing for me, WRT to your argument about the “MS Expert” thing is that it inherently doesn’t scale. When I wrote my post about beer… well shoot that doesn’t work cause unfortunately i know WAY too much about beer…

    Hmmm – might have to rethink this expert thing. “Yyyyyeesssss… the POOWWWWEEEERRRRR”… Smithers! Fetch me my Colostomy Bag!

  14. I’ve had pretty much the same experience as Chad, where tool experts (or MS employees) are also assumed to be complete domain experts. I worked at places where source control wasn’t important because VSS wasn’t that important. Or CI wasn’t important because Team Build didn’t have it (yet).

    I get that MS is a tool vendor. The .NET community hasn’t quite grown up to recognize this and looked to the overall software community for guidance in design, architecture, values, principles, practices, etc.

    Scott was merely calling out the fact most developers viewing an MS employee showing development is also a recommendation for how to develop.

  15. Nice post, really.
    I full agree with every point you discussed.

  16. Joe permalink

    The trumpet of Sales and Marketing drowned out everything a long time ago which is why you have people (including many who work there) believing that everyone who works at Microsoft is an absolute expert in their field.

    Couple that with the fact that there is very little guidance coming from anywhere else (and sorry, 50 or so bloggers isn’t making a big enough difference), I think that Bellware & co are right to demand that whatever guidance comes from Microsoft be absolutely accurate.

    ps Great post.

  17. Well, no. Microsoft hasn’t killed my puppy. Microsoft is limiting the extent of Microsoft customer community’s potential for not communicating and representing software practices accurately – especially when doing so as representatives from Microsoft.

    Since when did we forget how to think for ourselves? When Microsoft employees became complicit en-masse in an effort toward promulgating and leveraging Fear, Uncertainty, and Doubt in Microsoft customer community. It’s very long tail is still very much in play, influencing and sometimes directly controlling the extent to which customers use intelligence and discernment to make decisions.

    You’ve only recently left Microsoft. You’ve got a ways to go before you’ll be willing to accept the full extent of the reality of how Microsoft is willing to degrade customer success potential to serve its own sense of entitlement to continued lethargy and the predisposition toward hubris and negligence that is the after-effects of the FUD long tail on Microsoft’s own culture and attitudes.

  18. Nate, I’m late to this post, but I think you have said your peace eloquently. I suspect the outcome for this episode will be positive for the community even though I don’t like the way the issues were raised initially. Thanks for bringing a thoughtful proposal to the discussion.


  19. John McAlrooney permalink

    “When you open up with “My name is Rob Conery and I work for Microsoft”, you are declaring yourself to be an expert at whatever you are talking about.

    Are you kidding me? I really hope that this is an aberration and the majority of the .NET community doesn’t feel this way.”

    Has anyone checked out the Microsoft Homepage lately?

    “Hero’s happen here. Meet the experts.” – Seems Microsoft themselves feel they have the experts.

    At any rate, I’ve read Rob’s blog for quite some time and it’s pretty much public speaking 101 to:

    1.) Tell people who you are and
    2.) Establish credibility

    By saying, “Hi I’m Rob Conery, and I work for Microsoft”, he is attempting to do just that, just as he used to start the CSK screencasts, with “Hi I’m Rob Conery, and I’m the Chief Architect of the CSK.”

    Tell people who you are and establish credibility.

    Personally, I view Rob Conery as a blogger-for-hire for Microsoft. He’s kinda the Potsie of coding, so I’m willing to overlook a lot of what he says, but for people trying to learn TDD, he definitely didn’t position the screencast as a learning process, so they would be suceptible to receiving poor information. Frankly, I think Bellware did the Microsoft community a favor by calling him on it. These ‘softies can’t be allowed to run rough-shod over the community because they say “Hi I’m A. Dude and I work for Microsoft.”

  20. Chris Kolenko permalink

    haha, I was just reading a comment from Rob Conery’s blog about the TDD stuff, and it point to John McAlrooney comment.

    If I was doing a screen cast I would say ‘I’m Chris Kolenko I work for Interesting!’. Only because I’m proud to work here. Not to create crediblity.

    By John bagging out Rob, isn’t that in fact a way to stand out from the croud and get some attention. I’m waiting for John to put some sort of spin to create credibility for himself. Any publicity is good publicity.

    Back to the fact. If you have watched all of his screen casts. He has always said, he is giving this a go, and sharing his experiences with the community. Correct me if I’m wrong Rob.

    That goes for both TDD and the Alternate Repository pattern (Repository+).

    The only bad thing about what Rob is doing, is every muppet developer out there is going to get his hands on it and hack it into a customers websites. Borning another munch of bad programmers. Can Microsoft invent something to stop them? lol.. sorry past experiences coming out.

  21. >> Microsoft must have killed Scott Bellware’s puppy or something

    Naw. Just took away his MVP badge.

    Man oh man, I wish you had taken screenshots of the Scott Bellaware tweets before they got deleted. ;-)

Trackbacks & Pingbacks

  1. Vera

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: