Home MVC Storefront

Have We ASP.NET Geeks Lost Something?

When I was in Redmond a few weeks ago I begged ScottGu for a copy of the MVC bits so I could "muse" over how SubSonic would fit in. Scott's a big supporter of what we've been doing with SubSonic, and he gave me his "demo proto bits", which, as Hanselman put it, are but shades of the real thing. Scott was good enough to share with me (I'm under NDA as an MVP so please don't ask - I simply can't share) and yesterday/last night I geeked out a bit.


I'll have more on SubSonic/MVC things in a future post, but I did want to share with you a disturbing experience I had yesterday when I was working up a goofy little demo site: I realized I forgot a lot of HTML and javascript.

I can't tell you how demoralizing this was.

MVC and Server Controls
You can still use server controls with MVC, but you don't have the "WebFormy Postback" sugar that you do with WebForms. To be sure, this is a great way of doing things, but it abstracts away the whole programming thing in general. In other words - there's very little HTML or javascript needed since they do it all for you.

So as I'm working up my demo page, I come across a problem that hits me sideways and really made me feel dumb. Not one to pass up an opportunity to let my readers share in my ignorance - here it is for you. My moment of pain..

The Problem
OK so it wasn't that dramatic. I just had to relearn some HTML and javascript that I forgot. Oh sure, I know how to do tables and divs and all the layout stuff - that's not what I'm talking about. I'm talking about hand-coding radio button lists, checkbox lists, and dropdowns (what we used to call select boxes) that do auto-postback.

Specifically my problem was setting an auto-postback that would refresh a radio button list based on the selected value. Yes, this is embarrassing to be sure! I can't even believe I'm blogging this. I'm sure you know how to do it off the top of your head. So did I! Just a few years back too!

It took all of five minutes to "remember" it (and I decided to use jQuery instead of the "old ASP way" - a lot more fun this way), and I had a good chuckle thinking back on how I "used to do it" with ASP Classic. And that sort of scared me. But then...

Sobering Thoughts
I've lost a whole lot of "Programming English" (insert your native language there) over the last 7 years working in .NET. I have to say it's embarrassing. Yes I can work up most anything in javascript, but it doesn't come to me as quickly as it should and I have to resort to Google far more often than I'd like to. I don't do ANY form-based HTML, however.

Many of you will take this as a justification to keep using WebForms (why should we code all this stuff by hand, etc) - and I think that's just fine. I think you lose a little in the end, but WebForms aren't going anywhere!

Personally, as a "web programmer" I feel pretty disconnected, I must say, from my brethren "across town" who sometimes cross the tracks and make fun of us MS/ASP.NET guys. Throwing stones at our IDE and it's designer surface - calling our "one form per page" a big sissy.

Sometimes I think they have a point. I just wish they could express it without the tired FUD rhetoric. We really ought to be listening to each other - isn't this what MIX is all about (aside from showing that "look it works on a Mac!")? 

If I may - I think their point is that VS and ASP.NET are pretty cushy (aka Big Massive Abstraction) and do all the work for us, and we've become "platform engineers" that have strayed pretty far from the core of web programming, which is HTML, CSS, and javascript.

Sure we may know about it at a high level - but can you call it up when needed? Like in an interview? OK then! You're on!

Thank you for coming today to interview for the position of Web Alpha Geek. I've worked up a little technical question for you here... let's see... oh yes, here it is:

"Create an HTML page, without server controls, that posts data back to a server when the selection in a select box has changed. The page needs to work in all browsers, and the selection needs to remain "in state" in the select list. No javascript libraries please - this must be done by hand.

You have 5 minutes and no Google..."

DotNetKicks.com avatar
DotNetKicks.com says:
Friday, October 19, 2007
Have We ASP.NET Geeks Lost Something?... You've been kicked (a good thing) - Trackback from DotNetKicks.com...

Steven Harman avatar
Steven Harman says:
Friday, October 19, 2007
You are not alone, my friend. Just today I had to do some Googling to "remember" how to set the value of a hidden input form field. This is for a client application where they don't use any JavaScript libraries to make their jobs easier - and actually they are still doing a lot of document.all.myElementId crap! Anyhow, after about 3 minutes of searching I said "screw it!", downloaded the latest jQuery bits, and was off and running. Next up, replace all of the IE-only hackery with more robust DOM traversing magic via jQuery. $('#myElementId') -- here I come!

Ryan Anderson avatar
Ryan Anderson says:
Friday, October 19, 2007
"I feel a lot of good solid positive energy coming out of you great, great its all great. Yeah, a lot of pressure, you gotta rise above it. Harness in the good energy and block out the bad, harness good energy, block bad, feel the flow Happy, feel it. Its circular, its like a carousel, you put in the quarter you pay the toll, it goes up and down and around, circular, the flow, all good things." --Kevin Neelin in Happy Gilmore As silly as the context of Neelin here, truer words were never spoke. It's come full circle. I don't think things get lost, just fuzzy. Then we hop on the bike again... Concerning the boys on the other side of town, sure I can get "sissy", but eliminating those mundane repetative tasks has allowed us to concentrate on more important things I suppose. Keep it up! RA

Shawn Oster avatar
Shawn Oster says:
Friday, October 19, 2007
I do ASP.NET and Delphi by day but I do consulting at night which is more PHP and Rails and sometimes it takes me a few minutes to switch tracks and get my brain pointed in the right direction, I'll just stare at a feature request and know it's easy but just can't place my finger on it. Often I'll have the probem in reverse, I'll remember how to easily do something in PHP/classic ASP/erb/HTML but I'll look blankly at a fresh WebForm and have no idea how to do it via postback. The light bulb does go on finally but it's after having to unscrew my head a little. WebForms and server controls have always bothered me because they always felt like they were designed by an application developer trying to hammer the Internet into the VB programming model. Of course Rails can make you stupid as well with all their nifty helper functions for outputting radio and select lists. One last little gripe about ASP.NET server controls, I *hate* the fact that the id attribute becomes worthless if you want to use it with a JavaScript framework or CSS. While I love a lot about ASP.NET that one little thing makes me hate it so much at times that I have to count to ten. Nothing like getting a super clean CSS XHTML from a designer and realize any form element they've styled via id is going to have to be replaced with hackery.

Simone Busoli avatar
Simone Busoli says:
Friday, October 19, 2007
Well, guys honestly I think that if you forgot such stuff about web development then probably you didn't do any real web development lately. I can't think of some real-life website without a line of Javascript to do common tasks such as setting/getting values out of elements. And, about radio and checks, if you really only ever used ASP.NET web controls, I can't guess about the size of your pages' viewstate. Anyway, WebForms' fault, I guess.

Rob Conery avatar
Rob Conery says:
Friday, October 19, 2007
@Simone: Ego check please. I've been doing this stuff for years (over 12 of it with the web), and, *ahem* have some nice things to show for it in terms of "real". Care to answer how you'd do the question Mr. Smarty Man?

Kevin Dente avatar
Kevin Dente says:
Friday, October 19, 2007
Heh - glad it's not only me. ;) I've started doing some work with Monorail, and have to relearn a lot of stuff I'd forgotten after years of ASP.NET. I'm dying to get my hands on the MS MVC bits. Hope they hit the intertubes soon. BTW, Kathi and I are going to the big island in a couple of weeks. Any recommendations on things to do?

Rob Conery avatar
Rob Conery says:
Friday, October 19, 2007
@Kevin - sure! Lots of cool things... like come to Kauai! All there is to do on the Big Island is golf, sit in the sun by the pool, hike on Volcanoes, and dive with Manta Rays. Wouldn't you rather go to the Gourmet with me?

Ian avatar
Ian says:
Friday, October 19, 2007
For a while I really missed getting into the nitty-gritty of the front-side logic and languages to perform minor forms tasks. But, as developers it is in our nature sometimes to be obsessive about being compulsive. In the old school ASP days, I became really minded of how my HTML was being generated for view source. I started making sure there were carriage returns on tags and indentation for sub-tags so that the structure on how the dynamic HTML was generated. So, it was not only human readable, but elegant in shape. In the end after watching the alt.net MVC presentation and reading Gu's blog on it, I really think that middle ground must and will be struck. While it was foreign at first I have come to really appreciate staying our the mark-up business as much as possible and love the postbackie-goodness of ASP.NET. I think Scott kind of alluded to that in the comments of that blog mentioning there would be a new UpdatePanel type control that would work within the MVC framework for instance. That gives me some hope that while, yes, things operate differently we are not scrapping years of ASP.NET development approach and thinking.

Simone Busoli avatar
Simone Busoli says:
Friday, October 19, 2007
Sure Rob, I'd simply set the action to the same url, the method to POST, subscribe the change event of the select list (onchange=...) and post the form to the server with either document.forms[x] or document.getElementById('formId') by calling the submit() method on it. About remembering the selection, you need the server to do something about it, with simple HTML you just can't. If you're doing this without any control running on the server you need to iterate through all the items in your select list, find out which one corresponds to the posted value and place a selected="true" text to it. Mr. Smarty Man

Ben Scheirman avatar
Ben Scheirman says:
Friday, October 19, 2007
I see what you mean, Rob, but I have to say: you let yourself get that way (as did many of us). I rejected a lot of the ASP.NETTY stuff that came out with 2.0 (login control, most gridview features, form view, details view, menu, wizard, etc)... I found that I didn't really need any of that stuff, and I've spent far too long trying to figure out how to handle the specific event, or use a specific nuance of a templated control... I've grown a large distaste for them on the whole. Granted, I don't ever want to code up a TreeView on my own (unless I'm getting paid by the hour :)) so I'm happy to use some of the packaged controls. Doing so has kept me grounded so to speak and I'm very much welcoming this new liberating framework. Mark my words, those that cling to Webforms will be the ones who generally don't like HTML and javascript to begin with and they don't ever want to go back to "those scary ASP days."

Rob Conery avatar
Rob Conery says:
Friday, October 19, 2007
@Ben - couldn't agree more; I did it to myself! @Simone - hmmm, I don't think that answers the question :) since "action=" and "onchange" are about 1/10th of the story. If you post back to the same URL, how does it know what to load, when? You don't have Postback, you don't have a lot of the conveniences you normally would. If you do PostBack, how do you know not to fire other logic? You called me out homey (in terms of "real web development") - now I'm callin you out! Show me some code :):):):)

Kevin Isom avatar
Kevin Isom says:
Friday, October 19, 2007
Yes and no Rob. Every language is abstracting something away...Every generation of languages abstracts out the underlying lower level and the same with frameworks. Take Subsonic for instance. It is abstracting away a hell of a lot of ADO.Net plumbing code. And that's great. I don't want to spend time coding database access or creating stored procs and the like. WebForms is an abstraction on top of HTML and HTTP...Is it ideal? No. but it is an abstraction based on a concept a lot of devs are familiar with. The key thing to ask isn't that have you lost something by using an abstraction, but would you know where to look to quickly get under the abstraction? That's the big worry with WebForms, cause while I like the abstraction sometimes, when I hit the wall with what works I don't hesitate to go closer to the metal and do what needs to be done. Why spend 1 hour fighting the abstraction when I can accomplish it in 15 minutes another way? But by that same token, why should I spend 1 hour doing it closer to the metal when I can accomplish it in 15 with the abstraction? But in saying all of that I can't wait to get my hands on the MVC stuff as well.

Karthik avatar
Karthik says:
Friday, October 19, 2007
I agree with what a few others are saying. It's been my experience that vanilla ASP.NET was never good enough to completely abstract away HTML, JS, and CSS. However, that doesn't mean I was tearing my hair out any less when trying to get my DIVs lined up correctly in all browsers ;)

