As someone who has walked that path, being a complete beginner in functional programming, learning via simple examples, such as the article, and then finally learning (or perhaps beginning to grasp) the basics of category theory, I can say that from my observation there&#x27;s no substitution to the actual mathematical perspective on the matter.<p>This point might have been made elsewhere, but I think the abstract nature of such concepts discussed in the article, makes it hard for &quot;partial understanding&quot; to be useful. In other words, for a beginner to read the article, and then go and start using the concepts themselves, is very unlikely. Either you learn the existing interface like the Maybe monad, or the Reader monad, and you learn how to invoke its functionality, OR you have a solid grasp of Monads as a concept and how it can be applied in any language, which usually means some understanding of category theory. To JUST know that Monads are containers that return &quot;flattened&quot; containers is useless. In other words, you don&#x27;t need to understand Monads to use them, and if you want to understand them, then perhaps containers are a bit too bastardizing to give you a full view of how and why they&#x27;re a useful pattern.