April 10, 2007

Is window development dead?

There are debates going through the internet right now about whether or not Microsoft is dead, and by association, rich-client development.

Disclaimer number one: I am biased. Over 50% of my work these days is still rich-client. I love creating rich-client applications. Something about only having to work with one language to create an application (instead of three or four) still makes me smile. Being able to finely control threading, painting, and events without worrying about session state and callbacks is downright wonderful. I think rich-client applications will be around for a long time now -- even with AJAX readily available.

But the nature of rich-client development has changed. It used to be normal to create stand-alone applications that happily (or unhappily) sat on a users machine and did their work without a care in the world. That world is gone and the internet killed it. No worries, it needed to die -- or bleed a bit anyway.

I have not written a rich-client application in the past couple of years that did not have some internet capability. Either calling web services for data, checking for updates, or just scraping web pages for content, everything is internet enabled. As it should be.

The thing is, I do have friends who believe that rich-client is dieing and and all development will soon be centered on web development. And truth is, a good chunk of the collective brain power is being spent there. As it should be. Web development still has some catching up to do.

Lets state the obvious with web development.
  • Debugging Javascript: Ugly!
  • C#/VB.NET, Javascript, XHTML, CSS, XML, SQL: I have a sinking feeling.
  • Debugging regular code: Could be better.
  • Model-View-Presenter: REALLY Ugly.
  • Number of technologies needed: a dependency nightmare.
  • Deployment: as painless as debugging Javascript on 10 different browser/OS combinations can be.
Rich-client also has its faults, some are greater than the web development. As much as a pain web deployment is, Rich-client deployment is a nightmare where every client machine is a monster lurking -- and so far I have seen no technologies to fix that. Theming a rich client app is something best left to the professionals.

Unless...WPF turns out to be all it is cracked up to be. In that case, the theming argument goes away muttering to itself. I have great hope for WPF. In fact, WPF is the reason I think rich-client development is not dead and could be heading for a renaissance.

This could be the first time designers will really have to the chance to do something. All of those cool UI's that you see in games are entirely reachable now. The chance to make something beautiful is very possible, just like the likelihood of creating something extremely wretched (I'm still waiting for the first WPF app to come out and show the world what not to do). That is the beauty of rich client development now, the possibilities. I love the feeling that the sky is the limit and anything I design I can do.

I still don't get that from web development. From a design standpoint, it is both more open and more restricted than rich-client. It also feels more brittle (in a code smell soft of way). All of those technologies stitched together to make a ducted-taped whole. It really isn't all that cohesive. You don't believe me? Read the technology list from above again and get back to me.

So is rich-client development dead? In spite of what any die-hard web developers might tell you -- no. In reality, both development types, rich-client and web, will continue to exist and learn from each other. They will continue to integrate. But they wont be the same for a very long time.

No comments: