The prevalent software development paradigm today is to define a universally agreed data model and have applications code to it. It isn’t too bad of a paradigm; afterall applications need a shared language to make it easier to coordinate. So, it’s completely natural to subscribe to this. However, one needs to wonder, why a paradigm that makes so much sense tend to fail so often in practice?
Conway Way’s Law states that the structure of systems tend to reflect the organization that creates it. I was introduced to the concept when Jim Complien described the law and its impact to software development process in “Process Pattern Language“. Conway’s Law implies that despite a well thought out logical plan, the structure of a system will always tend to reflect the structure of your organization and as almost everyone has experienced an organizations stucture is greatly influenced by the politics of its members.
Thus attaining universal aggreement in a data model is a task of futility. The different organizations tasked with implementing universal compliance will fight tooth and nail to maintain their fiefdoms. The economic model employed by most IT organizations is best modeled after economic model found in the medieval ages. In the end, multi-year enterprise wide integration projects fail and the “stove pipe” survives and continues as a lasting testament of the supremacy of fiefdoms.
In short, universal disagreement is something you’ve got to live with. Recently, there’s been a bit of activity to explore the question “What if schemas didn’t exist?”. Elliotte Rusty Harold proposes a more forgiving approach to schemas. Martin Fowler makes a few baby steps towards understanding this in “Multiple Canonical Models”. Roger Costello proposed the use of ontologies to move to a schemaless web.
Schemas are useful if you do have agreement, in the absence of agreement what then are the effective practices to achieve interoperability? It’s a question that I’m still strugling to find a glimpse of understanding.