SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
THINGS I WISH PEOPLE TOLD
ME ABOUT WRITING DOCS
@taylor_atx
Community Engineer at Keen IO
taylor@keen.io
@taylor_atx
TAYLOR BARNETT
HOW DO PEOPLE
ACTUALLY READ DOCS?
@taylor_atx
@taylor_atx
https://www.nngroup.com/articles/f-shaped-pattern-reading-web-content
IMPLICATIONS OF F SHAPE
• First two paragraphs must state the most important
information
• Further, the first 3-5 words are very important
• Start headers, paragraphs, and bullet points with information-
carrying words
• Variations in typeface (text size, links, bold, etc)
@taylor_atx
STRUCTURE
• Prevent search failure - what the users wants doesn’t stand
out
• One idea per paragraph, if there’s more than one, split the
paragraphs
• Users skip over things that look like ads
• Aim for 65-90 characters in width
@taylor_atx
USABILITY VARIES: PARAGRAPH VS BULLETS
@taylor_atx
USABILITY VARIES: PARAGRAPH VS BULLETS
Event collections can have
almost any name, but there
are a few rules to follow: The
name must be 64 characters
or less. It must contain only
Ascii characters. It cannot be
a null value.

@taylor_atx
USABILITY VARIES: PARAGRAPH VS BULLETS
Event collections can have
almost any name, but there
are a few rules to follow: The
name must be 64 characters
or less. It must contain only
Ascii characters. It cannot be
a null value.

