The Different Sides of Computer Game Programming