For me, the sign of a good web developer (or web application developer) is someone who can right-click a web page to view the source and tell you why he did things the way he did. “I used this div to position this element over here, and used the unordered list for a sub-menu, . . . “
A bad web developer is someone who says “It looks fine in my browser” and “Well, I’m not a designer . . . “
One of the biggest crimes of ASP.net Web Forms was to strip HTML skills from new web developers. They view the source of their code (in the browser—not Visual Studio) as gobbledy-gook. And ASP.net ensures that it is. It’s full of ViewState and control names like ctl_100_className_ctrlName which the developer didn’t put there. It tried to remove the whole stateless-http challenges and make web development accessible to desktop developers.
I’m so very pleased every time I see a new site created with the Microsoft MVC Framework. MVC is making up for the ASP.Net webform crimes. Just like Ruby on Rails or PHP (or classic ASP), it allows the developer to think about what gets sent from the web server to the browser. When I do a site in MVC framework, I can view the source and recognize my own handy-work. I can make full use of CSS3 and jQuery. I know that everything in my user’s browser is something I put there intentionally.
CSS, Javascript, and HTML (along with images, flash movies, Silverlight, or other plugins) are the ingredients of any web application. Server languages like ASP, PHP, and Ruby are only tools to deliver these ingredients to the browser in unique and creative ways. A good web application developer (like a good chef) can look at his source and tell you exactly what everything does. ASP.Net webforms are like ready-meals. Everything is done for you, but you don’t really know everything that’s in it.
Now, don’t get me wrong, I’ve known some fantastic ASP.Net devs who build apps free of ViewState and server controls. But I’ve worked with too many who could drag a control onto a web canvas, set a few properties, and call themselves web developers.
I recently worked on a DotNetNuke project where we customised a third-party component. The page was not rendering as it should. ViewSource gave me a bunch of ViewState and nested tables. I knew of a 100 ways to get css to make the site look the way I wanted, but this wasn’t my source. It wasn’t even the developer’s source—it was the clientIds of the server control. Since I was struggling, a web guy (proper Mac-using, firebug-toting, standards-compliant, web guy) asked to see the source so he could suggest something. When he saw the source, he was mortified. I was embarrassed –“It’s not mine! I didn’t write it.” In the end, I hacked it with jQuery. I didn’t have the sourcecode to modify it properly.
The legacy of Web Forms lives on. Sharepoint 2010 is full of it. Young Microsoft developers (in the last 5 years or so) know nothing but how to use WebForms. (An ASP.net dev told me a few years ago “But I don’t know html.”). But, hopefully, one day we will get around this idea of creating tools that “do everything for you” for developers who should know to do it themselves. Just like I wouldn’t create ready meals for people who call themselves chefs.