Recently in RIA Consulting Category

RIA + SOA = XOA (Experience Oriented Architecture)

| 7 Comments

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.

Adobe Consulting needs U(X) and U(Tech)

| No Comments

My subject lines get worse.

So I'm going to wait until after MAX Barcelona before I post any summary of the MAX conferences - and I'm taking a week off after Barcelona to recover! But suffice to say, it's incredibly fun times right now, and MAX Chicago was testament to the cutting edge we're all slicing and dicing with right now!

But before I head over to Spain, I wanted to draw attention to a blog post that my colleague Simon Smith has made. Simon is one of my partners in crime at Adobe Consulting, leading our User Experience practice on a global basis. One of the most exciting things for me joining Macromedia and then Adobe, was the opportunity to work alongside such a great bunch of critical thinkers, information architects and user-experience designers on our consulting projects. As well as my own team hiring in the technology practice, Simon's team have jobs open on a worldwide basis - check his Designers Wanted blog post and then drop us an email, or come and say hi to me in the weeks ahead.

Likewise, if you want to cut code on "either side of the glass" with Adobe Consulting in the technology practice that I lead, then I'd personally like to hear from you as well. We're definitely at an inflection point in the industry, and if you have what it takes to take us to the next one then you know where to find me.

More Adobe Consulting Jobs in APAC!

| 3 Comments

I promise I'll have more to post in 2007 than "we're hiring" - but when I posted about us hiring in Europe, a number of you in the Asia Pacific region enquired as to whether we'd be hiring in other regions as well. And we are - we're hiring an engagement manager, a couple of senior consultants (whether your expertise is client-side or server-side application development) and a senior user experience consultant for the APAC UX (User Experience) practice.

If you're interested in finding out more about these roles, or applying for them, then the people you need to contact are Mark Ginsburg or Joseph Wong. Both can be contacted by email with the first letter of their first name then their surname (all one word), at adobe.com.

Please let them know I sent you!

Patterns in Technology and Design

| 2 Comments

One of the things that has most excited me about Rich Internet Applications in particular, has been the way in which it has created a space where great Design and great technology come together to create great solutions.  Some people are fortunate to have talent in both areas – I’ve always had to settle for an affinity to the compiler rather than the canvas.  Working within Adobe Consulting has been a great opportunity to blend a  passion for technology, and a passion for the way that technology can revolutionise business,  with a collective of people who have the same passion and beliefs that Design can do the same thing, creating user-experiences that are useful, usable and desirable.

Tom Peters , a reknowned and innovative management guru , defines Design as “the ‘soul’ of the new enterprise” in his highly recommended read, “Re-imagine!”.   If you’ve been evangelising about Rich Internet Applications, it’s hard not to have empathy with the following quote from Peters, “Design has become a professional obsession.  I simply believe that design – per se – is the principle reason for emotional attachment (or detachment) relative to a product or service or experience”.   I’ve recently done a number of customer visits and  presentations with Simon Smith, our worldwide practice leader in Adobe Consulting for User Experience,  who throws a great quote up in his presentations, also from Peters, that Design “..should be on the agenda of every meeting, in every department, throughout the Enterprise”.

Is design on your agenda ?  Within Adobe Consulting, whether someone is a Project Manager, a LiveCycle specialist, a Rich Internet Application specialist, a Mobile application developer or an Engagement Manager, they are immersed in the importance of Design.  Through Adobe Consulting University – an ongoing learning program for our consultants – Design is placed on everyone’s agenda, as being as critical to the success of a solution delivery as the technologies which underpin it.  The fusion of great design and great technology is an online experience that exhibits breathtaking utility.

Design Patterns

I’ve written and spoken at length within the RIA community, around the topic of design patterns.  However, the idea of capturing design ideas as a pattern is attributed to the American architect, Christopher Alexander.

