Its an interesting dynamic to watch developers attempt to talk to each other. Very rarely during the course of heated discussions is there any concept of reason or being polite to each other.
Now, let me be the first to say that this dynamic is not anything new, nor is this a dynamic that I have not done. Its not a new concept and I suspect will go on to the end of time. I've inadvertently(and occassionaly in the long past done this on purpose) done this myself, so I'm quite familiar with the problem.
Historical
I think that there is an interesting historical perspective to this. I think that there is value in discussion and the posting and discussion of ideas. The dark ages of the Catholic Church punishing anyone that disagreed with its teachings may be over, but that doesn't stop individuals from doing this. When one can not get some one over to their side through reason, publically deriding someone else is perfectly acceptable. Scientific discussions have had this for a long time. Fred Hoyle, while being one of our great thinkers, had no problem with this. While he has a great mind, he had no problem using public humiliation as a tool to convince others. Hoyle is the person that coined the term the "Big Bang" Theory as a derargatory term used against George Lamaitra and others that did not agree with Hoyle's Steady State Theory of the Universe. BTW, did you know that while Hoyle disagreed with the "Big Bang Theory" he did come up with NucleoSynthesis. 1 out of 2 ain't bad.
ASP.NET
I've watched this occur in development circles, but significantly in the past two years. A couple of years ago, I watched as this tide called ALT.NET seemed to take off. It had some very interesting ideas. Some that I believed in some that I did not, but I wanted to listen to it. I started reading in the mailing list and listened to one complaint after another. Personal arguments occurred and it just sounded like noise. I loved the idea of making developers more productive, but the idea seemed to degrade into "My Way is Right and your Way is Wrong." I had lunch with David Laribee last fall. David was widely credited with starting ALT.NET. We were talking and as expected the discussion turned towards ALT.NET. He just shook his head and lamented how he felt that the process he started was co-opted by those that could scream the loudest. I feel for you Dave!
Around the time of ALT.NET starting, MS's ASP.NET team started making builds of ASP.NET MVC available. When one looks at the features of MVC logically, it has some very good features to it and some interesting ideas. The ASP.NET team has said that MVC isn't really meant for those already doing webforms development, that its meant for those not currently on the ASP.NET platform. Its meant to entice them over so that they can be doing similar development on .NET. Now, I'm all for options, but the problem is that arguments have occurred over MVC vs. Webforms and its devolved into the typical technology "Jane you ignorant ***" discussion. I've inadvertently let myself step into it. Its a slippery slope. Now, I believe that ASP.NET Webforms has some good features. So does ASP.NET MVC. This has not stopped the world from trying to pick a winner and belittle the other side. Here's a quote from an article two weeks old:
Let's be clear, ASP.NET MVC is an improvement over WebForms - and those developers refusing to leverage ASP.NET MVC (or something else) for new projects are simply lazy. by Karl Seguin
Now, I don't blame Karl for a mean and evil quote. I'm sure that he is not a bad, mean, or evil person. However, that was a smear across all devs not doing what he claims is right. It doesn't sit right with a lot of people.
ORM
Object Relational Mapping is a technology used to allow developers to integrate client side objects with a data store. There are pluses and minues to using or not using it. The only examples that MS shows for integrating with the Windows Azure Table Storage are using LINQ, which is roughly an ORM. One day, on Twitter, I vented my frustration on LINQ/EF/ORM. Now, Twitter doesn't allow people to fully explain what is going on. Its limited to 140 characters. Response ranged from supportive to I was an idiot for using LINQ/EF and not using NHibernate, this inspite of the fact that there was no NHibernate support for Azure Storage at that time.
What the users want?
Your users want X. My users want Y. X & Y may not match up 100% or at all. Users have and need something different, each one of them. I work primarily in the consulting world. In it, I've got a defined set of users. The public internet is different. You've all kinds of users. Heck, do they even speak the same language as you? Do you have a lot of code that works already? Customers have different needs. Some don't mind buying more hardware to solve a problem. Some do. It just depends. This is a mistake that I've made over the past. A couple of months ago, a discusison occurred at ASPInsiders about ORM. I tried to share the info about what my customers needed and thus my view on ORM. I was rebuffed for not being "with the times." I was pointing out that my customers need the fastest solution possible. The reason is that getting servers into their data center takes a long time and is not something that can be done lightly. For others, this isn't a problem.
What am I suggesting?
Coming from a still reforming pita, I suggest that we learn a little more respect for others. Don't just blurt out something based on an assumption about someone's intent. Don't assume that your answer is right and someone else's is wrong. Webforms and MVC both have a place. ORM and direct Sql/Sprocs have a place in a solution. Other technologies have pluses and minuses.
Personal Note: I've been working with ASP.NET 4 AJAX and am really impressed. I'm moving towards AJAX style UIs with data served up over web services and efficient libraries helping me work with the DOM. I'm thinking the best thing to do is to minimize the the amount of this code behind (webforms and mvc stuff). Does it work for everyone? Absolutely not! Heck, it may not even pan out to be a good idea. BTW, I've been reading through the Wrox book on jQuery and CSS by Richard York. Its very helpful and something I really like.
Suggestion
Here are a few suggestions:
- Don't get too hung up in the technology. Technologies come and go. They solve problems that we are already having. They typically don't solve forward looking problems.
- Realize that just because you don't agree with someone on a particular subject doesn't mean that they don't have good ideas. For example, I don't agree with some ideas that I have read online and have started talking about this more. Does it mean that these people are wrong all the time? Absolutely not. People think I hate some of these groups that I have written about earlier this year. Nothing could be further from the truth. I do not agree with these groups all the time. Since I have talked about my dislikes in the past, let's focus on the likes right now.
- ALT.NET. Who could disagree with the goal of improving development and learning new ideas? We should always be learning new things and open to new ways of doing something better.
- Performance. Performance is important, but only to the extent that the user notices. Don't sweat everything.
- Customer Focus. Joel Spolsky's attention to customer experienece is something that I wish I had. I fight for the customers, but his focus is legendary!
- Remember that there are other things that drive people. Some folks have lives outside of technology.
- The perfect technology does not exist. There are merely some that are better suited to specific uses than others.
What did you do the last time someone called you?