Today's NY Times declares (ever so quietly) the beginning of the Netware wars (did I just coin that term?). They get a lot wrong in the article, but if you know more than they appear to, you can conclude that Silverlight and Air/Flex will be competing for the hearts and minds of the same developers. For some developers, that is certainly true.
Moreover, many will be facing a strategic choice in coming months (we've seen this movie: DOS vs. CP/M, Windows Vs. Unix vs. OS2, and on and on). This is a choice that the Evangelists at Microsoft are well equipped to help you make (as, I suspect, are the evangelists at Adobe and at IWannaPlayToo, Inc.) But even though I was shocked and dismayed to see that Microsoft's computerized career planner has me on their Evangelism track I am not an Evangelist. Never was, don't think I will be.
I spent the last 15 years of my life doing three things: developing applications, writing books and teaching. I was hired into the Development Division and I don't Evangelize (at least not on purpose). I'm actually pretty useless at telling you why Silverlight is a better choice because I take it as given and self-evident.
Worse (much much worse) I don't really care which you choose (gasp!) except in terms of keeping myself employed, selling books and for other entirely selfish reasons. Some of the people I respect and like most built one of the flagship AIR programs, and seemed to have a good time doing it, so I figure Flex can't be the Devil's work. But I have no desire to be a Flex programmer (and I secretly believe, though they have not said so, that if Silverlight 2 were available when they started, they would have used that; of course they would, at least some of them were already .NET programmers. But I speak for myself, not them. I certainly would have, that's for sure).
The bottom line is that I suspect that there is merit to both technologies, though I can't quite imagine why anyone would choose to develop in Flex now that Silverlight 2 is (almost) available, when Silverlight is part of a product line that runs from ASP.NET, through Ajax, to WPF and one that includes SQL Server and Visual Studio, all with one 800 number to call; as a developer I always preferred to have a single vendor so that they could never say 'oh the problem is that other guy's stuff isn't working' — but truly I digress because that is just my preference. That is not a compelling argument. It's not an argument at all; it is a personal preference.
The point is that my work starts after you choose Silverlight. I'm happy to tell you why Silverlight floats my boat, and why I gave up 12 years as an independent contractor to come to work for the evil empire (oops) specifically to be the Silverlight Geek (the order of operations here, the cause and effect, is important; I came to Microsoft for Silverlight, rather than I like Silverlight because I work for Microsoft).
My job (and my fun) is to help build a place that has whatever it takes for developers to learn and use Silverlight (please see my next posting on what I'll be doing once Silverlight 2 is here), and to write cool Silverlight stuff, and to ensure that Silverlight.net is the single best resource for Silverlight developers on the Internet so that the people who hired me think "whoa! this guy offers something valuable to developers, let's pay him more," so that I can pay my kids' tuition (do you have any idea how much tuition is, and they promise, when you take early admission to make sure you can afford it, by which they mean, they'll look at your W2 and say "Yup, you can afford it.")
So, its okay with me that people call me an Evangelist, as long as they don't expect me to do much evangelizing. Here's what I know: about 10 years ago I received two emails in response to something I wrote about pointers (remember pointers?) in C++ (remember C++?). The first said something like "I've never understood this until you explained it. You made it so clear, I'm so grateful…" The second said "I don't know what it is you actually do for a living but it isn't writing and it isn't programming because you obviously don't know how to do either." I hung them both up. Not much has changed.
Now I write about and program in Silverlight. I'm still not sure how to do either, but I'll be doing 'em right here.