Simone Busoli avatar
Simone Busoli says:
Friday, October 19, 2007
Hey Rob, you can do it however you want, it depends on what you want to put on the server side, you can do it with any technology, from CGI to ASP.NET, through asp, php, jsp, and that endpoint is the one you need to put in the action attribute of the form. There you just need to retrieve the value in any way your technology allows you to, environment variables, command line arguments, whatever. Well, I feel I don't need to demonstrate anything to you, I guess you wanted to know something specific, and there's a billion ways to accomplish it, so, nevermind.

Joe Brinkman avatar
Joe Brinkman says:
Friday, October 19, 2007
Doctors have the PDR. Lawyers get their legal references. Pharmacists have their reference books. Why would we assume that Programmers shouldn't also have reference material - with Google as our version of the PDR? I don't care if people know basic reference material off the top of their head, anymore than I expect my doctor to know of every disease and their symptoms and treatment. I remember when I was a young network engineering consultant, one of the Microsoft consultants I was working with told me that the key was not knowing everything, but rather knowing how to find the answer. In that case it was a matter of being an expert in looking things up on Technet. I expect programmers to have a basic understanding of how things work and how to put the parts together to achieve the requirements of the job. Beyond the really trivial stuff, I expect programmers to know how to quickly find the answer - and to understand it when they find it. Personally, I feel we should be proficient with our abstraction layer (whatever that is - for me it is DotNetNuke), and to be able to quickly come up to speed on one layer down (with a short refresher). But to expect that a single individual could possibly know all the intricacies of every layer of their programming environment is asking a bit much.

