There's one particular case where you should take care:
user=daniel
cat > output.file << EOF
"$user"san
EOF
Will output "daniel"san, and not danielsan, as you might have wanted.
In this case you should do instead:
user=daniel
cat > output.file << EOF
${user}san
EOF