I took me several years to grok monads.  I even learned some category theory to try and get there (it didn&#x27;t really help, but I do think it was useful for some other almost programming related things).<p>The nice thing about monads with respect to the haskell programming thing is that you don&#x27;t have to know why they work to get their benefit.  However, if you wanted to build your own you probably do need to grok them.<p>However, I&#x27;m not convinced that monads are the best way to proceed on the most part in programming advancements.  The immutable&#x2F;mutable tracking, affine types, and borrow checker in Rust seems like it would help prevent a lot of the same types of bugs that pure FP does, but without the cost of needing to have a monadic effect system (and Rust is a more familiar style of programming than the State monad with a host of monad transformers).  I&#x27;m hoping for optional affine types and more immutable data structures to become the norm more than I am monad usage.