SlideShare a Scribd company logo
1 of 61
Download to read offline
Writing Great
Documentation

  jacob@jacobian.org
66,000 lines of Python
75,000 lines of English
In Search of Lost Time   1,500,000

Infinite Jest              484,000

Django                    360,000

New Testament             180,000

Your first manuscript       60,000
“The documentation and community are second to none.”


“[W]e’ve found that people …can get up-to-speed relatively
quickly thanks to the excellent documentation…”


“Django … provides an excellent developer experience, with
great documentation and tutorials…”


“Our initial choice … was based on the strength of the
Django community and documentation…”


“Productive development, good documentation, flexibility,
and it just works.”

                                            http://j.mp/hnOsVl
My goal:
Documentation
   Culture.
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
First contact - new users.
First contact - new users.

Education - new & existing users.
First contact - new users.

Education - new & existing users.

Support - experienced users.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.

Internals - your fellow developers.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.

Internals - your fellow developers.

Reference - everyone.
Documentation is Communication.
Great documentation
has to serve multiple,
conflicting masters.
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Anyone!
Anyone!
  But...
“A great way for new contributors to
get started with our project is to
contribute documentation.”
1. Use a wiki.

2. ...?

3. Great documentation!
A wiki tells me that you don’t really care
about your documentation.

So why should I care about
your software?
Great documentation
    is written by
 great developers.
“The code required to fix a problem… is an
essential part of a patch, but it is not the
only part. A good patch should also
include a regression test to validate the
behavior that has been fixed.”
“If the… patch adds a new feature, or
modifies behavior of an existing feature,
the patch should also contain
documentation.”
Documentation
Driven
Development?
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Tutorials

Topic guides

Reference

Troubleshooting
Tutorials
Quick - a new user should experience
        success within 30 minutes.

Easy - help users feel epic win.

Not too easy - don’t sugar-coat the truth.

Show off how the project feels.
Topic guides

Conceptual - foster understanding,
             not parroting.

Comprehensive - explain in detail.

Tell me the why of the topic.
Reference

Complete. Docs or it doesn’t exist.

Designed for experienced users.

Give me the how of the topic.
Auto-generated reference
documentation is almost worthless.
There’s no substitute
  for documentation
 written, organized,
and edited by people.
Troubleshooting


Answers to questions asked in anger.

FAQs are great as long as the Qs are
really FA’d.
Great documentation
     is fractal
Tutorials

Topic guides

Reference

Troubleshooting
Project:
Tutorials, getting started.

Topic guides, How-to guides.

Reference material, APIs, indexes, search.

Troubleshooting guides, FAQs, KBs.
Document:
Introduction.

Overview guide.

Details, cross-references, next steps.

Notes, warnings.
Section:
Overview.

Tasks & examples.

Detailed descriptions.

Common pitfalls, warnings.
Element:
Examples.

Detailed instructions.

API documentation.

“If it didn’t work….”
Documentation is fractal
Inspiration: Jeff Osier-Mixon, Effectively Managing Documentation for Open Source Projects. http://bit.ly/g0PLFB


                                                   Topic                                 Trouble-
                            Tutorials                               Reference
                                                  guides                                 shooting

                            Tutorials,                                 APIs,
                                                 Guides,                                    FAQs,
        Project              Getting                                 indexes,
                                                 How-tos                                     KB
                             started                                  search

                         Introductory            How-to              See also,            Notes,
      Document
                           material              guides             next steps           warnings

                                                  Tasks,            Cross-ref -          Common
        Section            Overview
                                                examples           other topics           pitfalls

                                                Detailed            Cross-ref -         “If it didn’t
       Element             Examples
                                              instructions           API docs             work…”
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Tools don’t matter.
Tools don’t matter.
     (For the most part.)
Text is best.

Aesthetics are important.

Discoverability is vital.
http://sphinx.pocoo.org/
Read the Docs                                                                     Sign up
            Create, host, and browse documentation.
                                                                                             or Log in




                    Read the Docs
