Language Games - Eli Holderness - NDC Oslo 2024

Eli Holderness

Discover how language games shape software development, from clean code to DDD. Learn core principles for better communication between humans and computers in dev teams.

Key takeaways
  • Language is fundamentally a game with rules, and understanding these rules is key to effective communication in software development

  • Context gives language meaning - the more shared context between parties, the better the communication. This applies to both human-human and human-computer interactions

  • Clean code principles align with Grice’s Maxims of communication:

    • Be informative (quantity)
    • Be truthful
    • Be relevant
    • Be clear/perspicuous
  • Domain Driven Design helps establish shared language between stakeholders and developers, reducing translation layers and miscommunication

  • When building software, we’re creating language games with both:

    • The computer (through programming languages)
    • Other team members (through documentation, meetings, tickets)
  • Effective communication requires understanding that:

    • We can never be 100% certain two people have the same concept in mind
    • Signs (words/code) and concepts they represent aren’t intrinsically linked
    • Translation layers exist between concept and expression
  • Code should be written with communication in mind since it will be read more than written

  • Context reuse (established patterns, shared terminology) makes communication more efficient

  • Stakeholder requirements need careful translation between business concepts and technical implementation

  • Communication is inherently difficult but can be improved through conscious effort and understanding these principles