Last time, we compared XAML to traditional web development, and discussed the fundamental flaw in its design. By flattening the hierarchy of behavior, appearance and structure, XAML requires developers to understand very deep aspects of it’s behavior and design to make informed decisions about what type of controls to use.
Desktop developers are used to this depth of decision making. It is understood that modern frameworks require a certain depth of knowledge to achieve certain goals and developers have the background to make informed decisions and troubleshoot them if required.
Designers by and large are not.
A designer is concerned with appearance above all else. They have a mindset that demands they get the screen looking correct first, worrying about behavior later. Structure is often the absolute last thing on their mind. A quick review of the history of web development would show that in service of appearance, designers were willing to abuse such atrocities as single-pixel gifs, nested tables and font tags to see their designs take form on screen. Even in modern web development, where hacks within the markup itself is discouraged, clever tricks are often advocated to accomplish otherwise simple appearances such as rounded corners or drop shadows.
As the industry has matured, it has become very prevalent that being a web designer implies you understand and know HTML, CSS and JavaScript. Those that don’t are at a competitive disadvantage. The approachability of HTML has encouraged this shifting of roles and the most prolific web designers are often those with a deep understanding of their (tools)[http://www.37signals.com]. Which is what one would expect. The more you understand the technical limitations and capabilities of your platform, the better your work will be — so long as you don’t get lazy.
Desktop development remains a very different world. It is rare to find talented interface designers capable of writing even a working prototype of their application in their target framework. In many cases, HTML prototypes are cobbled together to “get the idea across.” Worse, often nothing beyond paper prototypes are produced leaving numerous questions unanswered until deep into the development life cycle. And the deeper you get into the cycle, the more costly incorrect assumptions become.
If we accept that markup is more approachable than other programming languages, it stands to reason that if given a chance designers will take to XAML and begin to explore the capabilities of the platform. This will inform their design decisions which will improve the final result and reduce the possibility of costly design revisions late in the cycle. If WYSIWG tools are available that allow a designer to explore the platform without necessarily writing code, all the better. Utopia at last!
For now that utopia remains out of reach. Despite the platforms capabilities, it remains firmly in the realm of the developer and not the designer. While the simple has been made simpler, and yes the complex made more plausible, the overall experience of the platform will leave a sour taste in the mouth of any designer without a strong engineering background.
Microsoft’s Expression Blend, its XAML WYSIWYG tool, has yet to hit it’s stride. It’s not quite sure what it wants to be. Is it a timeline-based interaction modeler? A fast prototyping tool? An interface construction tool? Attempting to serve too many masters is hindering the application and stretching the learning curve as features are piled on. Worse, since it’s little more than a code generation tool, changes in the design view often have strange consequences on the code generated. As with other WYSIWG markup tools, such as Adobe’s Dreamweaver, developers will find themselves using it more as a tool for exploration that actual development. More often than not, they’ll find themselves resorting to hand coding to create anything production worthy.
The coupled nature of XAML’s behavior, structure and appearance elements adds additional frustration to the designer. If, in service of an appearance, the designer chooses a collection of control elements that performs poorly or does not provide the programmatic hooks required by the engineering team, the application will require re-architecting. In many cases, the changes will go beyond a simple re-factoring and entail a full rebuild. This problem could be lessened if the design tools available were capable of intelligently deciding which controls and structures should be used given the intent of the designer but Blend is not yet up to this task.
It’s clear that for a XAML application to succeed, the design team either needs to have a strong background in desktop engineering, or the development team must be brought onto the project incredibly early. Certainly much earlier than in traditional projects.
Despite these compounding issues, XAML and WPF present a way forward for companies seeking to create better applications for the Windows desktop. Over the next few years, you will see more and more commercial applications released into the marketplace which utilize the platform. And as one company releases a WPF-based application you can be sure their competitors will follow.
Will it ever completely replace the traditional programmatic workflow? It’s hard to tell. So long as it remains unapproachable for most designers, I personally doubt it. But if Microsoft has any salient quality as a company, it’s their willingness to stick it out and iterate. If version one isn’t great, just wait for version two. And if version two doesn’t float your boat, we’re working on version three right now and man it’s awesome.
Steve Ballmer has said, “It’s a joke in the technology world that Microsoft takes three versions to get anything right”.
I guess we’ll see.