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:
- 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
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.]
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.
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.]
- 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.]
[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.]
- 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.]
- 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.
“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.
“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).
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:
- Decide on your audience.
- Write the purpose.
First write it for yourself, then refine it for the audience. This helps to form the content of the page.
- Write the title.
- Outline the document by creating the headings.
- Fill in the details.
Keep each section short.
- 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.]
- 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?
- 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.
- If possible, do some user testing.
Grab a colleague from a different department. Get a different perspective!
- 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.
- Group related topics under a common parent.
- Use the Documentation theme to show the space structure.
Making sure people find your page
- 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.
- Templates and blueprints – make some of your own.
- Use the spell checker in the browser.
- Gliffy is great for simple diagrams.
- 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.
- 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.
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.
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:
What do you use?
Do you often use Python or some other scripting tool to automate those pesky tasks your CMS can’t handle?
Today is the last day of STC Summit 2013, the annual conference of the Society for Technical Communication. All the sessions are finished, and I’m wrapping up my blogging before getting on a plane. You’ll find my posts under the tag stc13 on this blog.
Kudos and a big vote of thanks to Paul Mueller, Chris Hester and the STC conference committee for organising such a great event. From my point of view, the organisation was flawless. I had fun, learned a lot, met great people, and spoke my piece to my satisfaction too. All of those are thanks to the hard work of the organisers.
There were 80+ education sessions, spread over 7 tracks, as well as various workshops, demos, trade expositions, training sessions and social events. I’ve blogged about the sessions I attended. Please take the posting dates with a pinch of salt. My WordPress site is set to Australian time.
- Data visualisation
- A marketing communications career
- Engaging infographics
- Doc sprints (this is the session I presented)
- Conveying messages with graphs
- Creating user experience for gamified products
- From technical writer to content strategist
- Documentation teams and company mergers
- Flexible content and future-ready organisations
- Information development flexibility in Agile
- EPUB and technical communication
Because there were many sessions running concurrently, it’s not possible to attend them all. I also attended a progression (a sequence of short talks within the space of an hour) where the pace was too fast for me to take notes.
More sources of information
Kai Weber has published some posts about the conference. Knowing him, he’ll come up with more once he’s made the long trip back to Germany. See posts tagged “stc13″ on Kai’s blog.
Twitter is very active at the moment. You can catch the tweets on the #stc hash tag. That feed will fade in a few days, when the Twitter search API times the entries out.
You’ll find a full list of sessions, along with information about the speakers and related links for each session, at the STC Summit 2013 site on Lanyrd.com.
I’m sure the STC will publish a summary and more links soon. And there are other bloggers around too. Stay tuned!
For a touch of light relief: A report from the intrepid band of STC ghost busters.
At the opening session and keynote presentation on Sunday. The stage before the action starts:
The audience getting ready for the big event:
The keynote speaker was David Pogue, technology columnist for the New York Times and creator of the Missing Manuals series. At this Summit, David was awarded honorary membership of the STC. Here’s Alan Houser, outgoing STC president, with David Pogue:
David in full swing:
Intrepid ghost hunters on the Atlanta Ghost Tour:
Nope, not really convinced there’s a ghost around here, but we’re having fun anyway:
Thanks again everyone at stc13!