Secrets of Writing Good Documentation

At the upcoming APIStrat conference in Portland, Taylor Barnett will explore various documentation design principles and discuss best practices.


Taylor Barnett, community engineer at Keen IO, says practice and constant iteration are key to writing good documentation. At the upcoming 2017 API Strategy & Practice Conference, taking place October 31-November 2 in Portland, Barnett will explain the different types of documentation and outline some of the best practices.

In his talk - "Things I want people to tell me about when writing documentation" - Barnett will look at how people use documentation and discuss tools and tactics to include other team members in writing documentation. Barnett explains in more depth in this edited interview.

Linux Foundation: What brought you to this conversation? Have you seen projects with bad documentation?

Taylor Barnett: Last year my teammate Maggie Yang and I led the effort to improve content and developer documentation at Keen IO. It's no secret that developers love great documentation, but many API companies aren't always equipped with the resources to have one. As a result, we all encounter a lot of bad documentation when we try to use developer tools and APIs.

Linux Foundation: There is often a documentation team, and there are developers who have written a piece of software; both are experts in their fields, but they need to be good at collaborating to produce usable documentation. How can this level of cooperation be achieved?

Barnett: In large companies this can certainly be true, although in many companies the documentation still belongs to different teams. However, there is still a need to improve the interaction. One way to improve collaboration is to write documentation early in the product development process. If you wait until everything is done and the product is ready for release, the people writing the documentation will feel disconnected from the process and see themselves as secondary. If people working on product development collaborate early on, not only does the product improve, but so does the documentation. People who write documentation usually spend some time understanding the API or tool they are writing about, so they only get better when they can work with the people who develop the product. Also, they can give more feedback from the user's point of view much sooner.

Another way to improve collaboration is to involve more people in the documentation review process. We do most of our documentation reviews on GitHub. It's great that the code is reviewed not only by someone in the role of an editor, but also by people from the engineering team and the production team. This increases the number of diversified views of the documentation and helps make it better.

Linux Foundation: How should developers approach documentation?

Barnett: Most developers are very familiar with the idea of Test Driven Development (TDD), but how familiar are they with Documentation Driven Development (DDD)? DDD steps:

  1. Write or update documentation,
  2. Get feedback on this documentation,
  3. Write a failure test according to this documentation (TDD),
  4. Write the code to pass the failure test,
  5. Repeat.

This can be a great way for developers to save a lot of time and not spend too much time on poorly designed features. As Isaac Schlueter, co-founder of npm, says about documentation development, "It's an effective way to increase productivity by reducing both error rate and cost." Our brains can only store a limited amount of information at once. In computer terms, our working memory is quite small. Writing down what we think about is a way to "offload a large chunk of thought without data loss," allowing us to think more slowly and carefully.

For example: At Keen IO, we recently split our JavaScript library into three different modules. This decision was inspired by the documentation we maintained. We tried to streamline the documentation, but it was too much to cover everything with limited attention. Many important details and functions were hidden in the noise. For example, if all the documentation had been written earlier, we might have made this decision earlier.

In addition, for a developer who writes documentation himself, constant repetition and practice are important. Your first version of the documentation won't be great, but by focusing on trying to write understandable text, it will get better over time. It's also important to have another person who isn't familiar with the product who can review your documentation.

Linux Foundation: if developers write documentation for other developers, how can they think like users?

Barnett: I used to think that developers are the best people to write documentation for other developers because they are one. I still think this is partly true, because some developers have a lot of knowledge. If some time has passed since the developer has learned something, there may be a so-called "curse of knowledge". The more you know, the more you forget how it was before. That's why I love talking about empathic documentation.
You need to empathize with the user on the other end. Don't assume he knows how to do anything, give the user the resources to complete steps that you may find "easy". Also, the notion that something is "easy" or "simple" when it doesn't work for the user is the scariest feeling for the user. It makes your users doubt themselves, feel frustrated, and a bunch of other negative emotions. Always try to remember that you need to be empathetic!

Linux Foundation : How important are documentation tools?

Barnett: Very important! Earlier, I mentioned using GitHub for reviews. I'd also recommend doing ongoing integration testing on your documentation site if you're not using a service like ReadMe or Apiary to make sure you don't break it. Related topic: Are you building your own product or using a service? Tools can be helpful, but they may not always be optimal. You must find a balance based on your current resources. Finally, I would recommend trying Ann Gentle's book, Docs Like Code. She brings up the topic of tools many times in the book.

Linux Foundation: Who should attend your session?

Barnett: Everyone! I'm just joking. If you are someone in a developer role such as relationship developers, evangelists, advocates, marketers, etc., if you are on a production team as a product or platform developer, or if you are a developer or engineer who wants to write great documentation.

Linux Foundation: What is the main message of your conversation?

Barnett: Anyone can write documentation, but with some practice, iteration, and work on different writing skills, anyone can write great documentation.

Learn more in Taylor Barnett's talk at APIStrat, October 31 - November 2 in Portland, Oregon.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
AD

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:50points,
  • Rating points-4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:80points,
  • Rating points4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:20points,
  • Rating points-10
Last comments
Evgenii Legotckoi
Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEOct. 19, 2024, 8:19 a.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовOct. 5, 2024, 7:51 a.m.
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5July 5, 2024, 11:02 a.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrFeb. 8, 2024, 6:43 p.m.
Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Now discuss on the forum
Evgenii Legotckoi
Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Nov. 15, 2024, 6:04 a.m.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectJune 4, 2022, 3:49 a.m.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimOct. 25, 2024, 9:10 a.m.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Follow us in social networks