Rob Conery avatar
Rob Conery says:
Friday, October 19, 2007
@Kevin Isom - good points :). I think it depends on what you're abstracting but in general you have a great point. @Simone: You sure don't. But let me just take a few snips of your comments here... "Well, guys honestly I think that if you forgot such stuff about web development then probably you didn’t do any real web development lately" "Well, I feel I don’t need to demonstrate anything to you, I guess you wanted to know something specific, and there’s a billion ways to accomplish it, so, nevermind." What happened? I was thinking I was going to see how it's "simply" done??? Anything at all? Was I too harsh when you called me out? I was just having some fun :):):).

Simone Busoli avatar
Simone Busoli says:
Friday, October 19, 2007
Simple doesn't mean that it doesn't take time, do you really want me to mess up your blog post with a real page that does it? I guess so, but I won't. Actually it doesn't take a lot more than what I wrote before. You want to know which element triggered the submit? Keep their values in a hidden field and check what has changed on the server. You see, it's nothing more than WebForms do, did we really think they put some magic in them? ;) Well, if you want to see if I can do it just join us @DotNetKicks, and you'll see that I can do some, well, a lot, more.

Rob Conery avatar
Rob Conery says:
Friday, October 19, 2007
@Joe - Didn't you tell me once that... "If my CPA/accountant couldn't add numbers then I would fire him on the spot."? :) I've lost the post but this was in response to the FizzBuzz article :). In this case your point was different - you were talking about "the fundamentals" - here's the rest of the comment: "If a programmer couldn't figure out how to write code using simple loops and conditional statements then I wouldn't hire him/her. To me saying I will teach such basic concepts to a programmer is like saying I will also teach them how to turn on the computer and what a mouse and keyboard is for. When I hire someone, I expect them to at least have the minimal skills required to perform the job, otherwise I should just hire anyone I happen to find on the street - after all I can just teach them what they need to know." I think knowledge of basic HTML and javascript falls under "fundamental". @Simone - I know you can do it, I think it's your tone and condescension that are getting under my skin.

