
Abdul Qabiz left a comment in one of my previous posts about using RIA to create a widget/component platform where we essentially enable "user-generated applications" as well as "user-generated content". This is an extreme of an architectural philosophy within the enterprise that I've been calling "Experience Oriented Architecture", and Abdul's comment prompted me to complete this blog-entry that I'd started penning some time ago.
Almost a year ago, I had the pleasure of speaking at the Bulter Group's Analyst Briefing on Service Oriented Architecture. Amongst enterprise vendors like Sun, Hewlett Packard, CapeClear, the one question I kept getting asked on our stand in the exhibition hall was, "...what are Adobe doing at an SOA event ? " The surprise stems from the expectation that SOA is a technology-led initiative - however what I presented was how Adobe has the SOA technology in LiveCycle ES, but blends that with a heritage of understanding design, and the importance of design-thinking in creating creative and innovative products and services.
Experience Oriented Architecture
The talk I gave was called "Experience Oriented Architectures", and in the talk I aimed to address some of the reasons why multi-million dollar investments by organisations in service oriented architecture have failed to realise the anticipated returns. My thesis; that when any IT initiative is technology driven rather than user-driven, chance of failure is dramatically multiplied. A solution I proposed, was to start thinking about "Experience Oriented Architectures" as a means of putting the consumers of services front-and-center of an SOA initiative, rather than the services themselves. Or to paraphrase Alan Cooper, to free the asylum from the grip of the inmates.
I picked 3 drivers for an SOA initiative that are most cited as not delivering the anticipated ROI (Return on Investment):
- Re-use (by creating a well-exposed service-tier, one hopes that services will be re-used more readily)
- Business Agility (with a well-exposed suite of services, one hopes that others will be able to more rapidly deliver new products to market)
- Alignment of Business and IT functions (with the service-tier arguably the exposition of the underlying IT infrastructure to support business needs, it could be argued that an SOA initiative brings these groups to the same table, and offers the opportunity for an alignment that otherwise can fail to occur)
I thought a quote from Annrai O'Toole, the CEO of ClearCape, that appeared in the March 2007 edition of Information Age was apt here, "...unless you really understand what services you are going to create and why, there is no point in doing SOA. You must have a revolutionary approach."
A Revolutionary Approach - forget technology, what does the user need ?
I believe that a revolutionary approach is to recognise that focussing on a bottom-up technology driven approach to deciding what services an SOA platform should deliver, then putting in place all manner of incentive and governance to align business and IT and to drive service reuse and greater business agility is an upside-down-approach. Instead, we can turn this problem (and solve it) on it's head by thinking of driving out services from the experiences that the consumer, citizen, customer, call-center operative, manufacturer, or whomever the user is, expects from their transaction. I find this such an obviousism - that services are in service of the end user, and not vice versa.
Though we can be fascinated with identifying technology patterns, design patterns and architecture patterns, we are remiss not to recognise that there are patterns of engagement, patterns of behavior, user-experience patterns that once identified, self-identify not only the services that we may wish to consume consistently across our organisations, but the granularity of those services (another SOA challenge that much debate can circle around) and most importantly the manner through which these services should be consumed.
When we have user-experience patterns and fragments in an organisation, we create applications for which discoverability in one area of an application leads to expectations and easier understanding ("less cognitive dissonance") of other interactions in similar applications. When we create reusable components that match service interactions - form guides, bank account statement displays, auction results, worklists, etc - we have RIA experiences sitting upon SOA services, that are in service of creating an architecture of "experience fragments" that can be easily reused by application developers. Achieve reuse of the user-experience, and not only do we create more consistent experiences for end-users, not only do we accelerate the development of user-experiences within an organisation, but implicitly we achieve the re-use of services, the agility in being able to rapidly create new solutions upon those services, and we align business and IT not through governance, but through the shared responsibility of being in service of the end user.
Create Platforms not Application + User Generated Content --> User Generated Applications
In the consumer marketplace, we're already seeing where organisations create platforms, expose widgets/applications upon these platforms, and create an "architecture of participation" whereby end-users can create "mashup" applications that sit upon the platform. Think of what Salesforce.com are doing with TheForce.com toolkit for Adobe AIR and Flex. Think of Intuit's cloud-computing platform that is based on Flex and QuickBase. Think about eBay's Flex SDK for creating applications that sit upon the eBay platform.
I think these are all tremendous examples of where creating a platform, but then creating the user-experience around which an architecture of participation upon that platform can emerge, is a powerful enterprise architecture trend.
Rich Internet Applications (RIA) combined with Service Oriented Architecture (SOA) = Experience Oriented Architecture (XOA).
What are your thoughts ?
Is this a pattern that describes the kind of architectures that you are creating in your organisation ? Are you seeing this trend in consumer-facing applications only, or are you seeing these trends of building experience-oriented platforms and reusing UI plus services in your enterprise organisation as well ? Are you perhaps working for a company creating a business model upon someone else's platform ? Is there an opportunity for you to monetise the creation of UI services upon someone else's platform - is this an opportunity for innovation where you can commoditise someone else's platform by providing value added services upon their platform (that perhaps you can interchange easily with the services of another platform) ? Or do you think that you're more likely to embrace a platform if instead of having to invest your induction in learning the service API calls, there was instead a lower barrier to entry by reusing user-experience components that are built upon those underlying services ?
As always, I'd appreciate your comments and thoughts.
