I was over at ExpressionBlend.com and saw this article that rants about the boring old UIs being developed using windows-forms type developers working in WPF. This is a great example of the clash that is starting to happen as the worlds of RIA and traditional applications begin to converge: designers and developers looking at each other's work and walking away with a loud "tsk tsk tsk".
While I too lament the prevalence of relatively boring UIs out there, I also have to admit that I am a contributor to them. I don't do battleship gray any more, but my applications do tend towards traditional in nature. I straddle the two worlds a bit, but I am a far better developer than designer.
User experience is not all about graphics, gradients and doing something unique to stretch the technology. Often times, user experience is about doing subtle things. Sometimes it's just a few color changes, sometimes it's a few subtle animations to let the user know what is going on. Or, as is the case in Office 2007, sometimes it's just changing a single piece in the application (toolbars and menus) and leaving the rest with generally the same UX as the past 10 versions. Most importantly, user experience is about making sure the application works for the user in as easy and performant way as can be accommodated in the development schedule.
Now, if what he sees are really "rubbish UIs" even in the original technology, then I totally agree. If his main complaint is that these folks want to be seen as WPF leaders, again, I agree. If, however, the issue is the original UIs are functional, usable, and decent for the technology, and "Rubbish" is defined as simply consisting of battleship gray boxes, then I have to disagree. Beautiful and user-friendly do not mean the same thing. Flashy looking applications often don't fit well inside the culture and firewall at most corporations. Functional, fast-performing, interactive, intuitive, and easily maintained applications do.
I totally agree that most business users do not know what they're missing. For the 15 I've been doing this professionally, I always had to hide my screen (until the last couple years) when working on icons, graphics or anything else seen as being of low value in a business app. When in hiding, I did manage to do things like "draw pictures" (where did I leave my crayons again?), but even other client devs would come over and lament the "time wasting" going on when whipping up a few icons. It's like those just appeared out of thin air or that text can cover all needs. The only thing most developers considered graphics-worthy was a splash screen (I hate splash screens as much as I hate web site intros). Users know when they're missing, but no one wants to know they're being developed.
FWIW, help authors often suffer the same comments and stares, but no one actually uses on-line help, right? ;)
With the mass adoption of web apps and now with the more widepsread adoption of RIA, this is changing. I think that is a good change, but it is not necessarily an essential change. Just as adoption of web applications set a higher UI bar for Windows applications, so will the adoption of Silverlight set a higher UI bar for both, and further help drive the adoption of WPF. I'm tired of users asking for web applications when what they really want is something more akin to a desktop application. RIAs help us bridge that gap.
For me, that is the most important piece here. It's not that WPF is going to overtake Windows Forms development (which I believe it will). Instead, it's that WPF will have enough appeal to lure back applications that were inappropriatly slated to be html/js apps.
So, given all that, why do your business application in WPF instead of Windows Forms, even if you have no design talent?
Flexibility in UI. If your users do want something nicer looking, you have the tools capable to do that. If they really want something totally unique, you can do that as well. It's a huge effort to do anything other than battleship gray boxes in Windows Forms. I've done it.
Real Binding and other great productivity enhancements. WPF brings more to the table than just great UI. WPF brings in extremely strong binding between objects and data. This is a huge productivity enhancer not just for prototyping (below), but during regular development.
Rapid Prototyping. Using the above binding, you can prototype the vast majority of a WPF application without ever even cracking open visual studio. We've all written the zero-code RSS reader to demonstrat binding, but it goes deeper than that. Mock up your data using xml files, and really show what the app is going to look like and behave like. This is a huge boon for prototyping.
It's the technology that is moving forward. I would expect to see Windows Forms eventually fall off the map, if not explicitly then just by attrition of developers.
Portable skillset. If you build Silverlight applications, you'll be at home in WPF. The opposite is also true for the most part. Silverlight has
Smaller investment in third-party controls. Windows forms controls typically have a set look and feel, with very limited customization. If you wanted to have a different presentation, you had to go and purchase someone else's $1000-per-developer suite and learn the object model for those controls. In WPF, you can use styles and templates to completely alter the look and feel for a control while still working with the same model in your code. This is a huge productivity boost and great for keeping down the number of boxes on your shelf.
So while I think Brennon makes some good points, I also think he takes a rather biased view of what WPF is capable of and usable for.
What do you think?