When I was learning about design patterns in school I often wondered if these topics had any relevance. It was only when I started my internship at Arcurve did I understand the significance of this topic. Dependency injection is one design pattern that I only recently started having an appreciation for. Dependency injection is deeply rooted in angular and is great for code reuse, low coupling, and is a great example of abstraction at work.