Event collections can have
almost any name, but there
are a few rules to follow:
• The name must be 64
characters or less.
• It must contain only Ascii
characters.
• It cannot be a null value.
@taylor_atx
USERS ACTUALLY READ
CODE SNIPPETS
@taylor_atx
var client = new Keen({
  projectId: "your_project_id",
  writeKey: "your_write_key"
});
var ticketPurchase = {
  price: 50.00,
  user: {
    id: "020939382",
    age: 28
  },
  artist: {
    id: "19039",
    name: "Tycho"
  }
}
client.addEvent("ticket_purchases", ticketPurchase);
WHAT IS THIS CODE SNIPPET MISSING?
🤔
@taylor_atx
var client = new Keen({
  projectId: "your_project_id",
  writeKey: "your_write_key"
});
var ticketPurchase = {
  price: 50.00,
  user: {
    id: "020939382",
    age: 28
  },
  artist: {
    id: "19039",
    name: "Tycho"
  }
}
client.addEvent("ticket_purchases", ticketPurchase);
WHAT IS THIS CODE SNIPPET MISSING?
• First, how do I even run this?
"
@taylor_atx
var client = new Keen({
  projectId: "your_project_id",
  writeKey: "your_write_key"
});
var ticketPurchase = {
  price: 50.00,
  user: {
    id: "020939382",
    age: 28
  },
  artist: {
    id: "19039",
    name: "Tycho"
  }
}
client.addEvent("ticket_purchases", ticketPurchase);
WHAT IS THIS CODE SNIPPET MISSING?
• First, how do I even run this?
• “ReferenceError: Keen is not defined”
"
@taylor_atx
var client = new Keen({
  projectId: "your_project_id",
  writeKey: "your_write_key"
});
var ticketPurchase = {
  price: 50.00,
  user: {
    id: "020939382",
    age: 28
  },
  artist: {
    id: "19039",
    name: "Tycho"
  }
}
client.addEvent("ticket_purchases", ticketPurchase);
WHAT IS THIS CODE SNIPPET MISSING?
• First, how do I even run this?
• “ReferenceError: Keen is not defined”
• Didn’t set the Project ID and Write Key
"
@taylor_atx
What will this return?
# Copy and paste the following command
$ gem install rails
PREVENT COPY AND PASTE BUGS
🤔
@taylor_atx
What will this return?
# Copy and paste the following command
$ gem install rails
PREVENT COPY AND PASTE BUGS
😔
# Returns “bash: command not found: $”
@taylor_atx
TWILIO
@taylor_atx
WHAT DO I MEAN BY “DOCS?”
API REFERENCES
GUIDES
TUTORIALS
BLOG POSTS*
@taylor_atx
GUIDES
• Somewhere between API references and tutorials
• Similar reference but with prose that explains how to use the
API
• Example: Authorization guide
@taylor_atx
TUTORIALS
• Teach specific things with an API, beginning to end, including
setup
• Tightly focused on a few pieces of functionality
• Includes working sample code
• Example: Getting Started or Hello World tutorial
@taylor_atx
SPRING FRAMEWORK
@taylor_atx
BLOG POSTS
• “Share Knowledge, Not Features” — Adam DuVander
• Features != Benefits
• A blog post should teach, inspire, and help
• Give a preview, then help navigate them to the full docs
@taylor_atx
@taylor_atx
DOCS NAVIGATION AND
UNIVERSAL PRINCIPLES OF
DESIGN
@taylor_atx
1. PROGRESSIVE
DISCLOSURE
@taylor_atx
1. NAVIGATE FROM DOC
SET TO DOC SET
@taylor_atx
DOCS PORTAL HOMEPAGE
PRODUCT HOMEPAGE
SECTION HOMEPAGE
PAGE
@taylor_atx
@taylor_atx
2. IMMERSION
@taylor_atx
2. ALLOW NAVIGATION
WITHIN CONTENT
@taylor_atx
BOTTOM-UP NAVIGATION
• If you tell me I can do something, link to how to do that
something.
• If you tell me I can use something, link to a description of
that something.
• If you mention a concept or an idea, link to a description of
that concept or idea.
— Mark Baker from “Every Page is Page One”
@taylor_atx
@taylor_atx
3. MODULARITY
@taylor_atx
3. REDUCE INFORMATION
FRAGMENTATION
@taylor_atx
@taylor_atx
😨
😨
@taylor_atx
LIBRARIES
SDKS
WRAPPERS
CLIENTS
@taylor_atx
WHY DO BAD NAMES PERSIST?
• Because we don’t realize that the name is bad
• Or we do, but can’t or won’t justify fixing it because we…
• Are tied to it
• Can’t justify the time
• Don’t know the value
• Don’t have the agency to fix it
@taylor_atx
EMPATHY FAILURE
BEGINNER’S MIND FAILURE
@taylor_atx
WORD CHOICE IS HARD
• Hard to give one framework to use, but you can…
• Talk to users, get feedback - ask someone to review it
• Refactor and rewrite
• Search existing names
@taylor_atx
@taylor_atx
ERROR MESSAGES
@taylor_atx
ERROR MESSAGES
ARE AN OPPORTUNITY
@taylor_atx
3 H’S OF GOOD ERROR MESSAGES:
HUMBLE
HUMAN
HELPFUL
@taylor_atx
HUMBLE
• Apologize even if it is not your fault
• Example:
• Sorry, we could not connect to ___. Please check your
network settings, connect to an available network, and try
again.
@taylor_atx
HUMAN
• Speak in human terms
• Example:
• Your API Key is invalid, please try a different key.
@taylor_atx
HELPFUL
• Share what the users can expect or do to fix the problem
• Example:
• Sorry, the image you tried to upload is too big. Try again
with an image smaller than 4000px tall by 4000px wide.
@taylor_atx
WRITING ERROR MESSAGES
1. Acknowledge
2. Apologize
3. Explain
4. Help
@taylor_atx
WRITING ERROR MESSAGES
• Object first, action second
• What the users wants first, how to get there second
• If you can, put the input in the error string
@taylor_atx
ERROR MESSAGE SEO
• If users get an error message often, put the exact text in your
docs
• You can also edit StackOverflow posts
@taylor_atx
HOW DO I GET OTHER
TEAMMATES TO CONTRIBUTE
TO DOCS?
@taylor_atx
“I DON’T HAVE THE TIME”
“DOCS ARE HARD TO MAINTAIN”
“JUST READ THE SOURCE”
“DOCUMENTATION IS USELESS”
— Fred Hebert from “Don't be a Jerk: Write Documentation”
@taylor_atx
MAKE SURE CONTRIBUTORS
ARE VALUED & REWARDED
@taylor_atx
SHOW THE BENEFITS
@taylor_atx
GITHUB FOR DOCS
• Continuous integration and automated testing
• Issues
• Incremental changes
@taylor_atx
REVIEWS
• “Pair” on reviews
• Use reviews to coach contributors
• For small suggestions, fix it yourself and share before
merging
• If a review sounds harsh, reach out and let them know you
aim to instruct and appreciate them
@taylor_atx
STYLE GUIDES
• Frees your contributors to focus on what’s more valuable,
instead of grammar, consistency, or other issues
• Examples:
• Google Developer Documentation Style Guide
• 18F Content Guide
@taylor_atx
Community Engineer at Keen IO
taylor@keen.io
@taylor_atx
TAYLOR BARNETT
APPENDIX: LINKS
• How Users Read on the Web article: https://www.nngroup.com/articles/how-users-read-on-the-web/
• Articles: https://www.nngroup.com/topic/writing-web/
• How to Write Documentation for People that Don't Read talk: https://youtu.be/sQP_hUNCrcE
• Designing Great API Docs blog post: http://blog.parse.com/learn/engineering/designing-great-api-
docs/
• Blog plus much more: http://idratherbewriting.com/
• Building navigation for your doc site: 5 best practices talk: https://youtu.be/w-kEmsLwPDE
• Building navigation for your documentation site: 5 best practices in design blog post: http://
idratherbewriting.com/files/doc-navigation-wtd/design-principles-for-doc-navigation/
• Breaking Down Barriers to “Hello World” talk: https://www.slideshare.net/taylorsoitgoes/breaking-
down-barriers-to-hello-world-79181115
• Even Naming This Talk Is Hard talk: https://youtu.be/RFfpkrbkvxc
• Error Messages: Being Humble, Human, and Helpful talk: https://youtu.be/gBBZUATL7Qo
• Don't be a Jerk: Write Documentation blog post: https://ferd.ca/don-t-be-a-jerk-write-
documentation.html
• Docs like Code book: https://www.docslikecode.com/
APPENDIX: A NOTE ON OPENAPI
SPECIFICATION
• Spec output can provide a clear source for reference info
about endpoints, parameters, requests, and responses
• Auto generation is a starting point
• Still need more use cases, authorization, why API exists,
more samples, and tutorials
• Think of it as a compliment, a sandbox to play around with
• Two sites isn’t necessarily a bad thing
@taylor_atx

