How to find irreducible representation of a group from reducible one? I was reading this document to answer my question. But after teaching me hell lot of jargon like subgroup, normal subgroup, cosets, factor group, direct sums, modules and all that the document says this, 

You likely realize immediately that this is not a particularly easy
  thing to do by inspection. It turns out that there is a very
  straightforward and systematic way of taking a given representation
  and determining whether or not it is reducible, and if so, what the
  irreducible representations are. However, the details of how this can
  be done, while very interesting, are not necessary for the agenda of
  these notes. Therefore, for the sake of brevity, we will not pursue
  them.

(>_<) 
I want to learn to do this by hand and then write a program. Please don't ask me to learn GAP or any other software instead.
How to find irreducible representation of a group from reducible one? What is that straightforward and systematic way? 

0) Find all irreducible representations of the group. Better learn GAP or another computer algebra system specially designed for algebra (in mathematical, not common sense). Or use character tables if you have well-known finite group.
1) Find a number of irreducible representations in the one you have using orthogonality relations for the characters (sum over group of the product of characters of elements from two representations equal to number of elements multiplied by number "times one representation may be find in another")
2) Now, if you want to derive a connection between your reducible representation and irreducible ones, you should find Clebsch-Gordan coefficients. Just pick any algorithm  -- it is hard to find a good description of one, I could not actually. 
If you want to take reducible representation and by some diagonalization-like procedure turn it into irreducible ones, there is no such algorithm. 
