There are too many discussions about this to pick just one, but you should probably start by going through the following: