Bottom-up approach to relieve ViewController's from some responsabilities.
The first part is about how we can define a component and then how these components interact between them.
14. Problem
• Layout is ViewController’s responsibility.
• Can’t inject dependencies on ViewController’s init method:
• Inconsistent state of ViewController at initialization.
• User needs to call a function.
• Mutability: Different semantic meaning.