TL;DR Version
Can you explain the concept of dependency injection to an 'enthusiast programmer' with a fundamental understanding of programming. i.e. Classes, functions and variables.
What is the purpose of dependency injection, is it purely a readability / ease of programming concept or does it provide compile time benefits also?
My original more waffly version!
My coding skills are reasonably rudimentary. (it isn't my primary skill, but it does sometimes come in handy to proof of concept something) I can hack stuff together and make things work, but I'm always perfectly aware that there are a host of better / more efficient ways of doing things.
Primarily I bounce things around between functions and classes and variables! (like what I learnt on my c64 a long time ago!)
Dependency injection seems to be everywhere lately, and while I think I kind of get it, I feel like I'm missing a point (or something)
The problem seems to be when I try to google around to understand what it is at a fundamental level, it very quickly gets very complicated and my head hurts (I'm a bear of very small brain and big words confuse me!)
So I'm hoping someone can explain dependency injection to a five year old! What is it, why do I need it, how does it make my coding better. (ideally working in concepts of functions, classes and variables!)
This is largely language independent, it seems to be a thing that all languages use, but my language of choice is usually C# (typically ASP/MVC though some native Windows / Console) though I've recently started poking around with Nodejs also.
Actually it seems this is a duplicate of this question - What is dependency injection?
(which fared much better than my version! - that's what I get for waffling)