SOA is one of those terms i am hesitant about using. The main reason being because it is such an obvious technical style to use for certain integration initiatives. And it's so easy to fail in matters of style, especially when it is being over hyped by software vendors to an stunning degree. SOA is a strategic discipline in the area of Enterprise Architecture to gradually transform the application landscape in such a way they can be used as simple building blocks for purposes of interoperability and assembly. Being such a discipline it requires a well-balanced approach of vision, business analysis, audience, methodology and management. Just like large scale integration projects require.
Now, besides the reluctance of stating the obvious, or 'kicking in an open door' as it's called in Holland, what abhors me is the incredible self-fulfilling marketing hype around SOA especially when it comes to web services. As if using a search engine which returns results based on popularity and sponsorship, a 'free internet encyclopedia' infested with Astroturfing, on-line applications cycling through a stage of perpetual beta, as if all this isn't enough, there seems to be a large misconception at the CxO level confusing the market-driven enterprise with the marketing-driven enterprise..
I find it mind-boggling how interwoven the hypnotizing kaleidoscope of marketing and advertising has become in an industry where opinion was second to scientific honesty and how it has been taking over an evolutionary movement equal to the introduction and acceptance of databases. Old man Dijkstra would not have been amused.. it reminds me of a story of his where business people objected one of his computer designs because in their perception he had, kind of, been cheating because he had the freedom to choose smart people to work with.. which seems to get to the mis-conceptual core as 'user-friendliness' suffers from. Biased information is bombarded onto us in such large amounts we start believing it, we start many things anew whereas talking with a 50 or 60 year old engineer will teach you some amazing stuff from the times when computers and languages were custom-built, the same thing of which we are more than capable of nowadays but just don't see or allocate time for, because we must keep up with the flow, the endless propagation of what is now and new.
On the other hand, this widespread tendency to take credit on the future has caused a large and reasonably well-defined movement in moving away from isolated monolithic applications towards.. towards what ? Towards another uber-monolithic clutter of ill-defined web service spaghetti ? Towards high-performing lego-style applications with well-defined interfaces for business functions ? Considering economical path dependence and the evolutionary aspect of acceptance of technological innovations, the large majority of initiatives will end up with spaghetti, spaghettini and spaghettoni, which may be more than fine for the issues addressed, but please don't call it SOA. Select a project that is challenging and worthwhile from both business and technology and just start applying SOA as a discipline. Use email, message queues, web services, ftp stations, database level ETL, paperware, whatever, just build an integrated solution and do it architecturally elegant.
Wittgenstein, that nice and logical buddhist from Austria, had this nice dictum, 'Whereof one cannot speak, thereof one must be silent'. Don't talk about SOA, just do it.