views:

390

answers:

11

The LAST thing my team ever gets around to is the documentation. It is an important piece of the overall puzzle but it is the one we can rarely find.

So what do you use to make the process as easy as possible?

We have used screensteps.com in the past which makes things a bit easier. But it can still be a bit cumbersome.

A: 

Unfortunately, some simply can't do a decent job, and others who don't want to do it, will do a poor job if required to do it. Thus, the rest of those who are capable of doing a good job are punished by having to do more than their share.

If you are talking about user documentation, hire a competant technical writer.

If you are talking about programmer documentation, well, it DOES need to be done. Perhaps make sure the person who wrote the documenation has their name on it as the go-to person when there are questions. If there are no or few questions, they did an adequate job, and if they are bothered by a lot of questions, they'll fix it for their own peace of mind.

thursdaysgeek
A: 

Documentation is a tricky term since it involves different artifacts and different tasks, what do you mean by documentation?

User manuals? Screensteps can be used for that. Most companies hire special technical writers to do user-friendly documentation.

Function headers and API documentation? That's a different story. The "official" guideline (at least for Java) is to capture everything - complete specifications. The agile approach is to document only what's important. I published a study that shows that detailed header documentations tend to actually distract users. There is a relatively small list of important "directives" and "caveats" that need to be conveyed. PM me or send me a comment if you want more details on that and I'll detail more. I'm avoiding it now since I'm not sure what you meant.

I also had a tool that lets you record a narrative of what you do as you work, and it ties it to a log of your edits and actions, that establishes some traceability though it's of course not documentation.

Uri
A: 

Documentation should be an integral part of your plan and not just a bit tacked on the end.

We have a requirement that documentation for parts of the system are a deliverable for those parts, so that it's done interspersed with the actual product development. Like unit testing results, the parts aren't considered complete until they've had some reviewed and approved input to the documentation process.

But, as to the tools, OpenOffice.org with our own customized templates, along with Hypersnap for screen capturing, is all we use.

paxdiablo
+3  A: 

The worst thing you can do is leave documentation as a distinct step at the end of you project. Here are some things we do in my team to ensure documentation gets done:

  • "Do it badly" - it's better to write some documentation than none at all. If you are thinking you need to write an beautiful essay you'll never get around to it. Start with a bullet list of the basics and go from there.
  • "Do it now" - like right now, before you write a line of code. Again start with the most basic outline you can and keep building on it as you go.
  • Have the right tools - get a wiki set up. We use Confluence, but there are much cheaper and easier options out there. If you have to open up MS Word, create a new document or worry about where the doc should live/what to call it - it's too hard. You should just be able to create a new page and bash away.
  • Have periodic wiki gardening - all this rough as guts, adhoc documentation is not that useful. You do need to regularly go through, clean it up and categorise it. But if the content is already there, this task doesn't seem so overwhelming.
  • Focus on audience - usually the audience is the other members of the dev team, based on that you can assume a they already have a lot of knowledge and you don't have to explain everything from scratch.
  • Get someone else to collate this into help text/user guides. Developers shouldn't be writing that stuff.
Mark
+6  A: 

In my experience, the best approach is one that includes documentation as one of the continuous activities that are always going on - just as you shouldn't leave all the bug fixes for the end of the project, neither should you leave all the documentation.

Of course, "Documentation" is a generic term that could apply to any of a dozen different artifacts - the "best" approach will depend on what is required, which in turn depends on the target audience.

Here are some thoughts ...

Developer Documentation - set up some kind of tool to harvest information from your source code. If you're a .NET shop, use SandCastle; for Java, use JavaDoc; for Delphi, Time2Help; whatever your environment, find a tool that will harvest metadata and comments from your source and compile that into a usable form. Integrate the documention into your builds - daily if possible.

Release Documentation - check out what's available from your bug tracking tool for documenting the fixes/changes/features in each release. JIRA can generate release notes based on the "fixed in" release, other systems have similar functionality.

Support Documentation - encourage your developers to make notes about things that might be an issue for production. A wiki is good, as is an email alias. Whatever system you use, keep the "barrier for entry" low so that you capture the data. Having the information is more important than having it pretty. Hire a student to collate the details together.

Tip: Make the document fault/fix focussed so your admins don't have to read the whole thing.

End User Documentation - not everyone learns well by reading, so think about other possibilities. Record a screencast using Wink, use screenshots. If you're running automated testing of the GUI for specified scenarios, capture a movie of those steps to demonstrate to end users.

Bevan
+3  A: 

Don't save your documentation till the end! I know that sounds trite and simple, but it really is by far the best suggestion I have to give on that. There's a certain self-reinforcing principle going on there, as well; because your documentation has been such a slog in the past, your team desperately wants to avoid it; so they put it off until the end of the project; when it becomes a slog.

Document as you go. Insist on good Functional Specs, good Design Specs, keep them up to date, insist on documentation standards being upheld in code reviews, etc. Yeah, it's a hassle then too, but... if you document as you go, you won't find that you're in the situation of not knowing what something does because somebody didn't document it when they wrote it 3 months ago. Because when you're in that situation, yeah, the documentation process sucks.

McWafflestix
A: 

How about tools to make it easier. Especially for the parts users need to see. Any favorites?

A: 

My personal opinion is that the specification of the project should serve as a base for documentation where the document is somewhat of a living breathing item during the project where one could color code what parts are done, what parts aren't and reference other documents that may contain more details if necessary. Sometimes all that is needed is enough of the basic, "Here is how you use this," rather than explaining why the syntax is blah blah blah.

JB King
+3  A: 

Most teams that resist documentation do so because they don't know what good doc looks like, or how to produce it. The team leader or manager should provide an example or even a template for what they expect the doc to look like.

If your team has no significant skill at making product documentation a work of art, then remove that requirement. Ask for rudimentary documentation if you can't get great documentation. Once you have doc that is complete and literally true even if isn't entertaining, then at least you have something you can improve upon. You can also use this as "raw material" that you can hand off to a professional tech writer.

My criteria for documentation is that it be:

  • Complete: Document all features and leave nothing as "undocumented." No easter eggs.
  • Correct: If functionality changes, you must update the docs to match. Establish a rule that development work cannot be counted as "done" until tests and docs reflect the new work.
  • Concise: Avoid run-on sentences or tangential discussions of technology culture. Just the facts, ma'am.
  • Clear: Avoid weasel-words, ambiguity, and tautologies. Tell writers to use present tense, second person, and active voice.

Buy a copy of "The Elements of Style" by Strunk & White for each team member who writes doc. Let them read it on company time. Another good book is "Read Me First! A Style Guide for the Computer Industry "

Finally, it's important that the schedule treat writing documentation as a legitimate task, with non-zero time allocated to it. Maybe the team members don't want to write docs because they get no "credit" for having done it.

There are several types of documentation. Don't try to force one document to serve different needs, and be clear about. For example, in order from easiest to hardest for a developer to write:

  1. Reference
  2. Task-oriented
  3. Tutorial
  4. Marketing

Be clear about which type of doc you expect the developer to be writing. It's hard enough for a developer to write one type of doc, so make their assignment clear, specific, and structured.

Bill Karwin
A: 

One of them will have to do ONLY documentation.
He can use LaTeX or Google Docs(allows people to work together) to put together
all the pieces that the other members of your team bring him.

xxxxxxx
+3  A: 

Documentation for code written in the D programming language took a big leap forward with the introduction of Ddoc, a tool that reads D source code and automatically generates html documentation from the documentation comments. This saves about half of the work involved in creating the documentation, the tedious half.

Walter Bright