I'm responsible of finding a good way to document the software project I'm working on.
What things are important to document? Should documentation of code and design mainly be in the code in the form of comments? Should we put text files or Word documents directly in the source control togetether with code? Should we use a wiki?
Factors to think about include how easy it is for the current team to create the documentation, and how easy it is for other developers to find, correct and extend the documentation later. My experience from many projects is that developers tend to not write documentation because the system for writing it is too complex or developer unfriendly, and that after a few years, new developers can hardly find the little documentation that was written.
I'm interested in what approaches you have used in similar projects. What worked well, what did not work well, and why?
Some key facts about the project:
- The platform is C# and .NET.
- We use Visual Studio and Team Foundation Server for source control and work item (task) management.
- We use Scrum and test-driven development and are inspired by domain-driven design.
- The software consists of a collection of web services and two GUI clients.
- Other clients are going to integrate with the web services in the future. The integration will be done by other developers on other teams (so the web services form a kind of API).
- SharePoint is heavily used throughout the development environment. Most projects have a SharePoint site, including ours.
- On our project's SharePoint site we currently have a bunch of MS Office documents on things like requirements, design, presentations for stakeholders etc. Keeping everything up to date is hard.
- We also have a SharePoint wiki for the development team only, where we document things in an unstructured manner as we go along. Examples include how our build scripts are organized, our testing policy, coding guidelines.
- The software is an in-house application in a fairly big financial institution.
- The software is developed by a team of six people over a period of ~1 year.
- The developers are consultants hired in for this project only, and will not be available to help in the future (unless the client decides to pay for it).
- The client has few guidlines for how this kind of project should be documented.