Interaction Protocols: It's All About Good Manners • Martin Thompson • YOW! 2019

"Learn how to design effective interaction protocols for your software development projects, focusing on good manners, hygiene, and etiquette for successful team collaboration, concurrency, and predictable behavior."

Key takeaways
  • Good manners and hygiene behaviors are crucial in software development to prevent bugs and ensure quality.
  • Code of conduct, protocols, and etiquette are essential for effective team collaboration.
  • Distinguishing between good and bad protocols is vital; good protocols encourage concurrency, while bad protocols lead to bugs.
  • Versioning is crucial; protocols must be versioned to avoid version hell.
  • Feedback and testing are vital; we should test failures to ensure software quality.
  • Concurrent systems require careful handling; protocols must be designed to prevent bottlenecks.
  • Avoiding pitfalls like sequence numbers and concurrent updates is crucial.
  • Good protocols should be simple and efficient, allowing code to be written quickly and correctly.
  • Failure to design protocols correctly can result in catastrophic failures.
  • Etiquette and precedence are essential in software development, as they help ensure correct ordering and behavior.
  • Protocols should be designed to prevent predictability, ensuring unpredictable behavior is difficult.
  • The importance of testing and feedback cannot be overstated; testing failures can reveal design flaws.
  • Protocols should be designed to prevent concurrent updates, ensuring data consistency.
  • The lack of information and coordination between developers can lead to bad design decisions.
  • An individual’s code of conduct can impact the quality of their software development work.
  • The importance of simplicity and clarity in design and documentation cannot be overstated.
  • Testing and feedback should be continuous, ensuring software quality at each stage.
  • Designing good protocols requires understanding of concurrency, feedback, and testing.
  • System latency can be reduced by batching requests and minimising concurrent updates.
  • Protocols should be designed to prevent concurrent updates, ensuring data consistency.
  • The quality of a developer’s code depends on their culture and code of conduct.
  • Clean code and good design practices are essential in software development.
  • Good protocols should enable automatic fallbacks and reliable data transfer.
  • System design should prioritize simplicity and clarity, making it easier to understand and modify.
  • Testing should be rigorous to ensure software quality and reliability.