Learning the art of programming, like most other disciplines,consists of first learning the rules and then learning when to break them --<<effective java>>