I think it's worth noting that 'different strokes for different folks' applies to learning programming as much as for any other skill. Some are fine with following books and tutorials or taking a class. Others may benefit from diving into a real world project. Competition might motivate you but it might discourage you too - as seems to have happened in this person's experience.