Back in the 1980s, object-oriented programming was a state of mind, not the state of the art. Sure, there were OO languages, tools, and frameworks -- such as Lisp and Smalltalk -- but mainstream developers didn’t use them. Mainstream developers worked mostly in C.
The best of those developers, however, figured out how to apply an OO mindset to their use of C. I was lucky enough to have worked with a few of these wizards. From them I learned everything I know about interfaces, abstraction, composition, and dynamic behavior.
These days, the Java and .Net environments embody the kinds of best programming practices the mastery of which formerly required superhuman discipline. Wizards with long memories can’t help but wonder why it’s taken so long. In forums and blogs devoted to programming technologies, they’re always pointing out -- correctly -- that much of what seems to be modern innovation is, in fact, rediscovery of those ur-languages, Lisp and Smalltalk. But progress in the art and science of software development isn’t a stepladder, it’s a spiral staircase.
Today, service-oriented software development is likewise a state of mind, rather than the state of the art. Now that our object-oriented kits give us the power to model data and behavior in the realm of IT, the higher goal is swimming into view. We envision service-oriented kits that we’ll use to model the business processes supported by -- or more accurately, embodied in -- our IT infrastructure.
If history is a useful guide, there are a couple of important questions we ought to be asking. First, who are the modern counterparts to the OO do-it-yourselfers of yesteryear? Jim Culbert is one example. As CTO of MetraTech, he modeled that company’s billing services using SGML because XML hadn’t yet arrived on the scene, never mind SOAP, WSDL, and WS-*.
Harvard Medical School CIO John Halamka is another example. His software model of the financial and clinical processes enacted by New England physicians, hospitals, and insurers also predates our current SOA technologies.
These two pragmatic visionaries prove that SOA is above all an intellectual style, a way of thinking about IT services as the direct expression of business services. This is a rare talent, but one that doubtless exists to some degree in your enterprise. I suggest that you seek it out, nurture it, and reward it. The technical skill that matters most, going forward, may not reside in the most obvious places.
The right mindset won’t easily scale, of course, until you latch onto the languages, tools, and frameworks to support it. True, extraordinary things can be accomplished with extraordinary vision, foresight, and discipline. But most of us require some extra leverage to routinely achieve what’s possible.
So here’s the second question: In the realm of service-oriented design and business-process modeling, what are the modern counterparts to Lisp and Smalltalk? Maybe when we look back on the present moment, we’ll wish that we’d paid closer attention to rules engines, workflow designers, and business-process modelers. Maybe the graybeards of 2020 will heave collective sighs as we rediscover what they always knew.
If existing tools can do more than we realize, we could spare ourselves a bit of grief. But probably not a lot. Translating ways of thinking into ways of doing always takes longer than we predict.