Types of Program Documentation
Good developers understand the types of documentation and their importance and that the importance and role vary from type to type.

End-User documentation

This is the how-to guide to which users turn when they're figuring things out. How do you configure the software? How do you convert a file? Can you add images? How do you fix a mistake? Even if the solution is a single click on the toolbar or the menu, there may be a lot of potential clicks through which to wade. Good user documentation makes it easier.

Project documentation

Details of the project's development are valuable to your team as they work on it and possibly to users who want to customize an open-source program, for instance. The documentation can include contribution policies, best practices, changelogs, product requirements, design guidelines, and road maps.

Requirements documentation

You'll usually draw this up at the start of the project. It defines the expectations for the software, including functional requirements, hardware requirements, compatibility and limitations.

Architecture documentation

Defines the high-level architecture of the system: the components, their functions and the data and control flow.

Technical documentation

Written for a technical audience, this covers the code, algorithms and interface.
You may be writing the documentation solo, but it's common to write it as a joint effort. Project documentation, for instance, may have contributions from project managers, engineers, and designers. If you have a team working on the material, the simplest way to coordinate contributions is with an online template to which everyone can add.