Overview #

LEGO is a go-to analogy for programming, but what else can we learn from these little-plastic bricks on building quality software?

Outline

  • Introduction
    • In the past year, I have reignited a passion for LEGO that I had as a kid
    • I enjoy spending time building with my sons
    • And I think there is something we can learn from LEGO
  • Learning from LEGO
  • Composability
    • LEGO
      • Bricks can be combined into an infinite number of builds
      • Each piece is designed to be used in conjunction with other unknown pieces
    • Programming
      • Our functions need to be designed to work alongside and with unknown functions
  • Systematic
    • LEGO
      • Every brick is designed to work within the LEGO System via a unifying “API”
      • Input always equals output
      • This unlocks composability and helps simplify expansion
    • Programming
      • A uniform communication method from which we build our systems
  • Techniques
    • LEGO
      • Multiple building techniques to accomplish specific design challenges
      • Each technique excels in a particular area, but may be ineffective in others
    • Programming
      • Learn and utilize different programming techniques and paradigms
      • Carefully choose the best technique for a given situation
      • Resist the temptation to choose the inefficient familiar or clever option
  • Testing
    • LEGO
      • Rigorous quality control to ensure that all bricks are high quality
      • Continual testing of connection strength when building
    • Programming
      • Have systems in place at every level to verify the quality of production code
      • Regularly stress test to ensure a high-quality product for users
  • Refactoring
    • LEGO
      • Countless solutions for solving the same problem
      • System encourages working through alternatives to find the best solution
      • They even provide a tool specifically for taking your builds apart!
    • Programming
      • Use rapid prototyping and compare POCs
      • Build in sprint time to try multiple solutions for feature work
      • Policy for addressing technical debt before it accrues too much interest