Somewhat like a fish out of water, I wound my way to Bentley University for Flex Camp Boston today (or should i say "slid" my way due to the ice storm). Of course Adobe is a primary competitor of Microsoft, but at the same time it was great to see some former colleagues from Sybase, including Adobe evangelist Christophe Coenraets, who was one of the presenters.
So why was I there ostensibly infiltrating the enemy?! Well, the way I look at it, we each have the same goals -- advance the state of the practice in software development while enabling software developers to be more productive. Beyond that though, it's sometimes hard to separate the fact from the FUD. Though I don't claim Missouri as my home, I'm a "show me" kind of guy, so what better way to get unadulterated information than to see how Adobe is presenting their own tools to their customer base and to find out what Adobe sees as the primary pain points within their own developer community?
As a disclaimer, I'm definitely not a Flex/Flash developer, and really my only hands-on experience is a two day course last month focused on comparing and contrasting Adobe's approach to RIA with our own. Perhaps not having that (sometimes emotional) attachment to a toolset allows me to see things at a higher level though? In that vein, I was really struck more by similarities than by differences.
Unfortunately, I missed the most of the overview of Catalyst and Gumbo (Flex 4), the next generation of products designed to bring the developer and designer into the same application development workflow.... hmm, sound a bit like Visual Studio and Expression Blend today? Flex actually already has declarative markup (mxml) ala XAML, although it doesn't go as deep as XAML in terms of handling every UI element.
How about unit testing - a topic near and dear to my colleague's, Chris Bowen's, heart? While it was good to see Adobe beating the drum of how important unit testing is, I was struck by how much we take for granted in Visual Studio in terms of support for unit testing, especially with respect to integration in the development environment. It's not that unit testing in Flex is any harder than it is with .NET, it just seems the pieces you have to pull together - FLUint for testing, FlexCover for code coverage - are each separate. FlexCover even requires special modifications to the Flex SDK. And when you look at where Microsoft is going with tools like Pex (which Chris talks about during our current Roadshow), I really do feel we have an incredibly compelling story for this important aspect of enterprise software development.
Data services seems to strike another major chord with the Adobe development community. Adobe's offering in this arena is LiveCycle Data Service (LCDS), but if hands raised here were any indication of adoption rate, it's not something yet in wide-spread usage. Christophe presented a glimpse into LCDS "next" and model driven development, and I have to say much of it bears a striking similarity to what I've been demoing for a few months with ASP.NET Dynamic Data - the ability to create a data model and extend it with custom properties, validation criteria, etc. It's all great stuff, but seems like .NET developers have it today with Linq to SQL and Entity Framework (with a visual designer to boot!).
While the day certainly made me feel good about the value and return on investment that Visual Studio provides its users today, it's also clear that Adobe is right there as well and certainly catering to the same needs and desires within their audience. Fun times!