save programmers the trouble of answering the same [arbitrary] questions -- again and again.
convey important information concisely (such as with naming conventions)
protect against known hazards (such as global variables)
can compensate for language weaknesses