Dependency injection. What is it? Why do we need it? And how should we implement it? This talk aims to answer these questions. We’ll cover several approaches to dependency injection in Scala (Google Guice, the cake pattern, and the reader monad, among others), comparing and contrasting them and identifying the criteria for choosing each.