in reply to How 'n' why
All of the above suggestions are great. One that I will add is to write code, trash it, and rewrite it. I have seen this suggested in many places. When you rewrite it take the time to look up a new function or use a different module.