ALT.NET “Mean” – How do we fix it?

I’m watching the video that Scott Hanselman graciously recorded of the “ALT.NET: Why so mean?” session at ALT.NET Seattle.

I’m rolling my eyes a lot at the discussion because it seems to miss a lot of the basic points and the severity of the minor crisis our industry has been facing for some time (lack of significant engineering discipline, serious academic pursuits, and scientific analysis of success and failure, etc).

If we are mean, or I am mean (which no one has accused me/us of, but I’ll put it on myself), then I ask: What else should we be doing?

The Analogy

Consider this analogy which may best explain how I feel about the situation:

You come home from work some evening and sit down with your daughter who’s writing a story on paper. To your abject horror, all her letters are upside down!  Her handwriting is decent, but the letters are all inverted.  You decide to pull her out of school and send her to a private school.

Upon interviewing the teachers at the new school, you realize they, too, teach inverted writing. You find out that it’s a new wave of teaching that has caught the education community by storm and most every school is teaching it.  The teachers are delighted by this and believe that it’s what the children and parents really want. They’re proud of themselves for having solved so many problems for parents and children. They honestly believe they’re doing the right thing for the kids.

Obviously your first priority is to fix the damage done to your daughter and teach her correctly or send her to a school that does not adhere to this new, objectively wrong philosophy.  But what about all the other students now coming up through the school systems being damaged by this harmful teaching? 

Sure, all these kids will be able to read and write to each other, but they will be completely functionless in the real world for at least a generation or two.  What a travesty! What a crime against an entire generation of children! 

The Breakdown

Ok, that’s overly dramatic, I realize and the analogy is a little overboard, but hopefully you get the basic point of everything.  Sure you could start trying to rally parents and start teaching children both methods of reading/writing, but you still have your full time job in order to feed your children.  How, then, could you ever compete an army of full-time teachers teaching the other method?

Remember, this is an analogy, so we shouldn’t argue the analogy.  Yes, there are problems with it, yes it’s overly dramatic, yes it’s only illustrative not completely accurate, etc.  I’m not trying to demonize Microsoft, and not everything they’re doing is setting things back, but some things are. Microsoft is not perfect and some of the things they do do not help and, in fact, set things back. Can we at least agree on that?

And what then are people who see the “wrong” things supposed to do with the people who are being ill-affected by the “wrong” things?  Let them flounder and suffer?  Try to educate them all?  Try to stop Microsoft from doing wrong things?


The Result: What to do?

What if Microsoft is doing more wrong things than we can possibly ever hope to keep up with (—NOTE: They’re also doing a lot of RIGHT and GREAT things… don’t get me wrong)?   We have full time jobs. Should we quit our jobs to fight against incorrectness?

What if we do try to stop Microsoft from doing these wrong things and, instead, offer feedback and try to correct them before the damage is done?  Sounds good. Now, what if some of the folks that are doing wrong things within Microsoft won’t listen, or dismiss the advice and proceed to damage the community?

If we raise awareness of the problem, we’re “mean”.  What then?

Worse yet, what if there are others in the community who have some profit-interest (book deals, speaking engagements, lucrative contracts) in seeing the “wrong” technology being released so they can help customers who are unable to use the technology effectively (… because it’s “wrong”!)?   What if these people who have conflicts of interest malign us and call us “mean” and tell us to stop being “a**holes” and, basically, to shut up?

The Crux

Should we just sit down, be quite, and allow such horrific waste and loss of productivity persist in our profession?

If not, how should we combat this problem (keeping in mind we have full time jobs as well and have limited personal time to dedicate to this)?

About Chad Myers

