Leading Documentation Efforts for Undocumented Software – Resources and Tips

development-processdocumentationplanningteamwork

I'm a software developer at a technology company. I have been tasked with leading the documentation effort for the product I work on. The goal is to produce documentation internal to developer, and the project spills over into the business side, where it covers requirements documentation.

This project is challenging. Specifically, I'm dealing with a product which:
– has been around for a long time, at least 6 years.
– has no form of documentation other than some small, outdated pieces here and there.
– has comments in the code, but they are technical and do not convey any over-arching behavior (even on technical side).
– as a consequence of having little to no documentation, is often unnecessarily complex under the covers

In addition, we have not been given a lot of time to work on this project.

I do not have any formal documentation or writing background, training, or experience. I have displayed some ability in writing/communication around the office, which may be why I was assigned to this project.

Please share your advice or recommendation for resources to help me prepare and deal with this project. I'm looking for references to books/website/forums/whatever, to help me come up with the design of a plan with milestones, learn about best practices, task delegation, templates, buy-in, etc.

I'm hoping specifically for resources targeting or giving special mention of introducing good documentation to existing, undocumented, projects.

Best Answer

I usually use a wiki and just spam stuff up there as I go through the discovery process. Wiki because you get search and history as well as team editing functions. The exact tool is less important than having functioning search and getting everyone using it. Expect it to be very rough at first, but encourage people to make those rough notes as they go because that's all you're going to get at first.

A few things that help a lot:

  • have an editor. You, probably, at first, but if you have the budget make it part of someone's job. Pick someone who is good with language rather than a technical whizz. Edit for clarity rather than perfection - you want to encourage people to write good entries but you will need to guide them at first.
  • use diagrams, but mandate that a relevant tool is used, the image is generated and the source file attached to the page. That way people can edit your image using the proper tool instead of MS-Paint. Few things suck more than a really good diagram built in Visio for which you don't have the source document any more, only a PNG extracted from it.
  • Encourage rearrangement and editing. Even if it's not great at first, you need people to collate information and correct mistakes. Mentor people to do this well.
  • bring this up at your weekly team meetings. Grab the list of recent edits before you go in and praise people who have added anything useful, then ask why those who haven't, haven't.

I have started with a MediaWiki virtual machine image in the past because it's very quick and easy to get started, so people saying "it's too hard" don't get any initial traction.

If your language/environment supports it using JavaDoc/NDoc type tools to extract the comments as you add them is a good low-level approach. But that's less useful than the high-level documentation, and even though the tools kind of support adding higher-level stuff, creating it from nothing using only those tools is unnecessarily laborious.

Related Topic