I feel like I'm fashionably late to some extravagant party. A bunch of guest have already arrived and I walk in the door, impressed with people I see, and quite glad that I have finally arrived too... I'm also thinking "what the heck was I waiting for?"
The "party" I'm talking about is the Windows Presentation Framework. Now, I'm really a "Web guy," so I'll use that as my excuse for taking so long to join the party, but having finally gotten a good look at what I was missing, it's really no excuse at all. I went to a 3-day training course last week, led by trainer extraordinare, Walt Ritscher, from the WinTellect training group, and man was it impressive! Having worked at Infragistics, I have been well-exposed to all of the marketing buzz around WPF. Unfortunately, being the Webinary I am, I was not really exposed to the real meat and potatoes and ended up waiting until this offer of training came my way to finally get a taste of it. Walt came in, took an exciting topic, and really brought it to life. His informative, direct, knowledgeable, and (above all) enthusiastic approach to the course material really sparked my interest in WPF. I just sat through three days of intense training, watching slide after slide and demo after demo and saying "Wow..." every few minutes.
My problem with a lot of technologies (including WPF and even Silverlight) is that I see the marketing and say, "Yeah... that's cool - now I just need to hire myself a graphical designer and I'm good to go." It's hard to get a feel for how I, the developer, fit in to this new media-rich world. Generally, I just end up learning the syntax, etc. and end up realizing the full potential later on, once I've got the technical stuff done. But this time with WPF, Walt was able - through a fine blend of instruction and demo - show me, the graphically-challenged developer, how quickly and easily I can take this new platform and leverage it to build very impressive solutions. In fact, these impressions extended all the way into my thoughts about Silverlight, since the two are so closely related.
Is code becoming more and more "obsolete"?
After all this exposure, I'm definitely ready to write some code! Er... wait... XAML?
Outside of all the cool (and more importantly: easily-created) "rich interface" bells and whistles, WPF has a lot of concepts at the more technical levels that are just plain revolutionary. It's quite obvious that XAML - and the paradigm in which it causes you to think - is one of the most important concepts on that list. Being a web developer, I'm more than familiar with - and at home in - a declarative markup language. In fact, it's more or less what drove me to working with web technologies in the first place ('cause it sure as heck wasn't ViewState!); I wouldn't say I was lured toward web development so much as I was running away from WinForms development! To me, declarative markup - while helping you write less code - not only makes everything a bit clearer, but can help you focus on the functional details of both the user interface and user experience and forget about those right-brained concepts such as color and graphics by allowing the right-brainers to modify the looks of your application all they want while making it a lot harder for them to actually break any of your functionality. For us left-brainers, it makes us more "at home" more of the time as well as greatly easing the burden on collaborating with the right-brainers.
In addition to the awesome increase in separation of function and form, I'd argue that using declarative markup in this way also provides less room for bugs; or, at the very least, lowering their impact. Obviously, you're still going to have to write the business logic that drives everything, but there is so much "plumbing" that is taken care of for you in declarative markup languages, and with WPF in particular! What really got me is how many demos Walt wrote and/or showed us that used NOTHING but XAML, and many more that only included a handful of lines of business logic. It makes sense that this is the direction we're heading and if you follow that idea through it begs the question, "how much code are we going to be writing in a few years?" By "code" I mean languages such as C#, VB, Python, etc. as opposed to the declarative markup I've been discussing. Obviously, there will always be room for typos and poor syntax in markup, but things like XAML and the IntelliSense/background compiling of Visual Studio help us reduce these types of mistakes and spend more of our day being productive instead of troubleshooting. What's more, we may end up with just about the same amount of actual code (C#, VB, etc.) that we did before, only the big difference now is that a tool has generated it for us.
And, since Silverlight and WPF share the common foundation of XAML, when we're all done with our WPF project a lot of it (the UI, at least) can be "easily" ported to Silverlight, allowing us to run essentially the same thing on the web...? Oh yeah! Granted, the glaring differences between the two makes this more easily said than done, but even the concept is enticing... and I can only imagine it will get easier as the two technologies evolve.
There are plenty of other things about WPF that I've fallen in love with, but the ideas I've talked about above are the ones that have really intrigued me. As I hope I've made abundantly clear - I just took the training, and I've done nothing but some sample applications, so I may be looking at this new world with stars in my eyes because my exposure is limited... but I don't intend for that to remain true for very long. And, from what I've seen and heard from those already at the party, I'll go through the same learning curve as any new language, but in the end it'll be worth it and I won't be disappointed.