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.
input Ideal World Real World • Model - View binding • Handle user input • Layout • Navigation flow • Data source • Persistance • Data fetching & transformation • Model mutation
on ViewController’s init method: • Inconsistent state of ViewController at initialization. • User needs to call a function. • Mutability: Different semantic meaning.