Chad Myers is the Director of Development for Dovetail Software, in Austin, TX, where he leads a premiere software team building complex enterprise software products. Chad is a .NET software developer specializing in enterprise software designs and architectures. He has over 12 years of software development experience and a proven track record of Agile, test-driven project leadership using both Microsoft and open source tools. He is a community leader who speaks at the Austin .NET User's Group, the ADNUG Code Camp, and participates in various development communities and open source projects.
This entry was posted in ALT.NET, Mean. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • I think the right question is not “How can we combat this problem.” That is exactly why Scott called the session.

    The question can be, “How can we lead better as stweards of the craft?”

    It is all in how we discuss it.

  • Tom

    We CAN fix it by education. I’m currently advocating the use of mocking and DI heavily in our organisation and people are picking up.

    But it won’t come easy though. The learning curve is still pretty steep once beyond the basics of SOLID, DI, TDD and Rhino etc etc.
    There’s not a document such as foundations of programiming on mocking? I’d love to see something like Foundations of Mocking.

    Why not explain thorougly how mocks and stubs work, how to apply them using TDD, how to use the AutoMocker, why always using mocks are bad and create a dependency etc etc

    This reasoning could be applied to several more topics. As an apprentice I’d love to work together to get more documentation and share my / our needs.

  • Ian Chamberlain

    Remember what you are saying is going against what most developers have been taught is the “right” way to build software. What’s needed is leadership, not superiority. Don’t personalise. Don’t denigrate. Don’t force. Give positive criticism not negative. Collaborate don’t instruct. Help don’t mock. Be sympathetic. Be patient.
    Everyone is entitled to their opinion. Just because they disagree doesn’t make them wrong or idiots. They may be right for their context.
    Remember these issues have been going on for decades and they’re not going to be solved any time soon. Eventually our industry will reach a level of maturity. I don’t think it will be any time soon but anything we can do to move towards that day is worthwhile doing.

  • @Tom: I agree, no one says the newbies are idiots and we care deeply about that. This is why we spend many countless hours of our own personal time trying to improve the state of affairs.

    I’m more concerned about those who are NOT trying to help either out of ignorance (they’re smart, just not aware) or profit (they have some profit to make, whether they know they’re whoring or not)

    As far as documents, blog posts and such: Those take a lot of time and we have personal lives we have to manage as well. We’re pushing back against people who are paid full time to do what they’re doing.

  • Steve Sheldon

    How about explaining some of the things you’ve done in FubuMVC?

    I’ve read the code, and while I found some of it useful, other patterns I don’t see the value.

  • DoniG

    I think the problem of coming across as “mean” is that a lot of really talented programmers also have “The Engineer’s Disease”:

    A slightly modified quote:

    “They often lack empathy, blurting out truthful but unvarnished statements. And they typically fixate on very specific interests-anything from SOLID to NHibernate to TDD.”

  • Stop listening to guys like Belware who simply fan the flames. I realize this is a critical critique of a person who is overly critical and we are talking about how to stop being overly critical — (run-on sentence break for breathing). But be mindful of associations.

    For the most part, I think many in the Alt.Net community are doing great work (Alt.Net is implied here).

    Also, there is a corollary: how do we teach people to not find offense at every criticism? Clint Eastwood just spoke on that, so you know it is a wider problem than just with programmer types.

  • Nick

    Rubbish analogy, imo.

  • @DoniG: Being associated with Einstein, Newton, Gates, etc is a bad thing? :)

    @Nick: Thanks for not adding anything to the discussion.

  • If the analogy doesn’t work, you shouldn’t use it. Period. You used an analogy that worked for what you were trying to say, and then told us to ignore it. You can’t have it both ways. is not “the” right way, it is “a” right way. That’s the difference. A more apt analogy might be regular writing vs. cursive writing. They are two different ways to accomplish the same thing: write something down. Some would argue that cursive is more elegant; others would say it’s more complicated. Niether is wrong; it’s a preference. That’s what as a movement doesn’t get. You can have the debate, but don’t assume you’re right and everyone else is wrong. The RUP people thought they were right during the height of their movement, too.

    Personally, I take some methods that has in its toolbox for my needs, and I leave others behind. But the tools in the toolbox don’t belong to any more than a carpenter invented the hammer he uses. You don’t have exclusive rights, and can’t complain and argue when someone doesn’t want the whole package, or even any of it. Let them do their job, and you do yours. If Microsoft has multiple ways of doing things, who are you to say what is right and wrong?

    As for your comment about those who have book deals, etc., that incent them to use the wrong way, are you serious? Do you think that no members have ever had self interest at heart? Do they never write books, or speak, or, dare I say it, code? It takes some real experts to bring to an organization. That sure could be lucrative for the most outspoken members. And no, I’m not accusing anyone; I don’t know anyone with nefarious motives. I’m just making the point that the argument goes both ways.

    Anyway, that’s my 2 cents worth.


  • KaraT

    It’s a decent analogy but i believe some people get overzealous in the discussions and tend to make comments that drive people to believe that is a “microsoft haters group”. I think Scott Hanselman was probably pointing to that fact.
    I agree that many (not all) people at Microsoft disregard advice from community but they are probably following orders or know something that we, the community, don’t. Sometimes they may just ignore us because they are probably too arrogant. But i still maintain that you could argue and debate without getting mean.

    Now to explain my point using the same analogy, you could either call the teachers morons and the school a bunch of money hungry business driven chimps and even drop some F-bombs but i dont think thats going to solve the problem.

    What i took from that discussion was why do intelligent people have to be mean to explain their point of view. Now if people with conflicts of interest are promoting the wrong piece of technology the community itself is pretty smart to see through it. We have developed alternate solutions to MS technology which are better. We blog about these solutions, mentor people, and involve people like ScottH from MS who DO listen to suggestions and provide feedback, positive feedback.

  • Steve Sheldon

    @DoniG: You are right. Asperger’s is pretty common within the developer community.

    The key with Asperger’s is that instead of ranting “Why doesn’t everyone else understand me”, one has to really focus and ask “How can I improve the way I communicate to help others understand me”, as well as work on how to listen to others. For persons with Asperger’s these social concerns don’t come naturally, they require focused attention.

  • I don’t mind the analogy, although I think it fixates on the wrong problem.

    I’ve got friends who are services engineers, you know the guys who design air conditioning systems, building sewerage systems, fire sprinkler systems and (in one case) hospital systems (Oxygen, Nitrous Oxide, etc).

    In their industry there are some life and death issues and there are some aesthetic/making maintenance easier/environmental issues.

    The life and death stuff is easy, you don’t get a design out the door without it passing muster in that sense, but the environmental stuff … that’s harder. The bottom line for them is that it depends on the client wanting to pay big bucks to get it done right.

    My feeling is that those environmental issues are closer to the core problem most developers face. Sure they are a good idea, sure they may save your client money, but if they’re not willing to shell out big bucks, then you might just satisfice with a pre-built “clean energy” aircon system rather than actually designing their building from day one to be cooler and cheaper to run.

    Most developers I know would be willing to get better, but are driven by their employer’s concerns to cut corners where they can. Personally I think we would get better progress by encouraging devs to embrace quality through craftsmanship than through educating – although I think that’s a key party of the answer.

  • @KaraT: Where are people being mean? I’m not picking on you

    Anyone: Show me some examples and explain how it could’ve been handled better. Also, I’m betting that if you knew the context behind those examples, you’d be surprised the person wasn’t MORE upset or using MORE profanity (half-joking)

    @Steve: Isn’t ALT.NET communicating effectively? Large, popular conferences several times a year, amazing contributions to open source, free workshops regularly throughout the year, great blog post and post series, interaction at non-ALT.NET events.

    Honestly, I think this whole “mean” thing is BS and the few times there were flare-ups were because of some ridiculously outrageous thing someone at Microsoft did that MUST be checked and questioned.

    I noticed that the primary people saying things were mean were… Microsoft employees.

  • I don’t see “mean”, I see intensity. Sure, there have been some heated discussions, but all industries have heated discussions and such discussions usually help push things forward.

    Overall, I think that some people take that intensity the wrong way – like they’re taking it personally.

  • I really liked the comments by Udi this past weekend. He talked a _lot_ about not thinking in the Solution Domain and getting back to the Problem Domain. He was continually frustrated by people misrepresenting his position, saying that he thought forms over data and transaction scripts were bad. They’re not, they’re valid in certain business contexts.

    So is bad, one-off code.

    The reason why Fowler did not recommend one pattern over others in PoEAA, it’s because each are valid in a specific business context. We should be teaching prescriptive guidance based on the business contexts, and get out of the business of “always” and “never”.

  • @Angus: I see your point, but I think that all of that depends on a basic level of quality. To use your environmental example, what if the environmental engineering tasks didn’t even work in the first place, or routinely failed? I think these arguments only get interesting when you have a basic, minimal level of acceptable quality involved.

    In the software profession, we do NOT have this basic level of acceptable quality in the first place. Employers want to cut corners, but they expect that we’re doing our job well — and we’re not.

    @john: Minimal quality and sustainable, change-tolerant design are not a matter of preference. These things are expected of us and we routinely fail to deliver. We, as a profession, are generally laughed at and not taken very seriously by most business managers. They work around us because we’re so incompetent. Put it this way, if software developers built bridges, dozens of people would die every day due to bridge failures. Some of this stuff is foundational/fundamental to our profession and should not be compromised. The art needs to progress and there are people holding us back (whether out of ignorance/unawareness, uncaring, lack of motivation, conflict of interest, etc). We need to change that and motivate (positively) people to help raise the bar of professionalism and respect in our profession.

    @jbogard: I agree. The problem is in the contexts where high quality, maintainability, and change-sustainability are necessary, we’re largely failing as a profession.

  • If we built bridges that failed, the public outcry would be huge, and we’d see a push for regulation. Look at the airline industry and see how they progressed. We _dont_ build software that kills people, just costs people a lot of money.

    One other thing to note is that other engineering professions took decades and decades to raise their own quality bar. I think the conversation might need to go back to creating professional societies (like IEEE for instance).

    Every time I hear the “we have failed as a profession”, I want to hear about numbers. How have we failed? What is the definition of failure? What is the definition of success? How do we measure these? What are the trends of success in our industry? What is acceptable success?

    The problem with some of the current studies is they treat success as on time/under budget/matching original spec. Which is bullocks.

  • Steve Sheldon

    @Chad: I do think ALT.NET is communicating fairly well.

    You know, I actually think it’s had a good impact. I think the feedback has been good.

    I do see a few people lashing out, though, and I think that’s where the mean comes from. What I believe is going on is a lack of patience on the part of the persons lashing out. That they don’t feel people are listening to them, or maybe their point of view isn’t fully being articulated.

    Overall, I think this has been a good thing for the development community, but people have to understand that while there are maybe 1,000 people who now understand… there are a million who have yet to hear about any of this.

    One thing to be careful with. In the past, my impression has been that most of the MVPs have been trainers. Which makes sense as they are going to be writing the books, articles, giving talks and so on. In part I think this is why MS has not gotten good feedback because of the limited practical experience. So there has been a tendency amongst some of the Alt.Net folks to lash out at some of the MVPs. But the thing is, it’s those trainers who you’re going to want on board advocating for you.

    Keep this in perspective. I’m reading these blogs, and following some conversations about this. But I don’t think any of the people I work with are. And I suspect I’m pretty typical. I doubt there are many .NET developers who are reading this stuff.

  • alwin

    Please watch out with comparing a relative lack of empathy and social skills with Asperger syndrome.

    And I think the analogy is the wrong way around.
    I think more of it as this:
    (replace English with your native language)

    You come home from work some evening and sit down with your daughter who’s writing a story on paper. To your abject horror, all her words are written in English! Her handwriting is decent, but you want her to get fluent in Chinese because you believe that is the language of the future. You decide to pull her out of school and send her to a private school.

    Upon interviewing the teachers at the new school, you realize they all still write in English. You find out that it’s an old wave of teaching that you don’t believe will work for the future anymore. You know for sure that because of their booming economy, large population etc, Chinese people will take over the world. You explain to the teachers that knowing the Chinese language has helped you a lot already in your life. The teachers do not listen to you and believe that it’s English what the children and parents really want. After all, it has worked for generation after generation. They’re proud of themselves for using a language that is working good enough for parents and children. They honestly believe they’re doing the right thing for the kids.

    So, how are you going to convince people that speaking Chinese is the best thing since sliced bread?

    Should we just sit down, be quite, and allow such horrific waste and loss of productivity persist in our profession?
    If not, how should we combat this problem (keeping in mind we have full time jobs as well and have limited personal time to dedicate to this)?

    BTW, I’m a big fan of the things I understand. And I thank you all for helping us with understanding better ways to write software. But you can’t force everyone to agree with you, no matter how much effort you put into it. Just be grateful for every person you have reached and were able to help. If you get bitter because some people “just don’t get it”, stop trying and go help your daughter with her homework.

  • I hear a lot about how Alt.Net needs to ‘reach out’ and find ways to communicate with the mainstream. My personal opinion is that communicates well and is perfectly accessible. Anyone in the mainstream community who would like to investigate has mearly to look. The barrier is apathy, not communication.

  • @Liam:

    Good point! I’m afraid it’s not *all* apathy though (but I have no numbers to justify my fear, so take it for what it is).

    I’m afraid that there are people who are just not plugged in or don’t have the time to plug in or something. How can we make it easier for them to start hearing these things?

  • About a year ago I was hiring for a developer role. The majority of interviewees had never read a development related book other than the ‘teach yourself in 24 hours’ variety, nor were they aware of any online resources other than the occassional mention of codebetter.

    We are not failing these people – they are failing themselves.

  • @Liam: Gosh, I’m loath to agree with you because it’s such a cynical and pessimistic outlook, but I’m afraid you’re mostly right.

    Before my “awakening”, I just accepted that all software was crap and there wasn’t much we could do about it. Eventually I started trying to find better ways and stumbled into various blogs (primarily CodeBetter).

    How do we get people to make that first little step to peek out into the wide, wide world?

  • @Chad: I don’t know how to get people to wake up because for me it just happened purely by accident. I “discovered” the SOLID Principles around 1998-1999. It immediately turned my development ideas upside down and started me on the path I am on now.

    Funny, but what hit me hard is when MS essentially abandoned COM for .NET. I had spent so much time learning COM. What a waste of effort! I realized that principles, not technology is what matters. Maybe this new generation needs to get their asses burned on SharePoint or Entity Framework to come to the same conclusions I did.

  • @chad you are right. I probably came across more cynical than I really am. At the time I was down about it because I thought, “is this the best that is out there?” In hindsight I think that the role was just not attracting good talent.

    My point was, some people are motivated to continuously improve, some people are not, and we can only reach the former group.

  • I wholeheartedly agree with the sentiment expressed above by john west: “ is not “the” right way, it is “a” right way.” Indeed, it is an alternative way, and one that does not go by the name “Right.NET” or “Correct.NET”. This must be embraced by the evangelists in the community. Such respect leads to complete arguments and respect from others, and generally to a scholarly/open environment.

    In 2004, I ironically came across the pragmatic principles (that would come to underlie the “ALT.NET way”) through Microsoft. As a member of the Microsoft flock be default, I came across PNP’s Web Service Software Factory while researching a work project. Its emphasis on patterns and best practices was a stark contrast to the emphasis and reliance on VS tooling capabilities in the VS documentation. This triggered an epiphany: good software is a function of expert design knowledge, which is distinct from specific dev tools. And so I began looking beyond Microsoft for ideas about software development.

    In those days, the “movement” of applying pragmatic principles and practices specifically to Microsoft development did not exist. To understand the principles you read the Agile Manifesto, XP, GoF, the bliki, C2, O’Reilly articles, and MS PNP documents for comparison. An organized focused antagonism toward Microsoft was absent from the ideas. Nor were the ideas presented in a friendly/apologetic/nice tone, or spread through massive outreach efforts. The ideas stood merely on their strength of their arguments.

    There is no doubt that Microsoft dev tools directly support and deeply connect to the “Microsoft way” of development. Publically browbeating Microsoft as a way to bolster the prominence of an alternative way only leads to disenfranchisment by others. To gain the widest, and healthiest (i.e. least sheep-like following, which would lead to the same detrimental groupthink as in the Microsoft community), voices in the ALT.NET community must merely acknowledge and accept Microsoft’s way as valid, while forcefully and respectfully pointing out its flaws. Niceness, outreach, and antagnozation are irrelevant to people achieving their personal goals.

    (If ALT.NET ever forms a more cohesive organizational entity, then it can hope to change things more fundamentally. At that point, they can coherently and directly engage Microsoft with the goal of supplementing/replacing the tool support/connections to the Microsoft way with those of alternative ways. This direct discourse with Microsoft would be the more pragmatic outlet for the same sentiments that today drive the indirect, “mean” public attacks.)

  • Peter

    Chad, I think one of the biggest barriers to learning Alt.NET principles is that no one wants to admit they can’t keep up, I mean, really keep up.

    I think it was a recent Billy Hollis interview (Deep Fried Bytes?) where he mentioned 9 out of 10 developers he interviewed didn’t know about generics, which were introduced in 2005. He made the point that generics take about an hour to learn, and are immediately useful, and that 9 out of 10 developers didn’t know how to use them. This is an appalling (if anecdotal) statistic.

    Anyway. Just take the anecdote about generics, and apply it to .NET 3.0, .NET 3.5. Add onto this the mild Microsoft spin, where (e.g.) Workflow 3.0 is portrayed as the new place to put business logic in your apps. Just little spins, like how they tell you Silverlight apps can be indexed by Google. Little things, that upon cursory inspection, are true.

    Then when it comes time, you can’t deliver. And Oslo is announced at PDC, and there’s a really slick demo, and you’re amazed. Workflow’s old hat! I (secretly) never understood it anyway! I’m going to latch onto Oslo, because it’s got to be better!

    Then someone comes along and tells you that you’re building your apps in an unmaintainable and untestable way. You can’t even get your data validation to work inside an UpdatePanel, which is your real problem today, and these guys are telling you to rewrite the codebehind? Which is the LEAST of your worries? And to make their ‘better way’ truly work, they introduce an extensive toolset, all unfamiliar to you? No way! I spent all of yesterday figuring out how to retrieve the ID of my TextBox control via JavaScript! I can’t wait until Silverlight comes along and gets rid of this crappy web experience, and solves all my problems!

    So anyway, that’s the scenario. I’m just saying, if people really open up, they’ll admit that they’ve fallen way behind, behind even their “core competency,” whether that’s web development or windows development or (worst case) “.NET developer do-everything generalist.” And I do blame Microsoft for releasing more frameworks than anyone can keep up with, and releasing them in such a way that the burden of producing training/learning content is placed on the community, not on Microsoft itself.

    In my ideal world, Microsoft releases no new APIs for the next year (or two), and instead focuses on improving, documenting, and exploring what they already have. Throw away Silverlight, throw away WPF even, throw away Workflow, definitely throw away Azure, throw away Oslo, keep WCF but spend the next year introducing some quickstart APIs around WCF. I don’t want them to throw away MVC but that’s only because MVC is easier to learn than traditional ASP.NET WebForms.

    The C# team says they count the cost of each new feature they introduce to the language, which is great. Unfortunately I don’t think anyone else has this mindset.

    So, let’s get somewhere useful with this long rambling comment. I think if we promoted a boycott of learning new MS technologies, especially the ones which are half-baked and not particularly easy to learn, we could free up a lot of MS developer learning capacity. I’m dead serious about this. Most everyone is informally boycotting most the new MS frameworks anyway, let’s just make it formal.

    And yes, I see the irony of mentioning a MS boycott in a post about “why so mean?” It’s not a boycott, it’s a LEARNING boycott.

    We can call it something constructive, like “Just Can’t Make The Time For It List 2009.” The point is that, by declaring it publicly, it frees up others to do the same–”hey, he’s right, I can’t possibly learn all that crap this year.” Then we can get closer to PUBLICLY acknowledging how far behind everyone is.

  • @Peter: Too funny! Have to admit I suffer from a generally dazed attitude these days towards MS technologies. MVC and LINQ being the rare exceptions, I tend to ignore most of the MS buzz. Just too much to keep up with and still have a life.
    @Chad I agree that is in general is a better way, but hidden (or not so hidden) in your analogy is a basic “we are right, they are wrong, can’t they see it!” statement. That’s the basic issue. People can detect the sentiment no matter how sugar-coated. In fact it’s downright demoralizing to find out this stuff you’ve been learning for years is basically lame, even if it’s true.

  • Kristin Mullins

    You build a better product. AKA Teach our kids how to do it the “right” way. Market the better product to your target group, flood it into the mainstream, and make sure that the product is verified and it works!!! Don’t sell a sham, to the already shammed user.