Weitere ähnliche Inhalte

Was ist angesagt?

SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
SearchCon
 

Was ist angesagt? (6)

Selfish Accessibility — WordCamp Europe 2017
Selfish Accessibility — WordCamp Europe 2017Selfish Accessibility — WordCamp Europe 2017
Selfish Accessibility — WordCamp Europe 2017
 
Week 6 - Interactive News Editing and Producing
Week 6 - Interactive News Editing and ProducingWeek 6 - Interactive News Editing and Producing
Week 6 - Interactive News Editing and Producing
 
Websites 201
Websites 201Websites 201
Websites 201
 
SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
SearchCon 2016 | Black Hat Tools for White Hat SEO with Jim Kreinbrink, Cade ...
 
ONA08 - Jesse Thomas
ONA08 - Jesse ThomasONA08 - Jesse Thomas
ONA08 - Jesse Thomas
 
Selfish Accessibility: MinneWebCon 2017
Selfish Accessibility: MinneWebCon 2017Selfish Accessibility: MinneWebCon 2017
Selfish Accessibility: MinneWebCon 2017
 

Ähnlich wie Things I Wish People Told Me About Writing Docs

Wordcamp St. Louis - Clean Coding
Wordcamp St. Louis - Clean CodingWordcamp St. Louis - Clean Coding
Wordcamp St. Louis - Clean Coding
inspector_fegter
 
Writing code for others
Writing code for othersWriting code for others
Writing code for others
Amol Pujari
 
Life cycle of user story: Outside-in agile product management & testing, or...
Life cycle of user story: Outside-in agile product management & testing, or...Life cycle of user story: Outside-in agile product management & testing, or...
Life cycle of user story: Outside-in agile product management & testing, or...
Ravi Tadwalkar
 

Ähnlich wie Things I Wish People Told Me About Writing Docs (20)

Explode conftalk - v2 ppt
Explode conftalk  - v2 pptExplode conftalk  - v2 ppt
Explode conftalk - v2 ppt
 
How to Use Social Media for Recruiting
How to Use Social Media for RecruitingHow to Use Social Media for Recruiting
How to Use Social Media for Recruiting
 
Article Writing Tips
Article Writing TipsArticle Writing Tips
Article Writing Tips
 
Wordcamp St. Louis - Clean Coding
Wordcamp St. Louis - Clean CodingWordcamp St. Louis - Clean Coding
Wordcamp St. Louis - Clean Coding
 
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad..."How do I Architect?"  - Quick Introduction to Architecture for Salesforce Ad...
"How do I Architect?" - Quick Introduction to Architecture for Salesforce Ad...
 
Code Reviews @ Quatico
Code Reviews @ QuaticoCode Reviews @ Quatico
Code Reviews @ Quatico
 
