April 24, 2009 | David Raffauf

At the risk of sounding like a whiny designer, I’m going to blast Microsoft for a minute. They don’t get the web, or typical job roles for web teams. My question to Microsoft is why would should a designer have to learn to program, or why should a programmer have to learn to design, in order to build a web app together?
Let’s just get it out of the way that the “design” mode is useless for building pleasant web experiences. It’s good for desktop apps and people making a living off tutorial books. But it isn’t web ready.
Therefor, I’ve spend most of my time in Microsoft’s front-end .cs files on a C# project. If you want to pull any values generated by the codebehind files you need to know object instance names and properties. I don’t mean that you need to be able to choose them from a context menu, you have to have the developer give you a list or resort to digging through their code. This is insane. PHP and Rails make this much easier. Also, if you want to loop over some data it’s the same deal. You have to use a repeater control or something similar.
Smarty in PHP had this designer/developer relationship nailed years ago. Rails also took a rather intuitive approach with some basic programming tools that a designer could quickly grasp. Microsoft is seriously lagging.
What this means to your web team is that either your designers will be sifting through code or that your coders will be writing placeholder interfaces for designers. Neither of these are good situations, and will build unhealthy resentment and animosity within your team.
Another problem with Visual Studio / .Net is that you do not have control over the final HTML that is spit out. The IDs on all controls get rendered dynamically. This rules out doing cool things easily with Prototype, Scriptaculous or other javascript libraries. Sometimes there are ways to work around it, but they take a lot more time and are less than ideal.
Also, prepare to have SPANs and DIVs peppered throughout your design where you don’t want them. And don’t try to remove them, Microsoft sees these as unobtrusive code changes. This is the markup equivalent of having a dozen semicolons randomly inserted into your programming code, with no ability to remove them. Have fun!
The Visual Studio IDE is also obtrusive. It doesn’t simply suggest changes, it will alter your code when you don’t want it to. A common Prototype ID selector is $(‘ID_HERE’).PROPERTY_HERE, but good luck typing that in Visual Studio without erasing a bunch of auto-filled suggestions.
I guess my basic gripe about working with .Net and Visual is that developing with it doesn’t match real world job roles. It feels like they figured out a way to spit out desktop apps on the web and never examined what’s different online and off. And their editor is like an annoying kid that keeps trying to prove why he’s smarter than you.
I’m sure .Net (C#) is an amazing tool for building scalable web services. I’m not a big Microsoft fan but I do understand that they can make useful tools, especially for the enterprise. But Microsoft, please don’t pretend to offer a useful tool for creating front-end web interfaces.
Hi,
Interesting article - however - have you considered using WPF or Silverlight? They support collaborative work of designers and developers on the same project - developers are writting C# or any other code, while designers are able to use tools like Expression Design, Blend (or even import artwork from Photoshop and Illustrator) to create and deliver their designs.
I’d be happy to provide you with more detailes if you are interested about this specific workflow.
Thanks,
Vibor
@ Vibor
Do you know if WPF and Silverlight help to get around issues like MS dynamically generating IDs for elements and inserting DIVs and SPANs into the HTML?
Interesting article, though it feels a little one-sided to me.
I don’t considered myself a fan of MS, I am however a user of it’s products and have built both desktop and web-based applications/services on their .NET platform (C#).
I do relate to the pains you’ve outline in your post, and quite frankly I agree that building anything for the web short of pure web-services is a pain-in-the-arse (and I can say a few choice things about Rails…)
(Just remember that *we* are not MS’s primary audience for their tools such as .NET—it *is* intended largely for an Enterprise environment, so we can’t expect that MS gives a rat’s arse about our gripes when we don’t really affect thier bottom line all that much.)
Back to the point; .NET, like Rails or systems such as Smarty, are just tools—and sometimes are not the right tools for the job. In the past I’ve had to force myself to *remember* what .NET was intended for and build/adapt accordingly. This meant that at some point I had to create or use frameworks that leveraged the power of the platform, but in a form that was sensible for web development practices. A good example here would be an MVC design pattern built on the .NET platform—the methodology is nearly identical to that which you’d encounter with Cake/CodeIgniter/Expression/etc. while the language (and sometimes performance) is the only real difference. I’ve had to do the same with Java…
As far as designers and developers go—a good web designer will either force themselves to learn what they need of the platform they’re working on, and enable application developers to better understand their requirements when it comes to developing for and bridging the business-layer with the presentation-layer. Likewise, a good developer will find ways to create efficiencies for themselves and their team (this includes the design team)—such efficiencies may include leveraging certain methodologies for bridging the gap between business logic/requirements and presentation-layer/design requirements.
Anyway, that’s just my 2 cents
@Chris Murphy
Good points. I agree, you do at some point have to go back to what the purpose of the tool is. Part of the problem is that a lot of small businesses innocently start building something in Windows because it’s what they’re used to, and there’s no good path for growth at that point. It’s straight to enterprise apps.
For web development, no other development stack really forces you into that mold that I know of.
I think my big gripe as a designer is that .Net just inserts tags all over the place and it can be really frustrating, sometimes impossible to really work around.
yo david, interesting article as im not too familiar with c#/visual studio, but know a lot of corporate web infrastructure is based on it. personally ive been uaing Django which runs on python and plan to base as much work on this as possible. it can generate and validate forms if you want, but its very flexible, and pythons been around a while so theres a lot of support and modules written. anyway i think its VERY worth checking out, i rewrote a project at work in 2 weeks when it took our old developer almost a year to develop it in flat php. it’s good stuff
by the way, my CAPTCHA code on your site is “has69”, intentional?