CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Dave Laribee

"Whoso would be a man must be a nonconformist." - Ralph Waldo Emerson

Blogging Technical Documentation

Tom Opgenorth opines and asks about technical documentation on the ALT.NET list:

...on this contract I'm leaving, there really isn't a lot of staff, nor is there a lot of format familiarity with some of the design patterns (hence my desire to leave behind some sort of formal document). Mostly I'm thinking of stuff like

  * Architecture (very broad, I know).
  * Database schema/changes to existing schema
  * Layout of projects, and the dependency of assemblies
  * explanation of tricky algorithms
  * hardware specs (they have some custom hardware it's own specs)

A lot of this stuff as fitting into the XP notion of a coding standard (which should include project layout). A good TDD practice will also surface "excutable specifications" or you might be using FIT to leave a breadcrumb trail of documentation. Still, some documentation is usually a good thing, especially in a consulting hand-off scenario.

Tom's bullet points are a lot like tags or categories in a blog. I think a lot of these items could easily be captured as blog posts, etc. This content will likely get tweaked over time, so a Wiki is a better fit conceptually (I don't usually go back and modify blog posts). I'd maintain that the chronological view of the blog meshes well with the re-entrant, evolutionary, and collaborative nature of a Wiki.

We maintain a Wiki for our technical documentation. Just now, I asked one of our developers to write a stub article about some faxing feature that we have. Essentially a Wiki is a lot like a communal blog and is an excellent tool for evolving a set of documentation around a product. We've defined separate Wikis for:

  • Practices & Tools (Links, Pointers, Coding Standard, Software License Keys)
  • Company (Housekeeping, HR)
  • One-per-product

What we can't capture in a self-documenting style or executable spec form we can usually capture in a small-to-medium blog-style article. The key, as with any good piece of writing, is to strike while the iron's hot (write when you think about it, you can improve it later) and keep the scope of your article focused on one aspect of your system. Small-to-medium is important as well; content can grow and be pruned over time as necessary.

Tom's outline is a good place to start thinking about the "categories" for these articles, but I'll add a few more:

  • Model Distillation Documents (ala DDD)
  • Technical Debt Exposés
  • Experience Reports, Spike Outcomes, Product Evals
  • Interview Transcripts, Ethnographic Studies
  • System Philosophies, Assumptions, Metaphors, Inspirations
  • Manual Test Plans 

Of course with a folksonomy you can tag and let the popular tags emerge. The tag cloud becomes a useful visualization for segregating the content you're interested in at any one time. In any event, I'd recommend a Wiki-per-product and a Wiki-per-team; keeping them small, portable, and focused helps set a tone for what does and does not belong in documentation. When you're about to close that story you've been working on, stop for a moment and ask yourself, "should I write an article or two (even if it's a stub)?" A micro-investment in the present will help reduce documentation debt which can be a hard thing to overcome.



Comments

Dave Laribee said:

We use the hosted version of Confluence from Atlassian:

www.atlassian.com/.../confluence

I've used ScrewTurn Wiki and it's nice too, an example:

http://altnetpedia.com/

# November 7, 2007 9:44 AM

Joshua Flanagan said:

If everyone on your team already has OneNote, I've found it is much better than a classic web-based wiki.

The first half of this post describes the advantages:

flimflan.com/.../MigrateFromFlexWikiToOneNote.aspx

# November 7, 2007 3:24 PM

Chris Chapman said:

This is a good idea that I think has some merit.

The last firm I worked for was a SharePoint shop and unsurprisingly they kept all of their documentation in WSS sites.  While this did present a "professional" sheen to clients, I found the rigid structure of the document libraries really just became an online version of a network folder where use cases, visio diagrams and status reports went to die.

My natural inclination would be to use wikis to capture design and development conversations and blogs for higher-level communications from the team, ie. how-tos, tips, team lead announcements - it can act as a mini-newsletter which could have some cachet with a client depending on how widely its published within the organization.

SharePoint's CMS strengths and plug in Atlassian's Confluence and Newsgator's Social Sites for a wiki and blog/community style engine - it doesn't need to be this complex, of course, but it is cool...

# November 7, 2007 6:53 PM

Dave Laribee said:

@Joshua - I tried OneNote + WSS. It seemed a little heavy for my needs at the time. I couldn't quite wrap my head around it's organizing principle.

@Chris - If you look at the "recent" page of a Wiki it's a lot like a blog. Well, a blog that encourages cross-linking which is good in technical documentation.

# November 8, 2007 9:16 AM

Tom Opgenorth said:

Man, I have to proof read better before I click 'Send'.  No shortage of typos from me.  :)  

"Type fast think slow", thats my motto.

# November 8, 2007 10:05 AM

Joshua Flanagan said:

You create a single OneNote notebook to share with the team. How you organize within the notebook is up to the team. Sections contain Pages which contain subpages.

The real beauty is that the search is so good, the organization isn't as important.

# November 8, 2007 9:10 PM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add
Check out Devlicio.us!

Our Sponsors

Free Tech Publications