Learning from LEGO
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
- LEGO
- 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
- LEGO
- 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
- LEGO
- 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
- LEGO
- 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
- LEGO