SOA and SOE sound great. I love the goals, and I think that this approach may be able to accomplish them. In fact, I'm trying to adopt these philosophies myself and explore the benefits and drawbacks. However, instead of discussing if SOA is going to work, I've been wondering what happens when you do SOA half-assed.

That's right - what happens when you use SOA approaches but do them poorly, or without understanding? Now that you've quit reading, let me explain why I ask such a stupid question.

I see a lot of systems on client sites. I see a lot of systems designed and implemented by people who are still learning some of the basics of design and implementation. Most of these use try to use the current "industry standard" n-tier approach, and the vast majority of those end up with a failed attempt that I like to call "smeared-tier". Smeared-Tier is a three-tier design where the data layer has business logic, the business logic layer has calls to the physical database and exposes presentation data directly, and the presentation layer has business logic and data access functionality both baked in. You're probably lying or well isolated if you've never seen it. The thing about this is -- it still works

No, it's not a good approach. But smeared-tier gives some separation and allows some maintenance to occur. In fact, it's much better than the alternative monolithic (everything is in main approach that the same shops can and do use). So what happens when SOA is approached with the same throw-it-together attitude?

My fears are that all hell will break loose. The "SOA" system will become HTTP RPC with SOAP tacked on. Each service will be used by only one system, and many duplicate (or near-duplicate) services will be written -- "That service doesn't return zip code, so we have this service here..." Language or tool-set specific objects will be serialized as messages (when it's not just RPC) and so shared base types will be needed. Basically, we'll have distributed objects instead of services. Whole systems will be redone as smeared-tier when performance is completely unacceptable, and the vast majority of the industry will denounce SOA. (From my experience, the vast majority of the industry cannot handle OOP, n-tier, or even event-driven thinking, let alone leaping to messaging)

N-tier done wrong can still succeed (somewhat). Can SOA done wrong have the same level of miracle success? I really don't think it can. If it fails when the system is designed and constructed poorly will it force people to do it right, or will it cause them to not do it at all?