Recently I asked one of the architects on my project why it was taking twice the budgeted amount of time to get a user interface done. The answer contained the phrase "Impedance Mismatch." Having never heard this particular tech dork abomination of the language I pressed him for a definition so we could communicate effectively. As you may or may not know it is common for a senior level developer / architect, when cornered, to start spewing acronyms and buzz words in an attempt to daze the other party in the conversation long enough to escape.
The definition offered up was long winded and mostly fluff but it can be boiled down to the structure of the objects coming in from the UI don't exactly match the structure of the objects coming in from the data. Essentially square pegs, round holes. Note the official definition, I looked up after the conversation, of impedance has nothing to do with software. It is a term used to describe electrical resistance. Having written a bit of code myself I felt compelled to ask if in his vast and varied experiences of a career spanning Four years if he had ever written a system where every column of every table mapped in a 1 to 1 relationship with data on the user interface. Looking at me as if I were crazy he said "No that would never happen." Being unable to resist, my next question was "Then what lead you to believe it would happen this time?" Awkward silence ensued followed by uncomfortable fidgeting. After what seemed like an eternity, perhaps 5 - 7 seconds, I decided to break the silence and asked "What are we doing to fix this?"
The answer to this question is what has prompted me to add this entry. The suggested corrective action involved a description of why relational databases such as Oracle and SQL server don't really meet the needs of object oriented programming. Since the relationships between entities in the database may not exactly match the relationships between the objects in the domain model. Typically this is caused by a DBA doing their job and enforcing constraints on the developers to optimize database performance. One of the proposed solutions was to scrap the whole relational database and employ an object database. As fate would have it he had just the tool for the job - of course it was freeware and no commercial support was available. However, we could post a question on a blog if we had problems and they usually get responses "Pretty quick."
Being full of questions I found determining what to ask first difficult, but narrowed it down to something along these lines; "Your proposed resolution to the development delay is to scrap the enterprise database engine built and supported by the largest software company in the world, which we have already paid for, and the six months we have spent modeling the structure of over 400 tables, and move everything to a freeware engine you downloaded from sourceforge?" As the color left his face and before he could answer, I posed another question that just begged asking; "Where was this epiphany six months ago?" Again awkward silence and fidgeting.
I have come up with an explanation of Impedance Mismatch for business people. Impedance mismatch is a buck passing strategy, generally used when poor planning needs to be hidden.