Simone Busoli avatar
Simone Busoli says:
Friday, October 19, 2007
I didn't want to sound rude, sorry about that. If you mind about something that's getting under my skin is people pretending to be web developers without any knowledge of what's behind all this, say, mostly HTTP and HTML. And I'm not talking about you, of course. So, if I were a php/java/whatever guy and reading your latest post I would think: "he, those guys pretended to feel better because they had a _leaky abstraction_ to work with, and now they must be feeling like the world's changing, while - in fact - it never did"

Kevin Dente avatar
Kevin Dente says:
Friday, October 19, 2007
Sorry bra, the itinerary is set. Guess I'll just have to settle for diving with Manta Rays instead of geeking out over MVC with you. Man, life sucks sometimes. ;)

Joe Brinkman avatar
Joe Brinkman says:
Friday, October 19, 2007
Knowledge of "basic" HTML and javascript is fundamental. Someone should be able to look at it and tell you what it does for simple cases. But a case like this requires you to know the event model, to know the various attributes, to understand the DOM, and javascript syntax and quite honestly is more than what I would consider basics. The difference between the Java/PHP/Ruby camps and Asp.Net, is that none of those other environments have fully abstracted out the web UI layer (Java Server Faces is about as close as they come). As a result their level of abstraction is one layer below where an ASP.Net developer works. That is the whole point of having an abstraction, so that I don't have to know all the little details of the lower level stuff. It is good to have a basic understanding of it, but expecting me to remember every attribute and event on every HTML object and knowing how to use javascript to manipulate those is like expecting every Ruby programmer to have a complete mastery of C (yes- I do read other blog posts). I may from time to time have a need to hand code some html and javascript and in those instances I pull out my reference and in just a couple of minutes I am back up to speed. Personally, I find that books and google are a much more reliable source for "facts" where my brain is much better at handling abstract thought. Knowing the exact html for a radio button is a fact. Something that is easy to look up and something that is very easy for me to mis-remember and thus get wrong. Knowing when it is better to use a radio button group or a list box or drop down-list is an abstract concept and is much more valuable to keep in my brain. I very specifically do NOT try to remember syntax. To me that is a waste of my thought process. If it is something I use all the time, then I will naturally remember it. If it is not, then the likelihood of misremembering it and getting it wrong suggests that I am better off just getting in the habit of looking it up and knowing how to do that. @Simone - Why is the web somehow different than any other computer programming abstraction? I can create masterful applications on windows and linux without ever resorting to writing a single line of assembly. Besides you are not a real programmer if you don't know machine language and I don't mean that hexadecimal stuff either. I mean ones and zeros. Ever since man created the first computer and the first program, we have been developing higher and higher levels of abstraction. No-one seriously thinks we need to go back to the days of switches and patch cables to do programming, and there will be a day when people no longer are required to know javascript and html. With the rise in popularity of Flex/Apollo, JavaFx, Silverlight and others, the day is not far off when web designers/developers will neither know nor care about HTML. Asp.Net is just one attempt at moving to a higher level of abstraction. We could argue all day about whether that is good or bad, but the bottom line is that HTML is a tool used to convey information and interact with users. You might prefer the hammer and nails and some of us prefer the nail gun, even if sometimes the nail gun jams and the air-compressor can be a little cumbersome to carry around. The difference between the Java/PHP/Ruby guys and the ASP.Net guys is that I can always drop back down to using the "hammer and nails" while you have no choice but to continue working at that level.

