Best Practices for Software Documentation: Why it matters and how to do it right