When I first started to learn about sheaves, it was a very geometric approach. This is nice, but it seems like knowing more abstract categorical approach is very useful.
For example, sheafification $(\mathcal{F})^+$ of a presheaf $\mathcal{F}$ became much more clear to me when I realized that it can be defined as the left adjoint functor $(-)^+\colon \mathsf{PSh}(X)\to \mathsf{Sh}(X)$ to the forgetful functor $i\colon \mathsf{Sh}(X)\to \mathsf{PSh}(X)$, where $i$ views any sheaf as a presheaf. Here $X$ is a topological space, and $\mathsf{Sh}(X)$ and $\mathsf{PSh}(X)$ are categories of sheaves and presheaves on $X$ respectively.
So my question is: do you know any nice introduction to sheaves that would not be too crazy abstract, but which will use categorical definitions, constructions and proofs (where possible)?
Thank you very much!