LeadDev Berlin 2022 Charity Majors

Learn how to build and maintain reliable and scalable systems at LeadDev Berlin 2022 Charity Majors. Discover observability-driven development, testing in production, and more.

Key takeaways
  • Embrace observability-driven development: Focus on understanding how your code behaves in production and use tools to monitor and analyze its performance.
  • Test in production: Whenever possible, test your code in production to ensure it works as expected and doesn’t cause any issues.
  • Own your code: Take responsibility for the code you write, including testing, debugging, and fixing bugs.
  • Decouple deploys from releases: Deploy your code frequently and automatically, without waiting for a formal release.
  • Invest in your alerts: Set up alerts that notify you of potential problems in your system and respond to them promptly.
  • Focus on SLOs: Define service-level objectives (SLOs) to measure the performance of your system and track your progress towards meeting them.
  • Empower your engineers: Give your engineers the time and resources they need to work on improving the system and fixing bugs.
  • Make on-call a positive experience: Create a culture where on-call is seen as a valuable opportunity for learning and growth, and provide support and recognition to your on-call engineers.
  • Invest in your sociotechnical system: Recognize that your system is not just about technology, but also about the people who use and maintain it. Invest in improving the communication, collaboration, and processes within your team.
  • Embrace chaos experiments: Conduct chaos experiments to test the resilience of your system and identify potential weaknesses.
  • Pay your on-call engineers: Consider paying your on-call engineers for their time and effort, especially if they are required to be available outside of normal working hours.
  • Automate your deploys: Use automation to deploy your code quickly and reliably, reducing the risk of human error.
  • Use feature flags: Use feature flags to control the rollout of new features and mitigate the risk of introducing bugs.
  • Invest in operational expertise: Hire and train engineers with expertise in running and maintaining systems, and give them the time and resources they need to do their jobs effectively.
  • Create a culture of continuous improvement: Encourage your team to constantly look for ways to improve the system and make it more reliable and efficient.