What is this place?
Read the Docs hosts documentation, making it fully searchable and easy to find. You can import your docs
using any major version control system, including Mercurial, Git, Subversion, and Bazaar. It also supports
webhooks so your docs get built when you commit code. There's also support for versioning so you can build

                            http://readthedocs.org/
docs from tagged versions of your code in your repository. You can even create docs on the site. It's free and
simple. Read Getting Started and find out how to host your docs on Read the Docs!




Find a project

                                                                                      Let's do this.




Featured Projects

  Celery (asksol)                                                                                View Docs
Docco
 Pycco
Rocco
Shocco
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Everyone reads documentation.

Who should write documentation?

What should we document?

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

What should we document?

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

Great documentation is fractal.

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

Great documentation is fractal.

Tools don’t matter. But use good ones!
My goal:
Documentation
   Culture.
Go.
  Write.

jacob@jacobian.org

More Related Content

What's hot

Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
Fabien Potencier
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Julien Lecomte
 
Django Framework and Application Structure
Django Framework and Application StructureDjango Framework and Application Structure
Django Framework and Application Structure
SEONGTAEK OH
 

What's hot (20)

JavaScript-Core
JavaScript-CoreJavaScript-Core
JavaScript-Core
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
 
Ant User Guide
Ant User GuideAnt User Guide
Ant User Guide
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
UKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino DeveloperUKLUG - Open The Toolbox - Tools for the Domino Developer
UKLUG - Open The Toolbox - Tools for the Domino Developer
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?
 
The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)The Solar Framework for PHP 5 (2010 Confoo)
The Solar Framework for PHP 5 (2010 Confoo)
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 
Django by rj
Django by rjDjango by rj
Django by rj
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
iPhone Coding For Web Developers
iPhone Coding For Web DevelopersiPhone Coding For Web Developers
iPhone Coding For Web Developers
 
Action-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVCAction-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVC
 
遇見 Ruby on Rails
遇見 Ruby on Rails遇見 Ruby on Rails
遇見 Ruby on Rails
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
 
Django Framework and Application Structure
Django Framework and Application StructureDjango Framework and Application Structure
Django Framework and Application Structure
 

Viewers also liked

Going Native With The OSGi Service Layer - Sascha Zelzer
Going Native With The OSGi Service Layer - Sascha ZelzerGoing Native With The OSGi Service Layer - Sascha Zelzer
Going Native With The OSGi Service Layer - Sascha Zelzer
mfrancis
 

Viewers also liked (6)

Jenkins without Install
Jenkins without InstallJenkins without Install
Jenkins without Install
 
Going Native With The OSGi Service Layer - Sascha Zelzer
Going Native With The OSGi Service Layer - Sascha ZelzerGoing Native With The OSGi Service Layer - Sascha Zelzer
Going Native With The OSGi Service Layer - Sascha Zelzer
 
Telling stories through your commits - Lead Developer Conference 2016
Telling stories through your commits - Lead Developer Conference 2016Telling stories through your commits - Lead Developer Conference 2016
Telling stories through your commits - Lead Developer Conference 2016
 
Libvirt and bhyve under FreeBSD
Libvirt and bhyve under FreeBSDLibvirt and bhyve under FreeBSD
Libvirt and bhyve under FreeBSD
 
Commit messages - Good practices
Commit messages - Good practicesCommit messages - Good practices
Commit messages - Good practices
 
Protecting Source Code
Protecting Source CodeProtecting Source Code
Protecting Source Code
 

Similar to Writing great documentation - CodeConf 2011

Doing a Literature Review - Part 2
Doing a Literature Review - Part 2Doing a Literature Review - Part 2
Doing a Literature Review - Part 2
Damian T. Gordon
 

Similar to Writing great documentation - CodeConf 2011 (20)

Docs as-code-missing.-manual
Docs as-code-missing.-manualDocs as-code-missing.-manual
Docs as-code-missing.-manual
 
Patterns, Components, and Code, Oh My!
Patterns, Components, and Code, Oh My!Patterns, Components, and Code, Oh My!
Patterns, Components, and Code, Oh My!
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source Projects
 
