foreword to the first edition

 

Languages are a critical aspect of software development. They give us the vocabulary to express what a program should do. They force us to encode our requirements in precise and unambiguous terms. Lastly, they enable the sharing of knowledge between developers. No, I’m not talking about Java, Haskell, or PL/1. I’m talking about the languages we use to communicate from human to human, from developer to developer, or from end user to product manager. For a long time, the world of enterprise integration (or EAI, as it was commonly known in the “dark ages of integration”) lacked such a vocabulary. Each vendor offered a proprietary solution that not only failed to integrate at a technical level with other vendors’ offerings, but also used a different language to describe the main components and their functions. This caused confusion and was also a key inhibitor to creating a community of developers that could span the vast space of enterprise integration. Each “tribe” was essentially held hostage by the language bestowed upon them. Ironically, integration developers were faced with the same Tower of Babel problem that their software was designed to solve!