Blog Archives

Workshops on effective writing – technical writers adding value

Our team at Atlassian has just started presenting a series of workshops for other Atlassians, on how to write effectively. People are very appreciative of the knowledge they gain in the workshops. In turn, we technical writers learn a lot from the participants. We see how much other people value our own skills. And we get a fresh look at writing and documentation, from another viewpoint. What’s more, the workshops are fun and invigorating. Added value all round!

I’m sharing the idea and content of the workshops in this post, because we’re finding them so valuable. It’s very rewarding as a technical writer, to see how much people value our knowledge and skill. It’s also interesting to see how much they appreciate a guiding hand in what we consider the very basics of writing a technical document.

Sometimes we forget just how much we know. :)

The format of the workshops

Each workshop takes the form of a one-hour session:

  • Introductions.
  • Lecture – see the material below. Questions are welcome at any time.
  • Questions and wrapping up.
  • Assignment of pages and posts for the workshop participants to work on at their leisure.

Before the session, the technical writer liaises with the manager of the team about to attend the workshop. We discuss the primary focus, and find out whether the team has any current plans to write documents or blog posts. Just recently in our organisation, a number of teams have put strategic initiatives in place to write and blog more. So our workshops come at a good time.

We also ask the participants and team leads to think of documents that need writing, so that their post-workshop assignments can be real documents.

After the session, the participants complete their assignments and choose one of the available technical writers to do a review. The review is a half-hour one-on-one chat, focusing on the document and any further questions the participant may have.

Kicking off the workshop

[The next few sections in this post contain the content of the workshops. The content is on a page on our internal wiki, which the technical writers use as a basis for the workshop. Participants can also use the page as a reference after the session.]

In this session you’ll learn how to write documents that people will find, read, and get what they need from. The aim is to provide a practical guide to help you get started quickly, and to put you in touch with the technical writers who can assist with reviewing your work.

We cover two types of document:

  • A “how to” guide on the corporate intranet.
  • A blog post on the corporate external blog.

Getting started on a document

How do you write a document?
One word at a time… not!

The big picture is the important thing.

  • Sit back, think, and plan the document before you start.
  • While writing, if the words don’t come, make a note and continue writing. Preserve the big picture. Come back later to fill in the gaps.

Talking to your audience

User icon: rrobins User icon: kegan User icon: jmlemieux User icon: brollins

Who do you want to read the document? Who are the people you’re writing for, and what do they already know?

  • Think about those people carefully. Make a mental picture of a person who has the characteristics of your target audience.
  • Use that imagined person to make all decisions about your document.
  • When in doubt about wording, speak to the imagined person out loud. Write down what you said. Write it down immediately, while it’s fresh. [I usually tell an anecdote here, about how some writers stick a picture of a person on their computer monitor, and talk to that picture.]
  • If there’s more than one audience, consider writing a separate document for each audience. For example, consider separate documents for administrators and ordinary users.

The structure of a page

[The aim of this diagram is to illustrate that a page should have a number of headings, with short bits of text between them. After a quick look at the diagram, we discuss the sections in more detail below.]

Structure of a page

Structure of a page

State the purpose and audience at the top

Tell people who the document is for, and what it will help them do. This will let them know if it’s the right document for them.

Separate the concepts (“what” and “why”) from the task (“how”)

Some people already know the concepts. They’ll skip past that bit and go straight to the “how”. Other people know how to do something – they’ve found the right spot in the user interface, or found the right form on the intranet. But they want to know why they should do it, or what it means.

Use “chunking”

Split the content into easily-digestible chunks. Keep them short.

Use plenty of headings, so people can find the chunk they need. Research shows people’s eyes jump from heading to heading as they skim a page.

Lead your reader by the hand

Give clear, numbered steps. Don’t skip any steps.

People have come here because they’re stuck. Don’t worry, they’ll go away again as soon as they’ve got the idea.

