Basic Category Theory for Scala Programmers
blog.scalents.com
blog.scalents.com
I place category theory within the same realm as the lambda calculus. Understanding category theory will enrich your understanding of the underlying computer science concepts, particularly with respect to functional programming. However, it's far more in the realms of computer science than software engineering. Software engineers can benefit from a conceptual overview, which this blog post provides in excellent form.
Unless your work involves formal proofs, I can't see many software engineering use cases where a more in-depth exposition would carry significant utility.
The utility also doesn’t necessarily come from the ability to transform A => B, as this is often provided by the user, but from being able to maintain the context while doing so (Mapping over a future should maintain the asynchronous context, mapping over a try should maintain the error capturing context). I understand the author appears to know much more, but I also don’t accept that they’ve contributed anything to a novice reading and attempting to improve/modify their Scala code via an improvement to their category theory knowledge.
However, if you still have to learn X, don't try to learn categories to learn X. First learn X decently, then if you want learn categories (or any algebraic abstractions that people say it is useful) and you have some hope that categories will give you some additional insights on X.
Category Theory basically provides a framework for talking about composability in rigorous language. It's important if you want to grok Functional Programming concepts, but you can get by without it just fine.
I've been doing Scala for the past two years, and the amount of things I've learned feels amazing. I've watched (and still am watching) Bartosz Milewskis "Category Theory for Programmers" which takes you from the very fundamentals of CT all the way to things like Adjunctions and Kan Extensions. I find it fascinating.
Does that answer the question?