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

Martin Thompson

"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.