It seems that he has been faced with the following situation (to which I myself have never been faced; that is why I am asking here, in the hope that someone else already has been in the same situation as his): he is given a fancy (not the most usual) small diagram in Top or Ab or whatnot and wants to compute the limit or the colimit. Somehow he is afraid of this.
Then it seems that what your friend really needs is to learn methods for computing limits or colimits! Here are some facts which should help with your friend's difficulties in various familiar categories.
In any category, to compute arbitrary small limits and colimits it suffices to compute products and equalizers resp. coproducts and coequalizers. This is a good exercise; for a solution see, for example, this blog post.
In $\text{Set}$, the product of a family of sets is its Cartesian product in the usual sense, and the coproduct of a family of sets is its disjoint union in the usual sense.
In $\text{Set}$, the equalizer of a pair of functions $f, g : X \to Y$ is $\{ x \in X | f(x) = g(x) \}$, and the coequalizer is the quotient of $Y$ by the equivalence relation generated by setting $f(x) \sim g(x)$ for all $x$.
Many categories $C$ are equipped with a forgetful functor $U : C \to \text{Set}$ with a left adjoint (the "free object" functor). It follows that $U$ preserves limits, so when limits exist in $C$ they are computed as limits in $\text{Set}$ on underlying sets. For example, this is true of
Topological spaces, graphs
Groups, abelian groups, rings, various other algebraic categories
Dually, if $C$ is equipped with a forgetful functor $U$ that has a right adjoint, then $U$ preserves colimits, so when colimits exist in $C$ they must be computed as colimits in $\text{Set}$ on underlying sets. For example, this is true of
Topological spaces, graphs
If $C$ is a reflective subcategory of a category $D$, let $U : C \to D$ denote the inclusion and let $F : D \to C$ denote its left adjoint. By point 4, limits in $C$ can be computed in $D$. But it is in addition true that colimits in $C$ can be computed by first computing the colimit in $D$ and then applying $F$. For example, this is true of
The inclusion of abelian groups into groups (the left adjoint is abelianization)
The inclusion of compact Hausdorff spaces into spaces (the left adjoint is Stone-Cech compactification)
The inclusion of sheaves into presheaves (the left adjoint is sheafification)