Can Design Thinking Improve Programming? II Exploring Means to Grow a Shared Vocabulary Between Programmers and Domain Experts

Professor Dr. Robert Hirschfeld


Software engineering is a multi-disciplinary profession that involves not only programmers but also domain experts, which benefits from a shared vocabulary for knowledge exchange. Especially in the domain of data exploration, the co-creation of software benefits from materialized artifacts that capture an agreement on terms while remaining comprehensive to all parties. Hence, both source-code artifacts and natural-language artifacts are constantly shaped in a process of learning, recalling, and accepting. We observed that there is always some notion of accepted ambiguity of words and that domain experts express concepts rather declaratively after observing real data in depth. However even in live, object- oriented programming systems, which are usually a good fit for co-creation, there is no inherent support for ambiguity in code or declarative classifications of existing objects. Therefore, we want to research two new concepts to improve communication between programmers and domain experts: 1) a notion of ambiguity for object message sending and 2) declarative classifications with automatic management of representatives. In result, the overall software quality will be higher because domain- specific rules can directly be expressed and verified in source code. We think that the relevant portion of software will remain understandable and changeable largely by domain experts.