Open-Source Project Tools for Corporate Projects?
Open-Source Project Tools for Corporate Projects?Open-Source Project Tools for Corporate Projects?
Open-Source Project Tools for Corporate Projects?
 
Humanidades digitales por Ryan Shaw (University of North Carolina at Chapel H...
Humanidades digitales por Ryan Shaw (University of North Carolina at Chapel H...Humanidades digitales por Ryan Shaw (University of North Carolina at Chapel H...
Humanidades digitales por Ryan Shaw (University of North Carolina at Chapel H...
 
BarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian MulvanyBarCamb Connotea by Ian Mulvany
BarCamb Connotea by Ian Mulvany
 
Open Peer Review Meets Open Archives CERN2001
Open Peer Review Meets Open Archives CERN2001Open Peer Review Meets Open Archives CERN2001
Open Peer Review Meets Open Archives CERN2001
 
Doing a Literature Review - Part 2
Doing a Literature Review - Part 2Doing a Literature Review - Part 2
Doing a Literature Review - Part 2
 
How To Contribute Drupalcon
How To Contribute   DrupalconHow To Contribute   Drupalcon
How To Contribute Drupalcon
 
Fossetcon15
Fossetcon15Fossetcon15
Fossetcon15
 
Scale2016
Scale2016Scale2016
Scale2016
 
Wiser Pku Lecture@Life Science School Pku
Wiser Pku Lecture@Life Science School PkuWiser Pku Lecture@Life Science School Pku
Wiser Pku Lecture@Life Science School Pku
 
Wiserpku Lecture@Life Science School Pku
Wiserpku Lecture@Life Science School PkuWiserpku Lecture@Life Science School Pku
Wiserpku Lecture@Life Science School Pku
 
FSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: DocumentationFSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: Documentation
 
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
DevRel Salon - Writing Decent Documentation, a learning journey with plenty o...
 
N vivo tutorial 2020
N vivo tutorial 2020N vivo tutorial 2020
N vivo tutorial 2020
 
Agile presentation
Agile presentationAgile presentation
Agile presentation
 
Olf2016
Olf2016Olf2016
Olf2016
 
Libraries meet research 2.0
Libraries meet research 2.0Libraries meet research 2.0
Libraries meet research 2.0
 
Evaluating Electronic Resources
Evaluating Electronic ResourcesEvaluating Electronic Resources
Evaluating Electronic Resources
 

More from Jacob Kaplan-Moss

Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)
Jacob Kaplan-Moss
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of Django
Jacob Kaplan-Moss
 
Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009
Jacob Kaplan-Moss
 
Django - the first five years
Django - the first five yearsDjango - the first five years
Django - the first five years
Jacob Kaplan-Moss
 
A brief history of Django model syntax
A brief history of Django model syntaxA brief history of Django model syntax
A brief history of Django model syntax
Jacob Kaplan-Moss
 

More from Jacob Kaplan-Moss (11)

Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)Introduction To Django (Strange Loop 2011)
Introduction To Django (Strange Loop 2011)
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of Django
 
What's new in Django 1.2?
What's new in Django 1.2?What's new in Django 1.2?
What's new in Django 1.2?
 
Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009Django Introduction, Dev in Rio 2009
Django Introduction, Dev in Rio 2009
 
Snakes on the Web
Snakes on the WebSnakes on the Web
Snakes on the Web
 
Building a web framework: Django's design decisions
Building a web framework: Django's design decisionsBuilding a web framework: Django's design decisions
Building a web framework: Django's design decisions
 
Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
 
State Of Django
State Of DjangoState Of Django
State Of Django
 
Django - the first five years
Django - the first five yearsDjango - the first five years
Django - the first five years
 
A brief history of Django model syntax
A brief history of Django model syntaxA brief history of Django model syntax
A brief history of Django model syntax
 
Django Update (OSCON 2007)
Django Update (OSCON 2007)Django Update (OSCON 2007)
Django Update (OSCON 2007)
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Writing great documentation - CodeConf 2011