Site Crawling: What To Do & What To Look For
Site Crawling: What To Do & What To Look ForSite Crawling: What To Do & What To Look For
Site Crawling: What To Do & What To Look For
 
Agile Toronto 2018 - Sharpen Your Agile Ax ... Story Splitting Time
Agile Toronto 2018 - Sharpen Your Agile Ax ... Story Splitting TimeAgile Toronto 2018 - Sharpen Your Agile Ax ... Story Splitting Time
Agile Toronto 2018 - Sharpen Your Agile Ax ... Story Splitting Time
 
Content Structure Workshop - Content Marketing World 2019
Content Structure Workshop - Content Marketing World 2019Content Structure Workshop - Content Marketing World 2019
Content Structure Workshop - Content Marketing World 2019
 
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
 
WordPress 4.4 and Beyond
WordPress 4.4 and BeyondWordPress 4.4 and Beyond
WordPress 4.4 and Beyond
 
Content design for communicators and publishers- IntraTeam 2020
Content design for communicators and publishers- IntraTeam 2020Content design for communicators and publishers- IntraTeam 2020
Content design for communicators and publishers- IntraTeam 2020
 
A crash course into SEO and what moves the needle with scalable processes
A crash course into SEO and what moves the needle with scalable processesA crash course into SEO and what moves the needle with scalable processes
A crash course into SEO and what moves the needle with scalable processes
 
Content Publishing
Content PublishingContent Publishing
Content Publishing
 
Writing code for others
Writing code for othersWriting code for others
Writing code for others
 
Lavacon preso-2015-miranda-meyers
Lavacon preso-2015-miranda-meyersLavacon preso-2015-miranda-meyers
Lavacon preso-2015-miranda-meyers
 
GDD Moscow - Open Social
GDD Moscow - Open SocialGDD Moscow - Open Social
GDD Moscow - Open Social
 
Creating More Engaging Content For Social
Creating More Engaging Content For SocialCreating More Engaging Content For Social
Creating More Engaging Content For Social
 
Life cycle of user story: Outside-in agile product management & testing, or...
Life cycle of user story: Outside-in agile product management & testing, or...Life cycle of user story: Outside-in agile product management & testing, or...
Life cycle of user story: Outside-in agile product management & testing, or...
 
Netflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLandNetflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLand
 

Mehr von Taylor Barnett

Creating a Great Developer Experience Through SDKs
Creating a Great Developer Experience Through SDKsCreating a Great Developer Experience Through SDKs
Creating a Great Developer Experience Through SDKs
Taylor Barnett
 

Mehr von Taylor Barnett (6)

Going to Infinity and Beyond Documentation with OpenAPI
Going to Infinity and Beyond Documentation with OpenAPIGoing to Infinity and Beyond Documentation with OpenAPI
Going to Infinity and Beyond Documentation with OpenAPI
 
Creating a Great Developer Experience Through SDKs
Creating a Great Developer Experience Through SDKsCreating a Great Developer Experience Through SDKs
Creating a Great Developer Experience Through SDKs
 
Exploring Privilege in Open Source Communities
Exploring Privilege in Open Source CommunitiesExploring Privilege in Open Source Communities
Exploring Privilege in Open Source Communities
 
How to Promote Your Event
How to Promote Your EventHow to Promote Your Event
How to Promote Your Event
 
Stuff You Don't Need
Stuff You Don't NeedStuff You Don't Need
Stuff You Don't Need
 
Building Community with Developer Love
Building Community with Developer LoveBuilding Community with Developer Love
Building Community with Developer Love
 

Kürzlich hochgeladen

UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
rknatarajan
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 

Kürzlich hochgeladen (20)

UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICSUNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 

