The problem with Microsoft's software platform
posted under category: General on December 19, 2008 by Nathan
I've got a fever, and the only prescription is a bunch of ranting run-on sentences...
See, here's the problem with Microsoft's software platform, especially relating to ASP.NET, but they keep doing things like this: they went from having no MVC, where web sites feel like desktop app programming, except with HTML, which really just makes no sense whatsoever and is a retarded paradigm to program for even though they pulled it off fairly well even from the first version, to finally having some basic MVC support; things that the rest of the programming universe have been doing and loving, where they finally addressed the issues where they just suck at, acknowledging that maybe all the programmers out there in the world are smart and are basically right and that the feeling of needing to make maintainable applications that aren't ridiculous to update and work with and acknowledging that letting the developers do the HTML, CSS and Javascript to do their web-based apps might be a good thing because after all, they probably work on a team with designers and deselopers and the like and the developers have to eventually be sick of the stupid paradigm of being forced to use ASP.NET's web controls and having those things write all their tables and login forms because the code those output just really sucks and they can't get in and fix it and make it look like the designers really wanted without sacrificing a lamb, by introducing ASP.NET MVC late last year, which would finally let Java programmers in, and maybe even ColdFusion and Ruby guys as well because they can all do MVC even though ASP.NET couldn't, and would also just make the platform much more approachable by traditional web developers who understand the request/response model and who like to get their markup right enough to validate and who are always annoyed by Microsoft's web stack getting in their way because there's only 3rd party support for making a normal web site instead of postback and having the whole page be a form, which again, makes no sense, ok, from that, straight into the ASP.NET MVC Design Gallery, where the traditional ASP.NET desktop software developers - and yes, I said they make desktop applications in ASP.NET because there's no other real excuse or explanation for what you're doing when you work with ASP.NET except that you're posting back and responding to events exactly like a desktop app in visual studio where you double-click on a button and write a codebehind action for the click event where it makes sense for desktop applications but falls utterly flat on the web unless you actually are doing something special with the button's onClick event like popping up a 'loading' image so the user doesn't hit the link again - now they can download and apply a pre-made design so that suddenly your MVC app is friendly, and you don't really have to do HTML and CSS because that's for web people, and programmers aren't web people, they're programmers and shouldn't have to learn html because it's somehow too difficult to understand for a programmer because after all, the programmers doing ASP.NET and dragging their little web controls onto the stage and shying away form the HTML probably actually are too slow to learn something as 'challenging' as the div and span tags, or at least Microsoft has somehow formed the permanent opinion that they are and they coddle their developers and pet them on the head and say "it's alright, you don't have to do HTML." If you commit your life to programming on the Microsoft platform, I would pretty much promise you that you will never have to learn HTML, Javascript or CSS, just C# or better yet, VB because then you can do vbscript too and program in classic ASP or make windows scripts and macros for Excel which is really all your business wants anyway. Imagine a programmer who never learns anything about what they're doing or what platform they're working on, then imagine armies of them crying and whining until Microsoft gives in and releases something that takes them from zero to hero, but you have to do it this one certain way and whenever you deviate off the path you're out of range, even for some clever googling because no one else has ever gone that path and that error number is so obscure that Microsoft would really rather that you never saw it so the MSDN page for it says something about how to get back on the right course because you tried to change the font tag to a span with a class and they didn't expect you to know what you were doing so you should leave it because, after all, IE v.16 still supports the font tag even though firefox had disbanded it 22 years after the standards committees threw the tag out and they figured no one would actually have software that generated a font tag because that would be ludicrous.
Dear Microsoft, make the developers on your platform grow some brains and learn a little about HTTP and a little about forms and links, where the Javascript goes and where CSS fits in, and how to write a multi-page form without postback (even though postback is a clever solution). See, it's too hard to know why we would implement a pattern (like postback or MVC) until we've suffered without it. There's no reason for an ASP.NET desktop programmer - yeah, i said it again - to switch to MVC (other than it's new and now has a design gallery) because MVC doesn't solve any of their problems, and MVC is better for making web applications that work together and have reusable parts and are well managed but it's not so good for just web pages, and who knows, I'm sure there will always be a market for those end-developers who really just want a web page with a login form and a table from the database and they want to call it an application even though the only cohesion it has with the rest of the pages is a link to another page and it has no reusability or management from the standpoint of the application as a whole and all the code is on the page or in a partial class which might as well be on the page except that now you have to have 2 files open in visual studio as if to prove the point that Microsoft is always trying to solve the wrong problem. Maybe if you allow ASP.NET to really be a part of the web instead of this alien spaceship that visits the web when it feels like it, then we'll drop some of the dead weight out of the programming chairs, as if the programming industry could downsize itself based on IQ, or better yet, it would let people learn some of what's really going on and how technology works and would excite them and make programming on your platform as fun and rewarding as we all know it can be like when you solve your first big problem and even though your manager wouldn't ever understand the programming difficulty you just overcame, you know you did it and you did it well, and it's 4:50 Friday afternoon so you can free your mind to have a relaxing the weekend and everything just feels right.
I like ASP.NET MVC. I really do, but I do not think it should be the first point of entry for a new developer getting into web development. I even somewhat like ASP.NET and web forms, although, I suppose in another way, I also despise them with the fire of a thousand suns, so it's maybe 50/50 what I'll feel depending on my caffeine intake for the day, but I don't think ASP.NET and web forms should be a new web developer's entry point into web development. It just isn't right. What is right? JSP is close, as it's still fairly modern and can be upgraded into an MVC pattern (many frameworks are available) as the developer matures, except for the complexity, specifically with getting your server up and running, and learning about beans and stuff, it's just overkill and that is a rant for a different day. PHP would work, except that when you look at the language you see C versus Perl with an out of control language library that could choke three camels. Ruby on Rails is a magical UFO that does MVC - too much code generation that hides what the world wide web does, not a good starter. Classic ASP, not really a language as much as a lightweight platform, and it's coupled usually with vbscript, I would say avoid it because, while not technically end-of-life, it hasn't seen any activity since ASP.NET came out in 2002 and is no longer considered modern. That leaves us with ColdFusion, which is perfect with its syntax that's similar to HTML and javascript without performing any type of web magic that can't be deduced by just looking at it, easy debugging, easy database connections, the ability to move into object oriented concepts and some well supported frameworks that give you as much MVC as you can wish for. As much as ColdFusion is touted for its ease of programming, it also doesn't hide the real web from you - it just makes it easy to get to.