1) DRY, don't repeat yourself, write reusable code, it's not just helpful for the next project, code can also be reused in the same project, less code is easier to maintain. 2) Prefer data over code, a simple example: if you are calling the same function over and over, with just different parameters, write a loop and get the values from data. 3) write small functions, rarely more than what fits on a screen, a function should do ONE thing, if you want to do multiple "things" write more functions, then write one function that controls the flow and uses those functions as building blocks.