Okay . . .
"1. If you refer to outside documents, make sure that the documents are referenced in the agreement and if you put a modification clause in the agreement, make sure the outside documents follow that clause."
Sometimes, the point of allowing for additional documents is to provide for amendments to the agreement. Especially in the world of software development, circumstances and/or the understanding of circumstances can change rapidly, and adjusting plans for them can be necessary for a positive outcome to the agreement.
As long as no amendments are considered valid without the agreement and signatures of both parties, providing for the addition of amendments that didn't occur to the contracting parties at the time the original contract is composed is basically a necessity.
"Without the forum clause, you could be haled into court in another state or federal district court but still using the laws of the State of Washington."
I'm no lawyer, but it seems unlikely that one would go to court in Alabama using the laws of Washington.
"3. Try not to leave vague terms in an agreement because the courts will more often construe these terms in the best interest of the other party if you created the contract."
Are there some specific examples you have in mind?