[Zope3-dev] Documentation: Where do we go from here?

Anders Schneiderman SCHNEIDA@seiu.org
Wed, 13 Mar 2002 13:11:08 -0500


To  kick off a conversation about how we might begin to restructure Zope3 =
documentation, I've written up a quick draft of one way we might go.  =
Sorry for the length; I wanted to get a fair amount out on the table.  I =
promise not to deluge you again!
------------------

Our Goal:  To figure out how to organize the creation and organization of =
documentation so that it satisfies the needs of the people who will use it =
and the people who write it.


The first place to start is to ask, what do we know about how users use =
documentation?  In the literature on usability testing, there seems to be =
a rough consensus on the following:

1)  Most users hate to read documentation and will avoid using it if at =
all possible.

2) If users get so stuck they need to read documentation, they consistently=
 ask for two things:

a) Documentation that's focused on specific tasks they want to accomplish =
or problems they need to solve.  This includes both the content of the doc =
and its organization.
b) Lots and lots of examples. =20

3) Most users don't read documentation;  they skim it.=20


How about the producers of documentation?  IMHO, most of us would agree =
that...

1) Most programmers hate writing documentation.  The more work it is, the =
less likely they'll do it.  Also, the more work it is, the less likely it =
will be updated when the code changes, which means it rapidly goes out of =
date.

2) Many good programmers can't write good documentation.  To write good =
doc, you need to get your head around where the users of that documentation=
, from the most sophisticated to the least.  That's very hard for some =
programmers.  So while they may be an important step in writing the doc, =
they can't be counted on to do the whole thing.

3) All producers of text, such as documentation, have to be edited.  When =
professional writers produce copy, it gets edited by one or more other =
people.  The reason is that it's much, much harder to catch problems in =
your own writing, even if you're a skilled writer.


OK, so what does this all mean?  Here are my suggestions for where we go =
next:

1) For anything involving point-and-click (vs. scripting), we should focus =
more of our energy on usability testing the user interface instead of the =
documentation.

Since most users don't read written documentation, the only "documentation"=
 they're really going to use is the user interface.  And the best way to =
build really good user interfaces is to do lots and lots of usability =
testing.  In some sense, usability testing is to building great UIs what =
unit tests are to writing great code:  everybody is sure their code works, =
but the only way to be _sure_ is to test it.

Usability testing doesn't have to be complicated.  With a few simple =
techniques and a relatively small expenditure of time, we should be able =
to radically improve Zope3 user interfaces.

This doesn't mean that we won't need lots of documentation.  No matter how =
well designed a user interface is, people will always need some help =
navigating it, particularly when they need to do tasks that aren't =
commonly used. And obviously we'll need documentation for scripting.  But =
if the goal of writing documentation is to ensure the system is as easy as =
possible for users, then spending time making an interface easier to use =
will often have a better payoff than writing really good documentation.


2)  Where we need documentation, focus on creating "recipes" with examples =
rather than writing long texts. =20

The Perl Cookbook is a great example of how effective this approach can =
be--not only because its recipes are very useful but because the recipes =
are very well organized.  Obviously there are some exceptions, such as =
when you are laying out the conceptual model behind the system, but what =
users consistently show  researchers is that they learn the most from =
recipes and lots and lots of examples.=20


3) Replace use cases with recipes & examples

When I talked to Jim yesterday, he said one of the ideas he's been kicking =
around is having developers write a draft of documentation--essentially =
writing the equivalent of a quick email you'd send to a friend to explain =
how something works--instead of or largely in place of use cases.  Since =
use cases aren't really used after the unit tests and the code have been =
written, and since we need documentation, why not use doc for laying out =
what a component will do?

I think we could take this idea a little further by replacing use cases =
with recipes and lots of examples.  When use cases first came on the =
scene, many of the people pushing the idea said that a good use case =
should run through how the code would handle a variety of problems or =
options.  Many developers, like Zope3istas, have switched to writing much =
simpler use cases, in part because it's too much damn work for text that =
won't be used at the end of the project.  But if a developer was writing a =
series of recipes that documented how a user can perform a task, you'd end =
up with documentation that would get used _both_ during the writing of the =
code and during later modifications to it. =20

The other thing we might want to consider is to allow (but not require) =
developers to add short FAQ- style explanations of why certain tasks can't =
be performed (e.g., 'What does the error message, "Illegal widget munging" =
mean?').  I don't know whether this is worth doing.


4) Use documentation as an integral part of the functional and usability =
testing of components.

If you want to know, does this component make sense, there's nothing like =
trying to write clean, clear documentation for it.  If nobody can, then =
the component is either too complex or not well thought out or not focused =
enough on the goal, giving users the tools they need to perform particular =
tasks.  And if the documentation for a component is getting too long, it =
may be a sign that a component is trying to do too much and needs to be =
refactored.

It's also a good way to catch naming problems.  For example, as I was =
reading through the Zope3 component tutorial, I was a little confused by =
the security term "protectClass."  From the doc and the example, it seemed =
like you were "protecting" a class by allowing more access, which was =
counterintuitive.  It might be that the documentation wasn't clear =
enough--it's only a draft--or it might be that it makes sense to replace =
"protectClass" with another term, such as "accessClass."


5) Offload some of the work of editing and organizing documentation off of =
developers and onto folks who want to work on documentation.  Frankly, if =
there are developers who want to write a "scratch draft" of their =
documentation, I'd be happy to edit it, and I'm sure we could find other =
people to help as well.  =20

This approach also gives people another reason to offer editing help.  =
Usually when many of us read documentation, if we don't understand what =
the person is saying, we feel stupid.  But when you're editing documentatio=
n, parts that are unclear are a sign of a problem on the part of the =
person who wrote the documentation, not you (it's also a nice way to =
sublimate some of your sadistic impulses that come from any feelings of =
inferiority you may have).


This is my first take on the topic.  Any thoughts?


Thanks,
Anders Schneiderman
Information Manager
SEIU International

P.S.  Anybody have any idea why my postings are=20
showing up w/ =3D20's at the end of each line that
goes beyond a certain length and=20
what I can do about it?  We're forced to use an=20
awful email program here called Groupwise,
so it wouldn't surprise me if it was the culprit.