Christopher Alexander, a professor-emiritus at the University of California, Berkeley, co-authored “A Pattern Language: Towns, Buildings, Construction”, a book which almost 30 years on is still reputed to be one of the best-selling books on architecture.  In the book, Alexander first coined the idea of a “pattern language” derived from traditional architecture, which documented over 250 patterns that adhered to best-practices and thinking, while still affording the architect the creative freedom to adapt them to a particular context or situation.  By way of example, the “Arcade Pattern” is described as follows – “"Arcades - covered walkways at the edge of buildings, which are partly inside, partly outside-play a vital role in the way that people interact with buildings”.    This is then followed by a description of the pattern,  cross-reference to smaller component patterns such as columns, and larger patterns within which an Arcade has context. 

This logic and structure of this book was the inspiration for the software engineering text, “Design Patterns”, by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, known affectionately as the “Gang of Four” or “GoF”. 

In software engineering, a design pattern is considered as a general and repeatable solution to a commonly occuring problem in software design.  The Gang of Four thinking became widespread, leading to a number of works including the one which had some of the greatest influence on my own software architecture thinking, “Core J2EE Patterns” by Deepak Alur, John Crupi and Dan Malks.  Many of the Core J2EE Patterns were to provide the basis of the Cairngorm Microarchitecture, which we advocate within Adobe Consulting as a consideration for the underlying software architecture in an Enterprise RIA.

Design Patterns in Architecture and Software Engineering … so what about in User Experience Design ?

The idea that there are recurring challenges for which tried and tested solutions exist, solutions which document approaches to the problem resolution while still affording freedom in implementation, always seemed to make sense to me as being equally applicable to user-experience design.  It has always struck me the Accordion Form in Flex for instance, represents a User Experience pattern with forces of “the user must be presented with multiple pages of form data to complete, but like a real-world form it is expected that quick and random access to the form is required.  Furthermore, though the form is logically sectioned, the order of completion of these sections is not necessarily logical.  The Accordion Form offers a means of rendering the form section by section, with sections accessed in an order determined by the user, affording random-access and rapid-access without the need to step through pages”.  I’m sure someone could come up with a more general and eloquent expression of the pattern here, but the concept makes sense to me.

At the beginning of the year, I picked up Jenifer Tidwells book “Designing Interfaces” from O’Reilly.  In this book, Tidwell expresses interface and interaction design as a pattern language, in the same way as Alexander, the Gang of Four, or Alur et al before her.   The patterns are drawn from desktop applications, web sites, web applications and mobile devices.  In the same way that other pattern catalogues have tried to structure and group their patterns, Tidwell categorises patterns as “Content Organisation Patterns”, “Getting Around” patterns, “Commands and Actions”, “Showing Complex Data” and more.  The pattern catalogue is online at http:///www.designinginterfaces.com/ and I’d highly recommend browsing the site for some insight.

Pattern Fever

When I presented this idea to some of my user-experience colleagues, it was interesting to hear that while such efforts are valuable, they create a risk that the patterns  be seen as the essence of a good user-experience, rather than the understanding of where and how these patterns should be used, of the fine-line between prescription and free-will, of the responsibility to learn from experience and stand on the shoulders of giants while still having the courage for creativity steeped in a solid understanding of why some things work and why other things don’t.

 My balance in talent towards the compiler and away from the canvas is not going to go away because I create an online banking RIA that leverages the “Card Stack” pattern for my different accounts, in “Movable Panels”, with “Diagonal Balance”, “Multi-Level Undo” and “Smart Menus Item”. 

Frankenstein’s Monster, yes.  Frank Gehry’s Guggenheim ?  I don’t think so.

And that creates an interesting parallel track in the architecture, software and design pattern movements;  that similar criticism can be drawn irrespective of problem domain.