J. Philip avatar
J. Philip says:
Friday, October 19, 2007
You are right Rob, but most people will use helpers and MVC controls that will ship with the framework for that. Here is one way to do it, but I am not a geek: -- edited -- thanks J i had to take out the code. WordPress is being whacky...

Ayende Rahien avatar
Ayende Rahien says:
Friday, October 19, 2007
Rob, It will probably be something like: document.getElementById('mySelectBox').onchange = function() { document.getElementById('reason').value = 'mySelectBoxChanged;' document.getElemtnById('myForm').submit(); }; But then I would need to write the HTML and the server side. Even if I got for the quick & dirty, it is going to take about ten minutes.

Kevin Dente avatar
Kevin Dente says:
Friday, October 19, 2007
Joe, I think the complaints about ASP.NET are around the fact that in many ways the abstraction is MORE complex than the thing that is being abstracted. That's not how it's supposed to work. The page lifecycle? Hello? ASP.NET was in many ways an attempt to graft a particular programming model - the VB drag-and-drop designer-based model - onto the web. I actually think in many ways it was a huge success, helping bring a generation of VB developers to the web. But ultimately it was an unnatural act - a leaky abstraction. For a lot of people, once they grokked the web, the cost of the leaks became greater than the value of the abstraction.

kevin avatar
kevin says:
Friday, October 19, 2007
The focus on the user experience overall has traditionally be lacking in most of what I see from the asp.net world itself. For example, I tried signing up to the microsoft open office beta and it took 6 steps AND the UI told me that my first pet's name wasn't long enough in characters...WTF! So it's asp.net and the abstraction it promotes that enforces this upon their developers, and not only does the front-end knowledge suffer, but so too does the attention to UX (user experience). As many said above in their comments - it's the developer's decision to choose which path they want to follow; to either neglect these disciplines or embrace them. But there's nothing like a Rob Conery post about asp.net and HTML/JS ways to spark a debate and then get readers offering HTML help.

Kevin Isom avatar
Kevin Isom says:
Friday, October 19, 2007
so Rob, is JQuery gonna make you forget javascript the same way the asp.net has helped make you forget html and js? Maybe it will and maybe that's a good thing. JQuery is awsome and a pleasure to use. I have the same reaction using JQuery for client-side js as I do SubSonic on the server side. The both are a true pleasure to work with and takes heaps of time off of my dev work. Why? Cause they are abstracting away the lower level that's more difficult and or tedious to work with. JQuery and SubSonic? Like chocolate and peanut butter....

Mark de Jeu avatar
Mark de Jeu says:
Friday, October 19, 2007
Now the original puzzle said, 'No javascript libraries please.' Isn't that what JQuery is? Don't get me wrong, I think js frameworks are a huge step forward...

Rob Conery avatar
Rob Conery says:
Saturday, October 20, 2007
@Mark de Jeu - Doh! Well yah I resorted to using jQuery cause it solved the problem, but if I had to do it by hand it would take some Googling to get it right :). I'm allowed to cheat, see, it's my blog :):):).

Edward J. Stembler avatar
Edward J. Stembler says:
Saturday, October 20, 2007
Hey, it happens. The more technologies and concepts you fill your brain with, the more time you have to spend re-aquainting yourself with things you haven't thought about in a while. Personally, I cannot wait until the day where I can abandon antiquaited, idiosynchratic technologies like HTML, CSS et. al. That's partially why Silverlight excites me. I'd much rather work with XAML/WPF than having to contend with browser hacks and CSS tricks. Now if only Microsoft would port the entire WPF framework and clean it up a bit...

Buddy Lindsey avatar
Buddy Lindsey says:
Saturday, October 20, 2007
I got you beat. i never knew how to do that to begin with ;) I basically came into data driven development with asp.net now I can do a lot of javascript, php, etc. I just don't exactly know if i can do what youa re wanting.

kevin avatar
kevin says:
Saturday, October 20, 2007
@edward - whoa, I have to disagree with you on that one. HTML, CSS, and JS are not antiquated nor are they idiosyncratic. I'm also not looking to have to learn yet another technology Microsoft offers up - ie WPF. So yea, I'll pass on those for now. I mean, even in your 2nd sentence you said "The more technologies and concepts you fill your brain with, the more time you have to spend re-aquainting yourself with things you haven’t thought about in a while." ... I guess you don't mind doing that with WPF, Silverlight, etc, etc? To speak to your one point regarding browser issues - if anything, Microsoft and their IE browser should take steps in working with the other major browsers in reaching and agreeing to the standards they all support so the developer community will no longer have to deal with the CSS/JS issues you've mentioned.

