Part 2. Translator's role
Yesterday I finished a first cut of a very interesting transformation between two repositories. They both represent very conceptually similar creatures - but they also far enough, so pure mechanical transformation is just not possible.
While trying to marry these two repositories, something came to my mind - it is fare to compare my task to the role of a translator! I am doing exactly the same job - reading a set of text in one language, trying to understand it to the best of my knowledge, and putting everything I understood into words of another language.
But how can I validate that "the best of my knowledge" matches the reality? And also how do I judge my work and don't fall into classical foreign literature trap, described by the quote from a Russian poet Yevganiy Evtushenko: "Translation is like a woman. If it is beautiful, it is not faithful. If it is faithful, it is most certainly not beautiful."
The only answer I was able to come also is from the linguistic realm:
- for each system involved in the migration we need to build it's own Webster Dictionary and Thesaurus. It will allow to explicitly define all involved elements and valid constructs. Also it will clarify links between different core elements on the system.
- based on those separate dictionaries we now can build a SystemA/SystemB dictionary where we can describe how elements are matching. This dictionary allows formalization of our business logic. Otherwise how do we know that, for example "form" in SystemB means "panel" in SystemA, while "form" in SystemA is closer to a "dialog" in the SystemB?