Visio Rules! If you program, build databases, or build database driven websites (which counts as programming) then you should be documenting your code within the code itself in the form of comments and externally in documents. My stand-bys are a site map (created in Visio), a data dictionary (created in Word), a data map (created in Visio), and a specification (created in Word). I also maintain a single document that records all my assumptions, questions, and notes about future upgrades or oversights that need to be modified "later." Maintaining these documents is enjoyable and having them on -hand makes the coding go so much smoother.
Husband to one wonderful wife, father to five fantastic children, juggler, technophile, freelancer, DIYer, adventurer, volunteer
Disclosure: I am a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for me to earn fees by linking to Amazon.com and affiliated sites.