I have had quite some exposure with category theory this year. I have even completed a quite long course in category theory and did very well in it. So I thought I am quite good at it. But, something very striking happens with this subject; something that I haven't experienced before with any other area of mathematics I attempt to learn.
It seems like the more I learn about category theory, the more unconfident I feel about what I really know.
For some reason, I had not stumbled upon the fact that $\mathbf{Set}$ is not equivalent to its opposite - until now I didn't really care to understand what actually IS the opposite category. Unfortunately I have realized that I have a gap in my understanding of this idea.
By trying to trace back where the gap is, I have arrived to the conclusion that I do not really, honestly, morally, understand what a morphism is.
What do we really mean with the notation $f:A\to B$ in a category? Is a morphism $f:A\to B$ dependent on the objects $A$ and $B$ or not? If yes, in what way and how much? If not, what do $A$ and $B$ stand for, given $f$ - and are they explicit? For example, in the category $\mathbf{Set}$, the phrase "add" should be some sort of morphism between two sets of "numbers". Is this A morphism in the category of sets, just by itself? If yes, how can you say if its domain and codomain are the sets, e.g of natural numbers rather than the sets of rational numbers? And how do you discriminate between them? Or do you have to specify two objects of the category first (sets of numbers here) and then describe explicitly how the morphism "acts" on them (assigns to the numbers their sum)?
I believe what would really help is to hear how people actually realize and think about the notion of a morphism. Which I guess is a question I should have asked myself a long time ago.
You can think of a category as a directed graph with extra structure (namely identity arrows and composition). From this perspective, objects are the vertices of the graph and morphisms are the (directed) edges, where $f : A \to B$ means the edge is directed from $A$ to $B$. Taking the opposite category means reversing the direction of all of the edges. (Exercise: construct a directed graph, not yet a category, which fails to be isomorphic, as a directed graph, to its opposite.)
"Add" could be interpreted as, for example, a morphism $\mathbb{R} \times \mathbb{R} \to \mathbb{R}$, where you've picked out the particular object $\mathbb{R}$.