After a reasonable interlude, I’ve recently been put on an ASP.NET project. It’s a huge shift in mindset to go from the lovely, fluffy-bunny, lego-like world of .NET WinForms development (with buckets of references and in-memory datasets), to the cold, hard, stateless world of web development.
I think there’s two things that make web development in .NET (or any language for that matter) more onerous than forms development: the whole state-management thing; and the freedom in interface design.
The state management issue is fairly easy to overcome. Like I say, it’s just about using a different mindset. Paging data from the database instead of filling an in-memory dataset with everything you might need; using the
Session object sparingly, and intelligently; knowing the page lifecycle like you know your favourite pillow; finding somewhere soft to throw your monitor when that
DataBind call doesn’t do what you want it to…
The user interface issue is a whole different fishkettle. You’d think that freedom in interface design is a good thing, but believe me it’s not. Not for developers anyway. In the WinForms world, a button is a button. Sure you can get all sexy and do some OwnerDraw GDI funkyness to make hot-pink flashing buttons, but no one does. However on the web, everyone thinks they’re an interface designer. I think that’s the crux of the issue: if everyone simply designed web applications to look like forms applications, there would be no issue. But throughout the history of the interwebs, developers have been using the freedom granted to them to create crap user interfaces. Users see these colourful widgets, and expect the same thing from their web apps. Hence the perpetuation of the ever-changing webapp interface.
I don’t know if there is a solution really. Some great webapps use a totally forms-like interface (Oddpost for example), while others (GMail) use something totally unique for similar results in usability. I think the short answer is if you don’t have the cash to pay excellent designers, stick with what you know. In my case that’s forms.