Add related topics and/or next steps

Send the readers away immediately if they’re in the wrong place. After that, don’t send them away until you’re sure they’ve got what they need. So, keep links to a minimum in the main portion of the page.

  • At the top: In the section about purpose, add links to documents the reader may need instead of this one. For example, if you have separate documents for administrators and users, link from the one to the other.
  • At the end: Put related topics and next steps at the end, when you’ve finished with your reader.

Examples from our product documentation

[At this point, the workshop participants have already absorbed a lot of theory. It's a good time to show them some examples of good and bad design. Use these examples as a discussion point. Ask the participants what is good or bad about each page.]

Good structure

https://confluence.atlassian.com/display/DOC/Deleting+or+Deactivating+Users

Good structure and design

Good structure and design

Comments:

  • Our current style is to put the related topics at the top on the right, instead of at the bottom. We’re discussing a change, because the design doesn’t work too well on mobile devices.
  • Instead of a warning macro, we’ve used a panel (uncoloured) with an exclamation icon. There’s some discussion about coloured panels, and whether people skip over them when reading a page. See the references to “banner blindness” in the resources section below.
  • [This is a good place to break for a quick chat about banner blindness. Find out what the workshop participants think about it, and how they themselves read a document.]

Not-so-good structure

[This is a page that has grown organically, with contributions from many people over a long period of time. It's had a revamp in the latest version of our documentation. The link points to an earlier version.]

https://confluence.atlassian.com/display/CONF50/Database+Setup+for+Oracle

Unplanned structure and design

Unplanned structure and design

Comments:

  • No clear step-by-step flow.
  • No indication of what each section is for, and whether you need to do them all.
  • Other comments? [This is a good place for discussion amongst the workshop participants.]

Language and style

[This section contains a few key tips on language and style - the bread and butter of technical writers, but not necessarily well known by other people.]

Keep it short and simple

Use simple words and short sentences.

Use active voice rather than passive

[Explain the difference between active and passive. Hold a bit of a discussion here. This is a difficult concept for many people.]

Examples:

  • Passive: The chocolate was eaten by the technical writer.
  • Active: The technical writer ate the chocolate.

Why use active voice? It’s shorter. And passive voice can be confusing, because sometimes it doesn’t say who must do what. Imperative (command) is even better, when appropriate.

Bad:

“Your browser must be configured to xxx.”
Reader thinks: OK, so I’ll assume someone has already done that for me when setting up my machine.

Good:

“Configure your browser to xxx.”
Reader thinks: OK, I’ll do that now.

Clarify technical terms and abbreviations

Explain important concepts at the top of the page.

Spell out each abbreviation the first time you use it on a page. For example:

If you’re using IE (Internet Explorer), ….

…with regard to Workplace, Health and Safety (WHS).

Titles

The title is your most important tool for helping people find your document. This is especially true on a Confluence wiki, where people use the quick search a lot. The quick search is based entirely on the page title.

  • Put the key information at the beginning of the title.
  • Make the title describe the purpose of the document.

How to go about writing a page

[After quite a bit of conceptual and theoretical information, the workshop participants welcome a practical guide at this point.]

Step by step:

  1. Decide on your audience.
  2. Write the purpose.
    First write it for yourself, then refine it for the audience. This helps to form the content of the page.
  3. Write the title.
  4. Outline the document by creating the headings.
  5. Fill in the details.
    Keep each section short.
  6. If unsure, or struggling to find the right words, make a “TO DO” note and continue. Come back later.
    Hint: I use “xxxxxxxxxxxxxx” instead of “TO DO”. It’s quick to type, strangely satisfying, easy to search for, and stands out when I’m reviewing the page. [This bit often leads to some animated discussion amongst workshop participants. Some of them already do something similar. Others love the idea, and smile with delight.]
  7. Review the content yourself:
    • Have you included everything you intended to include?
    • Can you cut anything out?
    • Should you split the document?
    • Is your language and tone right for the audience?
  8. Ask someone else to review the page.
    As any writer will tell you, it’s impossible to review your own work. Your brain knows what you wanted to say, and that’s what your brain will see even if that’s not what’s written.
  9. If possible, do some user testing.
    Grab a colleague from a different department. Get a different perspective!
  10. Watch the page, and update it based on comments.

More about structure, at space level (specifically for Confluence wiki)

[It's time for more theory.]

We’ve already talked about the structure of page. The structure of your space also important. People often need to browse to see what’s available. Perhaps they don’t know what to search for, but they do know the general area they’re in.

Scenario: Jack searches for “proxy” and finds a page. But it’s not the one he wants. So he looks at the nearby pages.

How:

  • Group related topics under a common parent.
  • Use the Documentation theme to show the space structure.

Making sure people find your page

Already discussed:

  • Structure of a wiki space
  • Page titles
  • Links to related topics

In addition to the above, let’s look at SEO (search engine optimisation) both internal (on the intranet, for the Confluence search engine) and external (on the corporate blog, for Google etc).

These are the key points for making sure people find your page or post:

  • Make the title meaningful, with important words near the beginning.
  • Make sure the URL contains real words.
    If you are blogging on Confluence, don’t use special characters like “?” in a page title, because the resulting URL will not contain words.
  • Decide the key words for your post. These are the key concepts, and the ones the people are likely to look for when searching.
  • Put your key words at the top of the post, in the introductory paragraph.
    This ties in well with our structure, where the first section contains a introduction and a summary of the story.
  • Put your key words in the headings in your post.

Tools

  • Templates and blueprints – make some of your own.
  • Use the spell checker in the browser.
  • Gliffy is great for simple diagrams.

Other hints

  • Writing is a creative process, and it keeps happening even when you think you’ve stopped!
    You’ll find yourself thinking of stuff to add to your document at odd times. While walking in the bush. Or in the middle of the night. Make a note. Email yourself. Put it on Remember The Milk. Whatever works. Such ideas are gems. Don’t lose them.
  • Optimise your page for people using mobile.
    No section and column macros (on Confluence wiki).
    Short sections with lots of headings.
  • Limit the number of note- and warning-boxes to a maximum of two per page. Using more than this can indicate an organisational problem in the text.

Writing blog posts

[This is just a summary. We have another workshop that focuses on blog posts.]

Your blog post is likely to be technical, so the process of writing it has much in common with writing a technical document.

Here are some quick pointers:

  • Maintain a character in your blog, so that people can start seeing it as a friend. Blogging is a social activity. Be yourself! Otherwise it’s difficult to maintain a consistent persona and people will soon pick it up if you don’t sound real.
  • If you’re writing on the corporate blog, ask for guidelines about the tone and style to use.
  • Write each post around a story or a ‘hook’. This will give the post a theme, making it easier for you to write and easier for people to read.
  • Make sure the title reflects the main story. This will attract readers and give you a good position in search results such as Google or Bing.
  • Add structure to the content. Yes, even in a blog post. Put headings in the post itself. Split the information into easily-readable chunks.
  • Give plenty of factual information, preferably hard-won. That’s what people value. Code samples and screenshots are great.
  • Link to other people’s blogs. If your idea is an expansion of something someone else has written, include a mention of where you got the idea. If you’ve seen someone’s post about a related topic, link to it. The other bloggers appreciate this and will start linking back to you in return.
  • Be nice, positive and sincere. If you disagree with something, say so but be constructive. Some bloggers are successful by being horrid, but to make that work you have to be really good and have a curl on your forehead. I don’t like nastiness, manipulation or one-upmanship, so I wouldn’t recommend it.

Resources

  • Kurt Vonnegut:

    Here’s my all-time favourite: Kurt Vonnegut’s How to Write With Style.

    The best thing about Kurt’s guide is that it illustrates his principles so perfectly. This excerpt is from the section called “Sound like yourself”:

    …lucky indeed is the writer who has grown up in Ireland, for the English spoken there is so amusing and musical. I myself grew up in Indianapolis, where common speech sounds like a band saw cutting galvanized tin, and employs a vocabulary as unornamental as a monkey wrench.

    This bit is pretty cool too:

    Pity the readers

  • Avoiding framed and decorated text boxes:
  • [Link to your corporate style guide here.]

That’s the end

In designing the content of the workshop, my aim was to give the participants as much practical guidance as possible in a short space of time. I picked the top things we technical writers know, about how to make a document work.

To add variety to the one-hour session, I chose a mix of theory and discussion sections. The sessions to date have been lively and interactive. We ask participants to complete a feedback form a week or so after each session.

The actual writing happens after the session, in the participants’ own time. They can then request a one-on-one review with a technical writer, before publishing their document either internally or for the whole wide world. Participants have expressed their thanks and said the content is useful, and have indicated a wish to attend a follow-up session.

What do you think of this type of workshop, and its potential as a way technical writers can add even more value to our organisations that we already do? I’d love to hear if you have run something similar within your own organisation too.

Banner blindness and technical documentation

We had an interesting discussion in our team at Atlassian this week, about framed, decorated boxes containing tips, warnings and notes. Should we use them? I’d seen some user testing results that suggest people don’t read content in such boxes. Another writer pointed out that the tests didn’t focus on technical documentation specifically, and that people may expect and therefore take notice of  framed notes in technical documentation.

The research is by Jakob Nielsen, a well-known designer of user interfaces:

I found both articles enlightening, with their focus on tracking the eye movements of the test subjects. In particular, the videos are worth watching.

How to highlight notes if not in boxes?

User testing shows that people skim a page by jumping from heading to heading. One way to bring notes to their attention is therefore to have a “Notes” heading, followed by bullet-pointed notes.

If a note contains more than a sentence or two, it’s probably worthy of its own heading and short section.

What about speech bubbles?

Anne Gentle wrote about drawing speech bubbles in your documentation, to bring particular items to a reader’s attention. She’s using CSS to draw the bubbles. Very cool! Anne’s post led me to wonder if people are more likely to read content that’s in speech bubbles rather than rectangular boxes. Perhaps we’re conditioned to notice speech bubbles, and to think of them as likely to contain information that’s relevant and easily consumable.

What do you think?

This is such an interesting topic! I’d love to know the thoughts of other technical writers and of people who read documentation. Do you tend to ignore words enclosed in boxes? Have you done or seen any user testing that indicates whether people unconsciously skip over notes in framed, decorated boxes? Can we “train” our readers to read such blocks of content, by consistently using the same format for notes and warnings? But then, what if our documentation is web-based and so every page is page one, as Mark Baker so eloquently puts it – will the reader who comes surfing in off the ad-riddled web be conditioned to ignore text in boxes?

How to manage attachment usage in Confluence wiki with some Python scripts

Do you need to find out whether the attachments on a Confluence wiki page are used anywhere in the space? Having discovered they’re not, do you want to delete them from the page? I’m hoping this post will help.

The Confluence user interface doesn’t offer the option to delete attachments in bulk. Nor does it offer any way of cross-referencing attachment usage. You can’t get a list of attachments and find out where they’re used. So, I’ve written four Python scripts that you can run consecutively to do the following:

  • Get a list of all attachments on a given page.
  • Get the content of all pages in a given space.
  • Produce two reports, one listing the attachments that are not referenced anywhere in the space, and the second showing the attachments that are referenced and the pages that use them.
  • Accept a list of attachment names and delete them from a given page.

Our use case

In the Confluence documentation we have a page called Space Attachments Directory. It’s been there for yonks. It has an enormous number of screenshots attached to it (396, to be precise). The page was created in 2005, with the aim of storing screenshots that can be re-used on various pages. A good aim in principle, but in practice unmanageable when applied across a large space maintained by many authors. Various technical writers over the years have either used or not used this page and its attachments.

As a result, we didn’t know how many of the attachments are actually used anywhere in the space. I suspected that only a few of the attachments were still in use.

Python to the rescue.

The scripts

The four Python scripts are available on Bitbucket. Please feel free to download and use them. If you have any suggestions for improvement, I’d love to hear them.

A friendly warning: These scripts are provided “as is” and without any guarantees. I developed them to solve a specific problem. I’m sharing them because I hope they will be useful to others too. If you have any improvements to share, please let me know.

1. getConfluencePageAttachments.py: Gets all attachments on a given Confluence page. It puts the list of attachments into a text file, and prints a report of the number of attachments and total file size.

2. getConfluencePageContent.py: Gets the content of all pages in a given Confluence space. It puts the content of each page into a separate text file, in a given directory. The content is in the form of the Confluence “storage format”, which is a type of XML consisting of HTML with Confluence-specific elements. A note for the curious: The “wherePageContent.py” script is a dummy, which simply tells you where to find getConfluencePageContent.py, which I wrote for a different purpose and which works well here too. (We need content re-use on Bitbucket!)

3. findAttachmentUsage.py: Reads a text file containing attachment file names, matches them against the source of Confluence pages, and produces a report on used and unused attachments.

4. deleteAttachments.py: Reads a text file containing attachment file names, accepts a Confluence page name, and removes the given attachments from the page.

Note: To run scripts 1, 2 and 4 successfully, you need access to Confluence, and the Confluence remote API must be enabled. Script 3 does all its work in text files. It’s like greased lightning.  :)

So, in my use case, how many of the attachments are actually used?

71

That’s right. Of the 396 attachments on the “space attachments directory” page, only 71 are still in use. The other 325 are taking up space on our documentation wiki, taking up space in our XML exports, and slowing down our processes when we copy the Confluence documentation to the OnDemand space.

What’s next?

After some final testing, I’ll run the scripts on our production wiki next week. The first candidate is the Space Attachments Directory page. We’ll look at other pages that have a large number of attachments too.

The findAttachmentUsage.py script produces a cross-referenced list of matched attachments and the pages that reference them. We may use that cross-reference to decide whether we want to retain the “space attachments directory”. We may decide instead to move all the attachments to the pages where they’re used, and remove the shared page.

How to run the Python scripts

New to Python? It’s fun, and remarkably easy. This earlier post describes how to download and use Python: Confluence full-text search using Python and grep. There’s more about Python, and some interesting comments from readers, on this post: Python as a useful tool for technical writers.

Python as a useful tool for technical writers

Every now and then, and perhaps particularly so when working on a wiki, we technical writers need to manipulate our content in some way that’s not provided by our content management system. A few times recently, I’ve dabbled with Python to solve some problems. Do you often find the need to wrangle your content outside your CMS, and do you use Python or another scripting tool?

Python is a scripting language. It’s easy to learn, especially if you’ve done some programming in other languages. It’s just the ticket for data manipulation. It also offers a number of useful libraries. For example:

  • There are various libraries that you can use to access a web application via a SOAP or an XML-RPC remote API. I use the “xmlrpc.client” library in a few scripts, to get access to Confluence data.
  • The “os” library is useful for creating directories on the local file system of the computer you’re running on. For example, I use it to create a directory for the script’s output file.
  • The “re” library offers regular expression functions.

A script to find duplicate page names across Confluence spaces

This was the first Python script that I wrote to wrangle Confluence data. I started with a specific problem: I had five text files, each containing a list of page names. These were the pages in five Confluence spaces, that we needed to copy into another, single space. The problem is that Confluence does not allow duplicate page names within a space. So I needed to check my lists for matching page names.

I hacked together a Python script that checked for duplicate page names. The script reads a text file containing Confluence space keys and page names, and reports on duplicate page names. My first script used nested lists to store and compare the page names. A kind Atlassian developer reviewed the script and suggested I use a dictionary instead. So I did. A dictionary stores data in key-value pairs. Much neater!

Then I thought: Some people may not have their page names in a handy text file. They may want to get a list of all pages in a Confluence space. So I wrote a script to get the names of all pages in a given set of Confluence spaces.

The details of the scripts are in this post: How to find duplicate page names across Confluence spaces.

A script to get the source code of all pages in a Confluence space, for a full-text search

The search functionality in the Confluence web interface will return results from the visible content of the page, but it cannot get inside the XML-like elements that make up the Confluence storage format. For example, it’s not possible to find all pages that reference a certain image. And you can’t search for macro parameter values. This means, for example, you can’t search for all pages that include content from a given page.

Just recently I wrote a script that gets the XML storage format of all pages in a given Confluence space, and puts the code into text files on your local machine. Then you can use a powerful full-text search like grep, to find what you need. The details are in this post: Confluence full-text search using Python and grep

More on the way

I’m currently writing a couple more Python scripts to solve another problem. I’ll blog about it when I’ve finished.

Resources

If you’re interesting in Python, here are some links you many find useful:

A chuckle, courtesy of the Python technical writers

From the Python documentation:

By the way, the language is named after the BBC show “Monty Python’s Flying Circus” and has nothing to do with reptiles. Making references to Monty Python skits in documentation is not only allowed, it is encouraged!

Probably not a python

Last week I was lucky enough to be in New Orleans in the USA. I went on a tour of the Honey Island swamp, and saw this snake coiled comfortably on a tree trunk. I’m not sure what type of snake it is. Maybe a Copperhead:

Python for technical writers

What do you use?

Do you often use Python or some other scripting tool to automate those pesky tasks your CMS can’t handle?

Doc sprints at STC Summit 2013 #stc2013

STC Summit 2013 is fast approaching. I’m looking forward to getting the latest gen on all things #techcomm, meeting old friends, and making new acquaintances. I’ll also be giving a presentation on doc sprints!

Update on Wednesday 7 May 2013: The report on the actual presentation is now available: http://ffeathers.wordpress.com/2013/05/08/doc-sprints-at-stc-summit-2013-the-presentation/

A doc sprint is similar to a book sprint. It’s an event where a group of people get together for a couple of days and write tutorials, or a book, or other forms of documentation. Often there’s coding involved too. And always, plenty of fun, making new contacts, and learning cool new technologies.

Doc Sprints: The Ultimate in Collaborative Document Development

My presentation is called Doc Sprints: The Ultimate in Collaborative Document Development. It’s full of information about planning and running a doc sprint, and how doc sprints are useful in developing the documentation our readers need.

Even more exciting: there are a number of stories and tips, gleaned from doc sprinters around the world. Thanks to Anne Gentle, Swapnil Ogale, Ellis Pratt, Katya Stepalina, Andreas Spall, Jay Meissner, and Peter Lubbers, for contributing their ideas!

The presentation covers these topics:

  • Introduction to doc sprints, agile environments, and why a doc sprint is a good fit for technical documentation.
  • Who to invite, when to start, and how to ensure that the sprint will produce the documents you need.
  • How to get the best out of the sprinters.
  • Collaborative tools for use during the sprint.
  • Sprinting across the world: Handling multiple time zones, early sprinters, late sprinters.
  • How to run a retrospective, and why.
  • Reviewing and publishing the documents, and writing up the results.
  • Other innovative types of sprints for documentation teams.

Here’s what the presentation looked like a few weeks ago:

Doc sprints at STC Summit 2013

Come to my session at STC Summit 2013 to see how it’s turned out. :)

Follow

Get every new post delivered to your Inbox.

Join 260 other followers

%d bloggers like this: