There’s been another discussion recently about whether certain concepts or words used in functional programming should or shouldn’t be dumbed down, when trying to explain things to people.
Now, personally I’m not a fan of explaining monads with burritos, tacos, lasagnas or any other kind of food. Whether you classify this as dumbing down or not is another matter. But what I do believe in is demonstrating value when teaching something.
What’s in it for me?
When you’re trying to explain something to me, it is much easier for me to follow you and understand you, if you tell me what problem you’re trying to solve. And if I can identify myself with that problem, then I’m even more eager to pay attention. Because you’re telling me that what you’re about to explain will help me fix issues I have - it will provide me value.
And value is the keyword here.
Start with a problem. Explain to me why the current way I’m solving it isn’t ideal. Tell me how to solve it in a better way. Once you’ve done so, then you can call that thing a monad, higher kinded types, typeclasses or whatever.