Language Games - Eli Holderness - NDC Oslo 2024

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