I took a long weekend, so this was my first chance to post even a re-run.
It’s a bit dated, (it ran in 2002) what with its references to web services, but substitute SOA for web services and it holds up pretty well.
At least, I think it does. But you’ll have to be the judge.
– Bob
# # #
Long before ManagementSpeak graced these pages, Mad Magazine had mastered the art of translation. My favorite:
What they say: It isn’t the money. It’s the principle of the thing.
What they mean: It’s the money.
To run IT, you need both money and principles, of course. Among the core principles for running a typical IT organization:
> Buy when you can, build when you have to.
> Minimize data redundancy.
> Maximize software re-use.
> Pick two.
If you buy when you can and build when you have to, you’ll use applications from more than one software vendor, your databases will be tied to your applications, and you’ll have redundant data. On the other hand, most vendors now write to an n-tier software architecture, which means you can get at the underlying logic, so you achieve software re-use.
Want to minimize data redundancy or maximize software re-use? Build everything yourself, or at least everything you can’t get from your primary ERP vendor. You’ll have full control over your code, too which gives you a fighting chance at re-use. Too bad you can’t afford either the budget or time to choose this option.
Web services promises to eliminate these trade-offs. The use of components instead of full-blown objects means logic is easily accessible while data is still defined separately, and the use of HTTP and XML means vendors can write general-purpose components and make money by renting them out. That means (blare of trumpets!) you’ll easily assemble enterprise applications out of commercially available components from all over the world.
It won’t happen — not because of technological obstacles, but because an enterprise application is more than a collection of general-purpose utility routines.
Software is an opinion about how a business should run. It’s expressed in code rather than English, but its an opinion nonetheless, so when you buy software from multiple vendors you’re buying differing opinions. Interfaces are where they clash. To state the obvious: Technology can’t resolve a difference of opinion.
Imagine you’re a retailer. Web services can solve some irritating problems for you, like managing the sales tax logic in multiple states, so as CTO you decide to adopt the architecture to run your whole business.
That’s when you discover: The different vendors from whom you’re going to rent components disagree on some very fundamental issues, such as how to define “customer.” One considers “customer” to be an individual. For a second it’s a household. A third, oriented toward hardware stores, perhaps, remembers that building contractors buy a lot of stuff and use a definition that includes companies and everyone in the company authorized to make a purchase.
Think you’ll just ship customer data into and out of components from all three vendors with impunity?
Think again.
The grand vision of Web services is that easy integration of independently engineered components will happen by just connecting them together like Tinkertoys. The reality: Integration is hard, even when designed into an application.
It won’t happen by accident, grand visions notwithstanding.
I have been a reader for many years – and I have probably read this:
“Software is an opinion about how a business should run”
But today it strikes me with the force of an important revelation.
Wittgenstein wrote in a very different context but with revelatory intent: “… a cloud of philosophy condensed into a drop of grammar”
I am trying to come up with a transliteration into this context: a cloud of vendor-speak condensed into a drop of reality …? that’s as good as I can do…
But I will think long and hard about it as I am a humble in-house developer STILL trying to justify to all my detractors a “build” instead of “buy” decision 15 years ago.
Thanks