We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Language Games • Eli Holderness • GOTO 2024
Explore how language shapes software development through translation layers, domain modeling, and communication principles. Learn to build shared understanding effectively.
-
Communication is inherently complex due to translation layers between concepts in our heads and the signifiers we use to express them - we can never be certain others interpret things exactly as we intend
-
Context gives language meaning - shared understanding and context between communicating parties is crucial for effective communication
-
Domain-driven design helps bridge the gap between stakeholder concepts and computer implementation by building a shared language and understanding
-
Good communication requires following cooperative principles:
- Be informative but not excessive (quantity)
- Be truthful and accurate (truth)
- Stay relevant (relevance)
- Be clear and perspicuous (clarity)
-
When building software, multiple communication channels exist:
- Between stakeholders and developers
- Between developers and computers
- Between developers themselves
-
Code is a language game with rules - when we write software, we’re creating new “house rules” on top of base programming language rules
-
Translation layers cause expensive mistakes when stakeholder concepts don’t align with computer implementation - important to identify and resolve these misalignments early
-
Clean, well-documented code matters because it serves as a communication channel between developers
-
Effective communication requires empathy and understanding of your audience’s context and perspective
-
Better communication can be achieved through:
- Reusing existing context where possible
- Being explicit about assumptions
- Building shared language incrementally
- Focusing on clarity over cleverness
- Understanding translation layers involved