StevenHarman.net avatar
StevenHarman.net says:
Saturday, October 20, 2007
It's About Being Disciplined and Open Minded... It's About Being Disciplined and Open Minded...

LarryB avatar
LarryB says:
Saturday, October 20, 2007
These are the days that I am glad that I still do a lot of php work on the side. It keeps me in touch with all the HTML/Javascript goodness I lose while working in ASP.NET. If anything it is the javascript libraries that are causing me to lose a lot of knowledge as they do things so easy for you. I personally live on ExtJS and love it.

Chris Pietschmann avatar
Chris Pietschmann says:
Saturday, October 20, 2007
Interesting post, and it may be true for alot of programmers. Actually, I've known a few Classic ASP programmers that didn't know HTML very well, not to mention JavaScript. I'm not going to post some HTML and/or JavaScript here to prove I know it. I know I do, and I think my Web.Maps.VE ASP.NET Ajax Virtual Earth Mapping Server Control (http://simplovation.com/Page/WebMapsVE.aspx) pretty much demonstrates it.

Robin Massart avatar
Robin Massart says:
Sunday, October 21, 2007
I'm with Joe Brinkman on this: "the key was not knowing everything, but rather knowing how to find the answer" It kind of all depends on your work domain. I work for a tiny company, which means I get to do everything IT related: - setting up servers - setting up databases - managing backups - solving daily IT problems - networking - ASP.NET - HTML - CSS - JavaScirpt - SQL and lots more too. Now, I'm not a genius, so there is no way that I am able to remember everything there is to know about each of these. What I do know is how to use google and other sites to find my answer. This is something I am expert at, to the point that despite having no formal training in any of the above I am able to solve the problem (granted sometimes it takes much longer than anticipated, but that's life). In fact the way things normally work is that these things go in shifts. When I am doing UI work for a few days I end up using google a lot less at the end than at the beginning. Now the real point is that it is unrealistic to compare my level of knowledge (not skill/ability) to someone who only works in one of these domains. For sure, if someone is working purely as a JavaScript developer, then yes he should know that stuff out of the top of his head. But me? Sorry I honestly can't be bothered to remember the exact value of a MySql config setting that I need to set like once a year. That's what dev.mysql.com is for. There's no shame in needing to look things up, as long you understand the underlying concepts.

Joe Brinkman avatar
Joe Brinkman says:
Sunday, October 21, 2007
I found a recent quote by Jeff Atwood that I think is so appropriate in discussions like these: "Software developers think their job is writing code. But it's not.* Their job is to solve the customer's problem. Sure, our preferred medium for solving problems is software, and that does involve writing code. But let's keep this squarely in context: writing code is something you have to do to deliver a solution. It is not an end in and of itself." (http://www.codinghorror.com/blog/archives/000962.html) To me this thread is very similar to what we discuss in my woodworking hobby. Is it better to use power-tools or hand-tools? One way is faster, but in many cases less precise, however it is easy for begginners to produce amazing pieces of work. The hand-tool method is very precise, but can be very slow and tedious and is difficult to master. In the end, most woodworkers rely on a combination of the two methods depending on the needs of the specific job and their skill level. For most woodworkers, doing production work, they rely very heavily on the power-tools and only use the hand-tools in the few places where the extra control and precision is needed. So, are you focused on the code or are you focused on meeting your customer's needs? If it is the former, then I wish you the best of luck at making a living at that, however if it is the latter then I am sure you will have no problem making a very comfortable living.

Gareth avatar
Gareth says:
Sunday, October 21, 2007
I have long wondered why a vb.net programmer would take a aspnet label control, put text in it, set its bold attribute and then follow it with a hard break (“BR”). I have seen this a lot, and the control is never used server side. It’s just a way to make a head “H” element that a rendering agent doesn’t understand. I really like the HML controls in the framework and wonder why us Microsoft guys don’t make use of them. I think that both CSS and JavaScript are still things that a web developer needs to know. I just think it’s a shame that most on the dotnet framework have forgotten all we learned in the run-up to 2001. I have built up my own little ideas on how I like to use asp.net. They revolve around heavy use of repeaters and form views. I use anchors “A” set to runat equals server and a full set of html tags out of the generic html library. But controls like the dropdownlist and checkbox list are great, because they are so enumerable aware. I think in terms of master pages and controls now, and that helps my ability to use a full implementation of CSS in my sites. In JavaScript, I have had to change my methods, and use relative calls instead of calling into an id that I might switch to server side and get bollixed up in the asp.net id scoping. Which really meant all I had to learn was how to write recursion into my JavaScript functions. I have gotten out of the DAL “data access layer” business, and instead use the SQLDataObject as an inheritable base class in custom objects. All of this makes for a quick, tidy implementation that is very CSS capable and doesn’t mess too much with the ability to continue to code things in JavaScript.

Gareth avatar
Gareth says:
Sunday, October 21, 2007
I would say the more things change, the more they stay the same... My solution is pretty much the same as its always been. -- I had to edit this - it broke the page. Damn wordpress...

Joe Chung avatar
Joe Chung says:
Sunday, October 21, 2007
I've never forgotten my HTML. It really disturbs me when I hear about ASP.NET programmers using the awful HTML designers in Visual Studio, and then they wonder why the page "doesn't work," because they tried to drag and drop an HTML element to another place on the page. I can forgive people not knowing their JavaScript, because cross-browser JavaScript is akin to cross-platform C programming. It's a bloody mess I wouldn't wish on my worst enemy. Thankfully, several good JavaScript libraries like jQuery, Prototype, mootools, etc. have emerged to abstract this mess, but they're just one more thing a programmer has to learn to be productive, which sucks. Plus there's this whole "Javascript has functional programming language constructs so let's use them!" movement sponsored by smart guys like Douglas Crockford which just make learning JavaScript DOM programming even more formidable than it already is for your average Joe programmer. There are just way too many things a programmer needs to learn to be productive as a .NET Web application developer. Here's a list: Two, sometimes three, different JavaScript, CSS, HTML dialects (IE6, Firefox, IE7, Safari) Two, sometimes three, different versions of C# or VB.NET (1.1, 2.0, 3.5) Two, sometimes three, different Web Services platforms (ASMX, ASMX WSE, WCF) Two, sometimes three, different versions of SQL Server or ORACLE (2000/9i, 2005/10g, 2008/11g) Two, sometimes three, different dialects of SQL (T-SQL, PL/SQL, generic SQL) Two, sometimes three, different unit testing platforms (VSTS, NUnit, MbUnit) Visual Studio (MSBUILD, Web Deployment Projects, VSTS, SourceSafe) On a unrelated note, I hate "whiteboard coding" questions in job interviews, because it's an unrealistic environment to write code in. Yes, I'm looking at you, Microsoft. If everybody loves whiteboard coding so much, then why haven't we made this possible in our actual development IDE's? Please don't take that as a suggestion to do so. Anyway enough with the rants, I'm starting to feel like the Lewis Black of .NET here...

Rob Conery avatar
Rob Conery says:
Sunday, October 21, 2007
@Joe - good comment. If you scroll down that post you'll see my comment :) and it basically says that I disagree with Jeff on this. First, I need to mention that I'm all about the client - always have been. But that doesn't always serve tech needs does it? Slippery argument there - but it's a matter (like all things) of scale and perspective. In an ideal situation you have a PM that works with the client. Some way of shielding the tech from business. This is needed - otherwise you end up with "Demo Code" and "Need-it-now" messes all over. As you gain experience and open yourself to new ideas (and also gain a healthy respect for both ends of the spectrum), you can balance the two yourself in a good discussion. I would suggest you're at this point - but you can't invalidate the technical perspective either. Anyway - to me it's always what meets the client's needs and doesn't limit me from delivering what I've been asked to do. Most of the time I've stuck with server controls cause they work, and the requirements have been simple. But I'm often asked to create a fairly intricate page (see the CSK) that I end up feeling constrained by the control structure. Seriously - how often have you groaned and said "what event do I need to wire to do that again? Oh, I can't?". Finally - I like the concept of powered hand tools :).

Bart Czernicki avatar
Bart Czernicki says:
Sunday, October 21, 2007
To me its funny this is NDA'ed...it really should be released more as an Open Source project. MS isn't really "innovating" here. The architecture has existed now for several years and the MonoRail project have implemented it very well. Wouldn't it be better for MS to just write tools/VS add-ins to work better with MonoRail? Instead we have a new platform that MS has devoted to and then it will move developers to another project and its initial release will be missing some features and we will have to wait for to implement (i.e. WCF, WPF, WPF UI, Silverlight etc.) So...this sounds great and I definitely want to play with it, but once again I hope MS doesn't make this a 1.0 release we have to wait up to 2 years to implement in real-life scenarios.

Rob Conery avatar
Rob Conery says:
Monday, October 22, 2007
@Bart: the NDA is because I'm using "branched" proto code that shouldn't be used "in the wild". To me, the sad thing is when MS listens and adapts (the browser, IE7, MVC), they get crapped on for stealing and copying existing code that's been around for a while. When they do something "innovative", people yelp about proprietary code and closed systems. I'd like to see people default to the positive sometimes.

Gareth avatar
Gareth says:
Monday, October 22, 2007
I just happened to be browsing and came up on this http://www.odetocode.com/Articles/473.aspx article. "What ASP.NET Developers Should Know About JavaScript" I thought it was pretty good and thought of this conversation. And I agree with the article, that this should be the ASP.net developer’s level of competence with our default client scripting language. Well I have always had a problem with the default stance that everything Microsoft did was bad, I have worked with their products my whole career. But equally I have a problem with the dotnet crowd thinking that they can ignore JavaScript and CSS. ps. Sorry I broke your page.

Josh Stodola avatar
Josh Stodola says:
Monday, October 22, 2007
Selection has been made!

Josh Stodola avatar
Josh Stodola says:
Monday, October 22, 2007
LMAO your comments are so out of whack, I can't believe I am wasting my time here. My previous comment was like 1,000 characters and look at what it did with it. Ridiclulous... Here goes the second attempt... --- Hehe I had a couple free moments so I decided to whip it up in JSP. Boy, this sure made me appreciate ASP.NET. If us "geeks" really have lost something, I think it was worth letting go! Here is what I came up with... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JSP Test for Josh</title> </head> <body> <form action="test.jsp" method="post"> <% int numIndex = 1; String strSelection = request.getParameter("ddlOptions"); if (strSelection != null) { %> <h1>Selection has been made!</h1> <% } %> <select id="ddlOptions" onchange="document.forms[0].submit()"> <% while (numIndex < 6) { if(strSelection == numIndex.toString()) { %> <option value="<%= numIndex %>" selected="selected"><%= numIndex %></option> <% } else { %> <option value="<%= numIndex %>"><%= numIndex %></option> <% } } %> </select> <input type="submit" value="Go For It!" /> </form> </body> </html> Thanks for the challenge!

Alec Whittington avatar
Alec Whittington says:
Monday, October 22, 2007
@Rob - Once again a great read. It is so true what you have stated, I just ran into the situation myself a few weeks back where I was stumped on something that should have been easy to me. @Joe - As always you bring class and provoke good conversations in any post you comment on. I am proud to work with you.

JrzyShr Dev Guy avatar
JrzyShr Dev Guy says:
Tuesday, October 23, 2007
Vibrant Ink in Visual Studio... If you do any Silverlight development, you'll likely end up spending a good deal of time switching between...

Bryan Holland avatar
Bryan Holland says:
Tuesday, October 23, 2007
There are so many things to know these days! I think it is difficult to keep everything at reach and our knowledge is continually evolving. We have to know about HTML, Javascript (language and DOM), ASP.NET, ADO.NET, SQL (PL-SQL or T-SQL), TDD, Regular Expressions, SOA, Web Services, HTTP, Agile, C#, Subversion, and so much more. And then add on all of the upcoming stuff from Microsoft and others and you can be really overwhelmed. I remember the days when we used ADO (or god forbid RDO) from Visual Basic to build to pretty simple applications and I use none of that now. What is important is knowing where to look, how to use it and when to use it.

Dave Savage avatar
Dave Savage says:
Tuesday, October 23, 2007
Technorati... Technorati...

Zack Owens avatar
Zack Owens says:
Wednesday, October 24, 2007
OFF TOPIC: http://channel8.msdn.com/Posts/Codeplex-an-Open-Source-project-from-Microsoft/ Look... they mention SubSonic :)

Steve avatar
Steve says:
Tuesday, November 20, 2007
I think you are totally right. Much of the problem is, imo, that webforms page lifecycle made it near impossible to do easy stuff. People create controls to do the hard stuff that is really easy :) We take those controls and think that it is even more easy :) The beauty of Monorail and MS MVC will be the return to simplicity. (Hopefully the end of id munging) I can remember when I first started using Monorail I was so hung up on not having my 'telerik controls'. Then I found the world of YUI, jQuery, ext, etc... and found their 'controls' rocked and it could all be used with ease since I didn't have to fight the page lifecycle! I also do think that most 'postbacks' will be replaced with either pure javascript or ajax calls. The ability to have controllers with [Ajax] attributes will help I think.


Search Me
Subscribe

Popular Posts
 
My Tweets
  • @codinghorror: I may be weird but I don't ask my cats to write my blog entries :p.
  • @blowdart sure! Wanna come on and do a webcast with me - plugging CardSpace in?
  • People are very, very weird. Skypecasts are creepy.
  • Is Rob Howard trying to tell us something? http://www.rob-howard.net/
  • New storefront posted- all about OpenID :) http://tinyurl.com/5rkgux
  About Me



Hi! My name is Rob Conery and I work at Microsoft on the ASP.NET team. I am the Creator of SubSonic and was the Chief Architect of the Commerce Starter Kit (a free, Open Source eCommerce platform for .NET)

I live in Kauai, HI with my family, and when my clients aren't looking, I sometimes write things on my blog (giving away secrets of incalculable value).