Note: This is a repost of a piece I published in October, 2007 that got a lot of attention. The primary content is the same, I've only updated certain portions of post to make them temporally accurate.
I've been talking with a lot of customers lately about Silverlight. It seems that the bug is catching, but, like the "brooding Dane" of Shakespeare's Hamlet, there is a lot of hesitancy and consternation about the when, how and why of introducing Silverlight into your development lifecycle. Because I've been fortunate enough to engage in so many of these conversations, I'd like to share my thoughts on how you and your company can begin using Silverlight today in a way that makes sense for most of us.
Don't Try to "Boil the Ocean"
There's an old saying of which I'm very fond: "If you have a hammer, then everything looks like a nail."
It is human nature to resist chance. It is also human nature, once it is accepted that a change is going to happen, to run full-long in the new direction and try to never look back. As technologists, we do this all the time. Think about the last Big Thing you learned and how the old stuff you spent thousands of hours learning and perfecting suddenly became "crap" and you wanted it gone from your sight (or "site," whatever the case may be). This seems to be the way most organizations approach new technology.
I don't know how many times I've heard the comment, "I'd love to start using Windows Communication Foundation, but I can't throw away all my old ASMX web services."
My answer: "Well, who said you have to?!?"
Of course, you've been using Flash for your rich Internet applications (RIAs) in the past -- that was the best technology in the market for delivering rich content over the web. If you like Silverlight and want to begin using it, is anyone expecting you to throw all that away and replace it all with Silverlight? Don't be daft. Of course not.
What you can do is begin implementing Silverlight applications into your web site where they make the most sense, i.e where you can leverage Silverlight's strengths. In Silverlight 1.0, this is streaming media. If you have flash applications that are streaming videos or other rich media into the browser, consider replacing existing or doing new applications in Silverlight. Leverage the powerful XAML rendering engine and the full support for HD built into the Silverlight plug-in. This will allow you to get your feet wet with the object programming model of Silverlight and the current tool set.
And speaking of tools, the same approach can be suggested for the Expression Suite. Do we expect you to throw out the Adobe tools you've used for the past decade and start using Expression Blend and Design for everything? Don't be daft. Of course not.
Instead, consider using Adobe Illustrator, Photoshop, etc. to build the elements of your UI design, and then use Expression Design to convert these elements into XAML and Blend to take all the XAML and get it to work in the software UI the way you want it to.
The point is, don't assume that using Silverlight or the Expression Suite means the wholesale discarding of everything you've ever used. Silverlight and Expression Suite are more tools for your software development toolbox. Find the right project and use Silverlight to help you build a great user experience in little time. That is, after all, what software is all about, right?
Don't Fall Into the "Version 3" Trap
It wasn't so long ago that I was a Microsoft customer and often found myself saying, "That looks cool, but I'll wait until version 3. That's when Microsoft will get it right." And then I would laugh and internally compliment myself for my great cleverness. I have come to the conclusion that I might have been missing the boat on being able to take advantage of a lot great features because of this prejudice.
The fact of the matter is that this perception should not be unique to Microsoft products. Any software development process is a just that: A process. An idea becomes version one of the product, the first attempt to make the vision a reality. In the past, this might have meant that the product wasn't very good, but development methodologies, process and the tool sets for building software have made it so that v1 products can be solid, dependable and secure right out of the gate. With this kind of solid foundation, the subsequent versions of the product can and will only get better.
Don't look at Silverlight and Expression Suite in the same light as Windows or Office when they were first released. Look at them for what they are: Software products that have been built in the modern age, with the same (if not better) state of the art tools, methodologies and quality assurance checkpoints you're using to build software for your business.
I'll go out on a limb here and say that Expression Blend is perhaps the best piece of v1 software I've ever used. No system drag, no crashes, only great performance. As a matter of fact, I've had the Blend 2.0 December CTP installed on my machine side-by-side with the released version 1.0 for two months and had no issues whatsoever. (The Blend 2.0 beta is now available for download, as announced at MIX '08 on earlier this week). The only thing that it's lacking is all the features of a product that's been in existence for 10+ years, and those will come with time.
Don't Discount Developer/Designer Collaboration
The story of software UI designers and developers is as old as the industry itself:
- Customer has an inspired idea
- Designer and customer create the user experience together.
- Designer passes the user experience concept off to the developer
- Developer doesn't come close to implementing the user experience concept
- Designer is disappointed and forced to compromise
- Customer is disappointed and forced to compromise
When someone asks me, "Why should I consider going with Silverlight when I already have Flash skills in house?" my answer to them is to ask another question: "What is the quality of your teams' experience in getting your Flash UIs to work with your underlying web applications and services?" This often causes some pause to think.
The fact is that, since designers and/or developers build the Silverlight application UI with XAML, they have full control over how the UI looks and, to a great degree, works. Rather than mocking-up the UI and leaving it to developers to try and replicate the mock-up, the designers actually get to create the UI and share it with developers, who then focus on what they do best, that being connecting the UI to underlying services and data, making the application "work."
This process and capability of this platform should not be discounted. The ability to make designers first-class citizens in the software development lifecycle is an innovation not yet achieved by an other platform.
If you're using Flash (or any other non-XAML-based technology for that matter) over top of your ASP.NET web applications or platform agnostic web services, you're feeling the pain caused by the lack of real collaboration between developers and designers. Silverlight and the Expression Suite address this problem by letting UI designers and developers focus on their core competencies and share the same project assets in ways that have not been seen before.
The Bottom Line
I'll grant you that Silverlight is a new technology. In recent history, this was reason enough to stay away from it and see what other people are able to do with it before you try it yourself.
The current state of tooling might very well help reinforce that notion. UI design in Blend can be done in alpha software only. If you want to build Silverlight in Visual Studio 2008, you need to install a separate set of tools to enable it. Everyone seems focused on Silverlight 2.0 which won't be released until later this year.
But so what.
Silverlight 1.0 is here now and is capable of supporting advanced web applications. If you doubt it, check out Microsoft Popfly, which is built using Silverlight 1.0. The tooling for building Silverlight application is still in development, but the available bits are very stable and reliable. In fact, I'm did a talk on designer/developer collaboration with Expression and Visual Studio 2008 at VSLive! Austin last November. I wouldn't have built a Silverlight 2.0 app live on stage if I weren't confident that both products were going to work together very well.
How do you get started? Find something that will bring your business value that is a strength in Silverlight and make that your first project. Make it simple -- don't try to take on the hardest possible task. Get your feet wet and learn while enjoying the benefits of what this incredible new platform has to offer. Then, as you're building application for the current version, watch for what you're going to be able to do in the next version (like the rest of us).
Wash. Rinse. Repeat.
, Expression Blend
, Expression Design
, Expression Studio