To design an effective software solution, we have to grasp at least the basic knowledge of the business domain. The knowledge belongs to domain experts as it’s their job in the first place, and it’s crucial for us to understand domain experts and to use the same business terminology they use. To be effective the software has to mimic the domain experts’ way of thinking about the problem and their mental model. without an understanding of the business problem and the reasoning behind the requirements, our solutions will be limited to “translating” business requirements to code. and what if the requirements miss a crucial edge case? or fail to describe a business concept, limiting our ability to implement a model that will support future requirements? Effective knowledge sharing between domain experts and software engineers requires effective communication, check lddd - communication