title: Beside testing, why do we need Dagger 2?
body: <p>At this point, my understanding of Dependency Injection (DI) is only from <a href="https://medium.com/@Miqubel/understanding-dagger-2-367ff1bd184f#.xh638gdzv" rel="noreferrer">this article</a>. I'm interested to try, but I just need to clarify some things:</p>
  
  <ol>
  <li>Many refer DI as a tool to reduce boilerplate code. But according to that tutorial, the setup of Dagger 2 tends to create even more classes for configuration (module and component). I have not tried it, but by the looks of it, it isn't reducing the code, it is just splitting them so the main class can look tidier. Am I wrong on this one?</li>
  <li>Despite <a href="https://google.github.io/dagger/users-guide" rel="noreferrer">Dagger 2's claim</a> that DI isn't just for testing, many are regarding its usage mainly for testing, including <a href="https://developer.android.com/topic/performance/memory.html#DependencyInjection" rel="noreferrer">Android's own guide</a>. Have you used Dagger 2 in production-ready app? How useful has it been to you?</li>
  <li>If I am perfectly comfortable with traditional dependency creation via constructor and such, should I still need to look at Dagger 2? I feel like this library might have the power to change how I code the way RxJava does, I'm just not sure the benefit of it is as much as RxJava gave me.</li>
  </ol>
  
  <p>I know, comparing Dagger to RxJava is like comparing apple to orange. But in a sense, they are both a fruit just like Dagger and RxJava are third-party libraries that might make my project larger. </p>