I recently posted an article to my blog, “Why I think you shouldn’t use Cairngorm”, that attempted to provide early warning signals to developers that they were perhaps getting a little too pattern happy too quickly, and blindly applying the patterns that Cairngorm provides, without understanding the contexts in which they do and don’t make sense.  In his essay, “Revenge of the Nerds”,  Paul Graham writes “This practice is not only common, but institutionalized. For example, in the OO world you hear a good deal about "patterns". I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough— often that I'm generating by hand the expansions of some macro that I need to write”.  Now unsurprisingly to many of you I’m sure, I don’t agree that a pattern is always a sign of trouble – however, whenever I am reviewing code, the over-sprinkling of Factories, AbstractFactories, Decorators and Observers can often be a bad code-smell, that whiffs of a developer who has abdicated responsibility to design, in the belief that the patterns have it all covered.  In Cairngorm, the View Helper as a catch-all for any logic that doesn’t go in a Command or Business Delegate became a classic bad-code smell for us.

Other than Christopher Alexander’s own projects, those that employed his patterns met with mixed response from other architects and critics, leading Alexander himself to believe that patterns themselves were not sufficient in their own right; in a subsequent text called “The Nature of Order”, Alexander talks about the need to understand the way in which an environment self-forms, something he called a “morphogenetic” understanding.  In essence, this is a recognition that blind application of patterns is not a recipe for success; but rather the patterns are tried and tested ingredients, many of which work consistently well with each other, but rarely create a delicacy unlesss under the guidance of an experienced chef who understands the broader context of what makes a good dish.

If I can return back to the concept of user-experience design patterns, we can recognise that neither is arming someone with a pocketful of User Experience patterns the recipe for an effective user-experience.   The “Multiple Document Interface”  is often misused, where there is a lack of information about the currently opened windows, and there is no relative context of what is on-screen in relation to the task that the user is undertaking.  To quote our User Experience practice, “when everything is equal, nothing is important”. 

If you instead consider something like the user-experience in Breeze – itself a Rich Internet Application that has had much user-driven design-thinking applied – you will have experienced how the fluidity of the user-experience is capitalised upon, with areas of the screen expanding in size and importance according to the current task of the current user.  When you are presenting, the presentation window will grow in prevalence, shrinking in importance at the end of a presentation as the application is moved into a chat mode, and the discussion panel increases in relevance and real-estate.   A naïve implementation may have made all of these windows overlapping, resizable, draggable, dockable, collapsible, minimisable and maximisable windows.  However, this underlying principle of “when everything is important, nothing is” provides a higher-level of understanding and meaning.  This understanding of the environment and the way in which citizens operate within the environment, brings the same nature of order to a user-experience as Alexander describes – whereas blind application of say the “MDI Pattern” or the “Tabbed Pane Pattern” would create a user-experience that while perhaps technically clever, or aesthetically pleasing, fails to match the needs of the people who must use it from day to day.

Summary

So whether we are planning towns and precints, whether we are architecting our software applications for scalability and maintainability, or whether we are designing great user-experiences, we can count on patterns, but none too much.  Striking a balance between established wisdom, insight into the context and environment of our solutions, and the right to apply our own creativity and ingenuity to innovatively solve problems, are important lessons from both a technical and a Design perspective, and the path to a successful solution, whether it be a building, a software architecture or a great user-experience.

I recently read “The Ten Faces of Innovation” by Tom Kelley of IDEO, who defines 10 personas we can all adopt when trying to heighten creativity and deliver truly innovative solutions and services to our clients.  One of these personas, “The Cross Pollinator” is described as someone who can  create something new or better through the unexpected juxtaposition of seemingly unrelated ideas or concepts, taking clever solutions in one context and then translating them successful to another.  The role of the cross-pollinator is best captured in the book by a quote by Alexander Graham Bell, the inventor of the telephone only a few miles from our Adobe Consulting Edinburgh office: “Leave the beaten track occasionally and dive into the woods.  Every time you do so, you will be certain to find something that you have never seen before”.

With Design on my agenda, I’m finding there a number of interesting parallels between good Design and good software architecture; I’m curious as to what innovation lies beyond, and am curious as to the parallels that you may also have found.

About this Archive

This page is an archive of recent entries in the RIA Consulting category.

MAX2006 is the previous category.

User Experience Design is the next category.

Find recent content on the main index or look in the archives to find all content.