The seventh day of any project should always be devoted to rest and reflection.
There is a passage from James Watson’s account about discovering the structure of DNA, The Double Helix, in which Watson decides that he wants to study X-ray crystallography (the technique that eventually leads to the discovery of the double helix structure). He is told by an authority that because the field is so new, there are only five papers on the subject worth reading — five papers to read in order to master an entire field of science!
This is also the current state of Silverlight development. The final framework is not yet out, the books are still being written as authors hedge their bets on what will be included in the RTM of Silverlight 2.0, and there are no best practices. Moreover, Silverlight development is so different from what has gone before that no one has a particular leg up on anyone else. The seasoned ASP.NET developer and the kid fresh out of college are in the same position: either one can become a master of Silverlight, or simply let it slide by and work on other things instead.
So is Silverlight worth learning? It basically fills in two pre-existing development domains. One is Flash, and the other is ajax web sites. It can improve on ajax web sites by simply having a simpler programming model, and by not being dependent on Javascript (as of the 2.0 beta realease) which tends to be brittle. The update panel in ASP.NET Ajax and the Ajax Control Toolkit have made component based programming of ajax web sites easier, but if you ever read the Microsoft Ajax web forums, you’ll quickly see that it still isn’t easy enough, and people supporting sites that have been up for a year are starting to come forward with their maintenance nightmares. The introduction of the Microsoft MVC framework raises further questions about whether the webform techniques that so many Microsoft-centric web developers have been working with will continue to be useful in the future.
Silverlight, in some sense, competes with Flash, since it is a web based vector graphics rendering framework. It is more convenient than Flash, for many developers, since it can be programmed in .NET languages like C# and VB, rather than requiring a proprietary language like ActionScript. Even better, it does something that Flash does not do easily. Silverlight talks to data, and it does so without requiring an expensive server to make this possible.
When you are thinking about Silverlight, then, it is appropriate to think of a business application with a Flash-like front-end. This is what it promises, and the technology’s success will rise or fall on its ability to make this happen.
So if you believe in this promise with, say, 65% to 75% conviction, then you will want to learn Silverlight. There are currently about 5 articles worth reading about it, and they can all be found here. Most other tutorials you will find on the Internet simply deal with bits and pieces of this information, or else try to pull those bits and pieces together to write cool applications.
But after that, what? The best thing to do is to start writing applications of your own. No company is likely to give you a mandate to do this, so you will need to come up with your own project and start chipping away at it. The easiest path is to do try to copy things that have gone before, but with Silverlight, to see if it can be done. Many people are currently trying to write games that have already been written better in Flash. This is a great exercise, and an excellent way to get to know the storyboard element in XAML. It doesn’t really demonstrate any particular Silverlight capabilities, however. It’s pretty much just an "I can do it, too" sort of exercise.
A different route can be taken by rewriting an data aware application that is currently done in Winforms or ASP.NET AJAX, and seeing what happens when you do it in Silverlight instead. Not as cool as writing games, of course, but it has a bigger wallop in the long run. This will involve getting to know the various controls that are available for Silverlight and figuring out how to get data-binding working. (Personally, I’m going to start playing with various interactive fiction frameworks and see how far I can get with that. It’s a nice project for me in that it brings together both games programming (without fancy graphics) and data-aware applications.)
Finally, after getting through the various Microsoft materials and reading the various books from APress and Wrox and others that will come out shortly, where does one go to keep up with Silverlight techniques and best practices?