Are you familiar with the term “brown-bag presentation”? It is the idea of presenting some topic to a group of people for the purposes of professional development during a lunch hour. The term “brown bag” comes from the idea that people would bring their own lunch and would use their lunch hour to learn something new. I have also heard this referred to as a “pizza box”, since the group might order in pizza.
About this time last year I was prepared to be the presenter at a brown-bag at my former company. The topic was to be Silverlight 1.1 Alpha (which became Silverlight 2.0 beta). Then some major management changes occurred and the event was postponed. Then at the end of the month myself and about 12 other developers, over a third of the entire development group, were laid off.
About a week later I had a job at a new company (that I really like), but was thrown back into ASP.Net land after being able to do a lot of R&D work with technologies like Silverlight. I thought that perhaps a lot of the experience I had gained with go to waste.
So here I am a year later knee-deep in Silverlight 2. The technology has really matured over a year and we are researching whether to use it. Learning a new technology is always interesting, and can be more or less difficult for various reasons. Silverlight seems to be a steep learning curve for me even though I have extensive experience with WPF and worked with the early versions of Silverlight. Here are some of the reasons I think that is true:
- Its a brand-new technology for Microsoft. The idea of cross-browser “applet” is new to the company, and the level of documentation that might be devoted to something on the desktop (like WPF) is not present for Silverlight. Silverlight 1.0 was a very immature technology that was rushed to market. Silverlight 2.0 should have been their 1.0 product. As such, the learning curve for it is steep.
- Its just close enough to WPF, yet just different enough from WPF, to really confuse me.
- While there are a lot of blog entries, articles, and technical references available for Silverlight on the internet they cover Silverlight 1.0, 1.1, various 2.0 betas, and the 2.0 release. Silverlight 1.0 is completely different than 2.0. It is such a radical change that they could have almost renamed the product. This old documentation is often not labeled by version, and is almost always inaccurate to the current 2.0 code-base.
- There doesn’t seem to be any best practices for Silverlight. It is still the wild west in Silverlight development.
- The core functionality is present in Silverlight, but a lot stuff that would be very convenient are missing or difficult to accomplish. I have already found myself writing a lot of custom code.
Still, Silverlight is a significant step up from Javascript + CSS + DOM + ASP.Net. There is obvious eye-candy that can be accomplished in Silverlight that is simply impossible in HTML. There are also a number of tasks that become much simpler. One can revert to a more desktop-like programming model when using Silverlight. Programming with statefulness is much easier. And programming with strong, managed types means that I can develop functionality more quickly.
All in all I am very happy with Silverlight 2.0 so far. My hope is that we will use it on one of our new projects here at work.