Things I Wish People Told Me About Writing Docs

  • 1. THINGS I WISH PEOPLE TOLD ME ABOUT WRITING DOCS @taylor_atx
  • 2. Community Engineer at Keen IO taylor@keen.io @taylor_atx TAYLOR BARNETT
  • 3. HOW DO PEOPLE ACTUALLY READ DOCS? @taylor_atx
  • 6. IMPLICATIONS OF F SHAPE • First two paragraphs must state the most important information • Further, the first 3-5 words are very important • Start headers, paragraphs, and bullet points with information- carrying words • Variations in typeface (text size, links, bold, etc) @taylor_atx
  • 7. STRUCTURE • Prevent search failure - what the users wants doesn’t stand out • One idea per paragraph, if there’s more than one, split the paragraphs • Users skip over things that look like ads • Aim for 65-90 characters in width @taylor_atx
  • 8. USABILITY VARIES: PARAGRAPH VS BULLETS @taylor_atx
  • 9. USABILITY VARIES: PARAGRAPH VS BULLETS Event collections can have almost any name, but there are a few rules to follow: The name must be 64 characters or less. It must contain only Ascii characters. It cannot be a null value.
 @taylor_atx
  • 10. USABILITY VARIES: PARAGRAPH VS BULLETS Event collections can have almost any name, but there are a few rules to follow: The name must be 64 characters or less. It must contain only Ascii characters. It cannot be a null value.
 Event collections can have almost any name, but there are a few rules to follow: • The name must be 64 characters or less. • It must contain only Ascii characters. • It cannot be a null value. @taylor_atx
  • 11. USERS ACTUALLY READ CODE SNIPPETS @taylor_atx
  • 12. var client = new Keen({   projectId: "your_project_id",   writeKey: "your_write_key" }); var ticketPurchase = {   price: 50.00,   user: {     id: "020939382",     age: 28   },   artist: {     id: "19039",     name: "Tycho"   } } client.addEvent("ticket_purchases", ticketPurchase); WHAT IS THIS CODE SNIPPET MISSING? 🤔 @taylor_atx
  • 13. var client = new Keen({   projectId: "your_project_id",   writeKey: "your_write_key" }); var ticketPurchase = {   price: 50.00,   user: {     id: "020939382",     age: 28   },   artist: {     id: "19039",     name: "Tycho"   } } client.addEvent("ticket_purchases", ticketPurchase); WHAT IS THIS CODE SNIPPET MISSING? • First, how do I even run this? " @taylor_atx
  • 14. var client = new Keen({   projectId: "your_project_id",   writeKey: "your_write_key" }); var ticketPurchase = {   price: 50.00,   user: {     id: "020939382",     age: 28   },   artist: {     id: "19039",     name: "Tycho"   } } client.addEvent("ticket_purchases", ticketPurchase); WHAT IS THIS CODE SNIPPET MISSING? • First, how do I even run this? • “ReferenceError: Keen is not defined” " @taylor_atx
  • 15. var client = new Keen({   projectId: "your_project_id",   writeKey: "your_write_key" }); var ticketPurchase = {   price: 50.00,   user: {     id: "020939382",     age: 28   },   artist: {     id: "19039",     name: "Tycho"   } } client.addEvent("ticket_purchases", ticketPurchase); WHAT IS THIS CODE SNIPPET MISSING? • First, how do I even run this? • “ReferenceError: Keen is not defined” • Didn’t set the Project ID and Write Key " @taylor_atx
  • 16. What will this return? # Copy and paste the following command $ gem install rails PREVENT COPY AND PASTE BUGS 🤔 @taylor_atx
  • 17. What will this return? # Copy and paste the following command $ gem install rails PREVENT COPY AND PASTE BUGS 😔 # Returns “bash: command not found: $” @taylor_atx
  • 19. WHAT DO I MEAN BY “DOCS?” API REFERENCES GUIDES TUTORIALS BLOG POSTS* @taylor_atx
  • 20. GUIDES • Somewhere between API references and tutorials • Similar reference but with prose that explains how to use the API • Example: Authorization guide @taylor_atx
  • 21.
  • 22. TUTORIALS • Teach specific things with an API, beginning to end, including setup • Tightly focused on a few pieces of functionality • Includes working sample code • Example: Getting Started or Hello World tutorial @taylor_atx
  • 24. BLOG POSTS • “Share Knowledge, Not Features” — Adam DuVander • Features != Benefits • A blog post should teach, inspire, and help • Give a preview, then help navigate them to the full docs @taylor_atx
  • 26. DOCS NAVIGATION AND UNIVERSAL PRINCIPLES OF DESIGN @taylor_atx
  • 28. 1. NAVIGATE FROM DOC SET TO DOC SET @taylor_atx
  • 29. DOCS PORTAL HOMEPAGE PRODUCT HOMEPAGE SECTION HOMEPAGE PAGE @taylor_atx
  • 32. 2. ALLOW NAVIGATION WITHIN CONTENT @taylor_atx
  • 33. BOTTOM-UP NAVIGATION • If you tell me I can do something, link to how to do that something. • If you tell me I can use something, link to a description of that something. • If you mention a concept or an idea, link to a description of that concept or idea. — Mark Baker from “Every Page is Page One” @taylor_atx
  • 38.
  • 41. WHY DO BAD NAMES PERSIST? • Because we don’t realize that the name is bad • Or we do, but can’t or won’t justify fixing it because we… • Are tied to it • Can’t justify the time • Don’t know the value • Don’t have the agency to fix it @taylor_atx
  • 42. EMPATHY FAILURE BEGINNER’S MIND FAILURE @taylor_atx
  • 43. WORD CHOICE IS HARD • Hard to give one framework to use, but you can… • Talk to users, get feedback - ask someone to review it • Refactor and rewrite • Search existing names @taylor_atx
  • 46. ERROR MESSAGES ARE AN OPPORTUNITY @taylor_atx
  • 47. 3 H’S OF GOOD ERROR MESSAGES: HUMBLE HUMAN HELPFUL @taylor_atx
  • 48. HUMBLE • Apologize even if it is not your fault • Example: • Sorry, we could not connect to ___. Please check your network settings, connect to an available network, and try again. @taylor_atx
  • 49. HUMAN • Speak in human terms • Example: • Your API Key is invalid, please try a different key. @taylor_atx
  • 50. HELPFUL • Share what the users can expect or do to fix the problem • Example: • Sorry, the image you tried to upload is too big. Try again with an image smaller than 4000px tall by 4000px wide. @taylor_atx
  • 51. WRITING ERROR MESSAGES 1. Acknowledge 2. Apologize 3. Explain 4. Help @taylor_atx
  • 52. WRITING ERROR MESSAGES • Object first, action second • What the users wants first, how to get there second • If you can, put the input in the error string @taylor_atx
  • 53. ERROR MESSAGE SEO • If users get an error message often, put the exact text in your docs • You can also edit StackOverflow posts @taylor_atx
  • 54. HOW DO I GET OTHER TEAMMATES TO CONTRIBUTE TO DOCS? @taylor_atx
  • 55. “I DON’T HAVE THE TIME” “DOCS ARE HARD TO MAINTAIN” “JUST READ THE SOURCE” “DOCUMENTATION IS USELESS” — Fred Hebert from “Don't be a Jerk: Write Documentation” @taylor_atx
  • 56. MAKE SURE CONTRIBUTORS ARE VALUED & REWARDED @taylor_atx
  • 58. GITHUB FOR DOCS • Continuous integration and automated testing • Issues • Incremental changes @taylor_atx
  • 59. REVIEWS • “Pair” on reviews • Use reviews to coach contributors • For small suggestions, fix it yourself and share before merging • If a review sounds harsh, reach out and let them know you aim to instruct and appreciate them @taylor_atx
  • 60. STYLE GUIDES • Frees your contributors to focus on what’s more valuable, instead of grammar, consistency, or other issues • Examples: • Google Developer Documentation Style Guide • 18F Content Guide @taylor_atx
  • 61. Community Engineer at Keen IO taylor@keen.io @taylor_atx TAYLOR BARNETT
  • 62. APPENDIX: LINKS • How Users Read on the Web article: https://www.nngroup.com/articles/how-users-read-on-the-web/ • Articles: https://www.nngroup.com/topic/writing-web/ • How to Write Documentation for People that Don't Read talk: https://youtu.be/sQP_hUNCrcE • Designing Great API Docs blog post: http://blog.parse.com/learn/engineering/designing-great-api- docs/ • Blog plus much more: http://idratherbewriting.com/ • Building navigation for your doc site: 5 best practices talk: https://youtu.be/w-kEmsLwPDE • Building navigation for your documentation site: 5 best practices in design blog post: http:// idratherbewriting.com/files/doc-navigation-wtd/design-principles-for-doc-navigation/ • Breaking Down Barriers to “Hello World” talk: https://www.slideshare.net/taylorsoitgoes/breaking- down-barriers-to-hello-world-79181115 • Even Naming This Talk Is Hard talk: https://youtu.be/RFfpkrbkvxc • Error Messages: Being Humble, Human, and Helpful talk: https://youtu.be/gBBZUATL7Qo • Don't be a Jerk: Write Documentation blog post: https://ferd.ca/don-t-be-a-jerk-write- documentation.html • Docs like Code book: https://www.docslikecode.com/
  • 63. APPENDIX: A NOTE ON OPENAPI SPECIFICATION • Spec output can provide a clear source for reference info about endpoints, parameters, requests, and responses • Auto generation is a starting point • Still need more use cases, authorization, why API exists, more samples, and tutorials • Think of it as a compliment, a sandbox to play around with • Two sites isn’t necessarily a bad thing @taylor_atx