How many times have been told how functional programming is so much better than imperative, and then being presented with a functional approach to calculating a fibonacci sequence, leaving you wondering how that can be even remotely useful when working in real world applications? Yep, we’ve all been there. It seems that every time someone wants to explain functional programming to us, it’s around how to solve some mathematical problem. But how does that provide us value? How do we deal with things like grouping functionality, loose coupling and consequently dependency injection?