This is a good read:

http://programmingisterrible.com/post/102153932958/how-i-write-software