Learning from LEGO
Outline
- Introduction
- Founded by Ole Kirk Christiansen in 1932 Denmark
- Originally produced wooden toys
- Developed first plastic bricks in the 1950s
- Now one of the largest toy companies in the world
- LEGO sets (licensing)
- LEGO stores
- LEGO amusement parks
- LEGO media (e.g. The LEGO Movie, LEGO Star Wars video games)
- Principles
- Systematic
- LEGO
- Every brick is designed to work within the LEGO System via a unifying "API"
- Input always equals output
- Serves as a design constraint that simplifies iteration, expansion
- Programming
- A uniform communication method from which we build our systems
- 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
- 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