I'm making an effort to comprehend dependency injections (DI), but I keep failing. It simply looks absurd. My code is never a mess, and all of my configuration is magically serialised into a class using json.net. I am also having troubles understanding what problems does it solves.
What are some actual circumstances when using DI would be appropriate when developing a website or desktop application? I can easily think of reasons why someone might wish to utilise interfaces or virtual functions in a game, but I can't think of even one time when it was used in non-game code.