6/ Thinking Above the Code is a great talk that explains why specifications should be written for any software (especially if it's complex).