Developing at the Speed of Microsoft


As .net developers do you ever feel like Microsoft is hindering your development by the development tools they impose on us. I have been thinking about this lately and decide to discuss it, or this might actually be a rant, forgive the rant. I aim to take a brief look at web development the Microsoft way, how it has evolved, and the hindrances imposed on the community.

The Microsoft Web Development World

Now I have never developed Microsoft web applications pre-webforms, i.e. pre-Asp.net, so I am not going to comment on that. What I am going to focus on is Microsoft’s asp.net development frameworks. As a side note, I have not done much development on the windows side of things, but it seems that it has been stagnating. I would love to see Microsoft write some bindings for GTK+ and/or Qt, and support those cross platform toolkits. Pie in the sky dreams, I know.

ASP.NET – Web Forms

Somehow in their brilliance, big brother decided that abstracting HTML and Javascript into a infinitely more complex framework would be a good idea. This is ludicrous, don’t introduce unnecessary bloat into a framework. The page life cycle is ridiculous, all the built in webform controls use some retarded infinite inheritance scheme. Also what’s Microsoft’s infatuation with span tags, they wrapped all their webform controls in them.

Lol, I know this is common knowledge and has been discussed at length before but I still have to deal with it on a daily basis and it feels like I’m trying to cut off my leg with a steak knife. My interest lies in finding the true reasoning behind this. I have to working theories. One is that Microsoft is so loving and kind towards their developers that they wanted to coddle them, and that coddling most likely stemmed from their lack of respect for us and our intelligence. The other theory is that Microsoft convoluted the framework without realizing it due to their arrogance, believing they own the world and the way they are doing things must be right.

ASP.NET AJAX

Next the web 2.0 boom arrived and everyone was clamoring for more interactive web UIs. The .net developers yelled loud enough and long enough that they wanted to have the same thing that they were witnessing in other web frameworks. The keyword here is ajax. So what does Microsoft do, they don’t take this moment and think about totally redesigning their asp.net framework, they say lets create some more complex web controls and use them in conjunction with an uber-complex ajax framework.

Awesome, we now how fresh steamy poo piled on top of old rotting, festering poo. Thanks big brother. Instead of realizing their mistakes they made with web forms they exacerbate the problem. Now we get a seemingly dumbed down ajax scheme, oh just wrap everything in an update panel and Microsoft will do the rest. Besides the fact that this removes all control you have over the interactions between the server and client, you also can not use any other javascript inside of these panels. So once again it boils down to arrogance, contempt, and a lack of foresight.

ASP.NET MVC

Now, Microsoft sees a significant proportion of developers moving to ruby utilizing the ruby on rails framework. Also the community is yelling and screaming again, must be appeasement time. Did Microsoft actually take an introspective look and realize how ass backwards webforms is? Doubtful, they just figured out that they better do something to try and hold onto market share and give the community some fools gold. So they copy ruby on rails, ooooh, way to go big brother, you’re so innovative!

It is way too late in the game, asp.net mvc is something Microsoft should have done long ago. Back when they were formulating asp.net webforms. There is no excuse for Microsoft not to have created a framework like this when they introduced the asp.net ajax stuff. It’s ridiculous, and still they are losing market share, I wonder why.

They ignore their base long enough and they won’t have a base. What are we supposed to drink the kool-aid and be satisfied, the MVC pattern is how old? Oh, wow they are supporting a way to unit test the UI interactions, wow how progressive you are Microsoft. Where is the support for plugins, where is the support for RESTful web services? The point is there is nothing to be impressed about, it’s ridiculous that people are excited, this should have happened long ago.

Conclusion

Now don’t get your panties in a wad I’m not all cynical, I like c# as a language, even thought it is a static language and I like the CLR. Hopefully MVC is a sign that Microsoft is going to be moving at a less stagnant pace. I don’t think they will be.

Things like Mono, NHibernate, the alt.net community supplement the failings of the giant, but we should be fed up. Microsoft doesn’t listen, because of their corporate culture, which i doubt will change. Adding things to the web framework that should have been there long ago is nothing to celebrate, there i said it, “Big whoop, want to fight about it”.

On a larger scale, why is Microsoft not listening to the community more, why are they not seeking to improve the community along the lines of the ruby community? Where is Microsoft’s version of package management like ruby gems? Where’s their continuous integration/build tool? Where’s their testing framework? Where’s there promotion of best software practices, i.e. SOLID, TDD, BDD, Agile methodologies, Lean methodologies? The answer is no where, all of that exists inside the community without Microsoft’s support.

The community is bettering ourselves in spite of Microsoft’s stagnation. Now think what could be accomplished if they actually fully embraced the community and threw their money and clout behind what the community stands for, it would be great. I am very doubtful that will happen, though, I think it will take mass exodus from .net development for Microsoft to ever get the message. If nothing happens the .net community will continue to stagger along at the pace of Microsoft, it will not reach its potential, and the community will wither and die.

There is an entire software industry that needs to mature, the .net community is but a sub-section of it.  It would be great if we could lead the industry in best practices and passion for our craft.

Making c# lambda expressions more readable