115 Matching Annotations
  1. Feb 2021
    1. When deciding what to teach first, think of what knowledge will provide the best power/effort ratio.

      Teach first what will help users solve the greatest pains or greatest number of problems, with the relatively least effort to learn.

    2. Avoid special content blocks for tips and caveats when possible.

      Tips take users out of the flow of reading the document, or are missed altogether. It's greatly preferred to integrate the tips into the flow of the content.

    3. When you assume knowledge, declare it at the beginning and link to resources for less common knowledge that you're expecting.

      Be clear about knowledge assumptions, and provide links to resources for the knowledge you're expecting users to have up front.

    4. From other projects

      The documentation should provide a comparison with other projects in order to help users understand additional problems the project might solve or create for them, and provide a guide for migrating their project.

    5. Unlike other pages, this one is not meant to be read top-to-bottom, so plenty of detail can be provided.

      Since the API Reference is not meant to be read top-to-bottom, this is the place to provide in-depth details of the API.

    6. Reference/API

      The API Reference provides a complete list of features including type information, detailed use case descriptions, and links to guides, cookbook recipes, and other internal resources that provide more detail.

    7. Remember that a smooth read is more important than being thorough.

      Linking to other pages or the API reference could be useful, but are best avoided to help users avoid link-hopping and the cognitive exhaustion that can cause.

    8. Guide

      Guides are intended to make users feel smart, powerful, and curious, and to maintain that state throughout so that users maintain the motivation and cognitive capacity needed to continue learning.

    9. While writing, don't be afraid to ask questions

      If you aren't sure about something and have a question, imagine where that will leave users if you don't ask it and provide incorrect documentation.

    10. Good documentation meets users where they are.

      Good documentation teaches users based on their current skill level rather than making assumptions about what they know. Explain jargon and help prevent misunderstandings.

    11. Always try to see from the user's perspective.

      As someone knowledgeable enough to write documentation, it's easy to forget what a new user needs to learn first in order to understand a concept.

    12. Cognitive capacity is depleted faster by complex sentences, having to learn more than one concept at a time, and abstract examples that don't directly relate to a user's work.

      Cognitive capacity can be depleted slower by writing simple sentences, presenting one concept at a time, and using concrete, directly related examples.

  2. Jan 2021
    1. “The Golden Circle”
      • WHAT the organization does (products sold/services offered)
      • HOW the organization does it (what makes them special/sets them apart from others)
      • WHY is the reason the organization exists
    2. You have answer the question of why because without this you won’t build a community (or business) that will attract, retain, and grow:

      In order to attract, retain, and grow, you have to answer the question of why by communicating your vision for a better world served by the community you seek to build.

    1. Choose technology

      It's important to choose the platform that's right for your community. Consider key features required to support your vision and features that your audience expects based on their experiences.

    2. Content cadence & showstopper

      A good community has a content cadence with a showstopper, where the cadence is a "minimum required cadence" with a reliable, anticipated prompt. Content types could include events series, product ideation, curated networking, a user blog, AMAs, and a game-ified swag program. The showstopper is something you know your audience will love, and gives them a reason to open the community.

    3. Validate: user interviews

      Community concept should be validated through phone interviews with potential members of varying levels of engagement and interests. Validate the goals by asking questions like "What programs are you interested in?", "What communities do you already partake in and why?", and "What can we do to be your go-to space?".

    4. Set goals

      Setting goals for a community is different than setting goals for a product. Community goals should focus on the impact for both members and the company, tie into existing business goals that are already tracked, include "anti-goals" that show what the community will not be used for like "product support", and avoid "stopgap goals".

    5. a few use-cases:

      Some use cases for a community include a place of shared practice centered around skill-building, a place for top-tier access for businesses that center around a creator or consultant providing exclusive access to that creator/consultant, or a real-time workspace that goes hand-in-hand with synchronous experiences like podcasts or working through online courses.

    6. 3 elements that might help you better understand if you’re in the right spot for a new community:

      Three ways to understand if you're in the right spot for a new community are having an audience who loves your work, wanting to create a centralized experience for your content, and having the time to launch and manage a new community (which takes a lot of dedication, just like launching a new product).

    7. benefits of starting a community

      The main benefits to starting a community are relationships, retention and success, an experimental content pipeline, and an audience that probably already wants a community.

    1. List Tasks to Complete for Each Milestone

      Milestones should have issues attached to them representing the tasks required to complete the milestone. It's important that issues explain why a task is being completed in order to strengthen the vision for the project and help contributors become more involved. It also helps to include extra context like links, relevant people, a description of the problem/idea/feature and potential solutions, and next steps.

    2. Short, Medium & Long Term

      Milestones can also be based on short, medium, and long term goals. This is better for projects that have a general idea of time-based prioritization but can't give specific dates. Short term for things being worked on now, medium term for things that contributors can work on now but is not currently being worked on, and long term describes where the project would like to go in the future.

    3. A roadmap can also express your vision for the project.

      A roadmap is an opportunity to express the project's vision, which allows users and contributors to understand where the project is heading and to create excitement around the future of the project.

    4. When you're starting on an open source project, it's important to record what your community (this might just be you at the beginning) decides to work on! A roadmap organizes the tasks that nees to be done on a project around milestones. This helps potential contributors understand the current status of your poject and where it's going next.

      It's important for an open source project to record what the community decides to work on in order to organize the tasks that need to be completed to reach a milestone and to help potential contributors understand the current status of the project and where it's headed.

    1. It deepens our knowledge and makes it richer, even if it isn’t knowledge we can actually apply in any practical sense

      Explanations deepen our understand of a topic, even if the explanation isn't something that can be practically applied. It provides context about the topic.

    2. Explanations can equally well be described as discussions; they are discursive in nature.

      Explanations are a way for the documentation to briefly take a more relaxed stance in order to provide a higher-level view of the topic.

    3. This section of documentation is rarely explicitly created, and instead, snippets of explanation are scattered amongst other sections.

      Explanations are rarely created explicitly on their own, but are frequently scattered amongst the other types of documentation.

    4. Explanation, or discussions, clarify and illuminate a particular topic. They broaden the documentation’s coverage of a topic.

      Explanations expand on a specific topic in order to clarify and illuminate.

    1. Give reference documentation the same structure as the codebase

      Giving the reference documentation the same structure as the codebase allows the user to navigate the code and documentation at the same time, and also allows maintainers see where there are gaps in the documentation.

    2. Analogy from cooking¶

      When looking at an encyclopedia article about an ingredient, you expect to find basic facts about the ingredient as well as potential problems related to the ingredient (like allergy issues). You don't expect to find explanations of what an ingredient is, or how to cook a specific recipe using the ingredient.

    3. Reference guides have one job only: to describe. They are code-determined, because ultimately that’s what they describe: key classes, functions, APIs, and so they should list things like functions, fields, attributes and methods, and set out how to use them.

      Reference guides serve specifically as the "what" of documentation. They don't explain concepts or how to achieve outcomes, they simply tell what the machinery is.

    1. Tutorials need to be complete, end-to-end guides; how-to guides do not. They can start and end where it seems appropriate to you.

      The how-to guide doesn't need to provide steps for every single bit of concept, they only need to show the steps required to achieve the outcome. It's okay if the guide doesn't start at literally the beginning or end at a literally finished product.

    2. A how-to guide should allow for slightly different ways of doing the same thing

      A how-to guide should be flexible enough to allow the user to try slightly different ways of doing things and still end up with the same result.

    3. Think about a recipe

      Imagine a how-to guide as a recipe. The user already understands at least the basics of cooking, otherwise they wouldn't be seeking out a recipe for how to cook something. The recipe is focused solely on the steps required to cook the meal, not how to cook the meal.

    4. A how-to guide is an answer to a question that only a user with some experience could even formulate.

      A how-to guide answers a question that only a user with experience could formulate.

    1. Don’t explain anything the learner doesn’t need to know in order to complete the tutorial.

      The tutorial should contain only the exact content needed to complete the tutorial. Nothing more.

    2. Make sure that your tutorial works¶

      If the tutorial doesn't work, the user doesn't learn anything. It's important to build the example in the tutorial while writing it to validate that it works, and to keep the tutorial up-to-date.

    3. The point of a tutorial is to get your learner started on their journey, not to get them to a final destination.

      The point of the tutorial is to get the user started, not to teach the user all of the project's best practices or ways that experts might do things. It's to give them something to work with, immediately.

    4. Most software projects have really bad - or non-existent - tutorials. Tutorials are what will turn your learners into users. A bad or missing tutorial will prevent your project from acquiring new users.

      Tutorials are what turn people without understanding into new users.

    1. This division makes it obvious to both author and reader what material, and what kind of material, goes where. It tells the author how to write, and what to write, and where to write it. It saves the author from wasting a great deal of time trying to wrestle the information they want to impart into a shape that makes sense, because each of these kinds of documentation has only one job.

      Understanding that each type of documentation has only one job and the difference between types enables an author to know how to write, what to write, and where to write it.

    1. there isn’t one thing called documentation, there are four. They are: tutorials, how-to guides, technical reference and explanation.

      The four types of documentation are tutorials, how-to guides, technical references, and explanations.

    1. You’ll also find that it’s much easier to write this document at the beginning of the project when your excitement and motivation are at their highest. Retroactively writing a Readme is an absolute drag, and you’re sure to miss all kinds of important details when you do so.

      This is such a key point to consider. If you've spent all of your precious initial energy on implementing the project, writing a README/documentation after that will just be a headache that you may not even have the motivation to complete effectively.

    2. Most importantly, you’re giving yourself a chance to think through the project without the overhead of having to change code every time you change your mind about how something should be organized or what should be included in the Public API.

      The README is abstract enough that it provides a direction for the code without being so specific that it has to be changed every time you decide to do something slightly different in the implementation.

    3. By restricting your design documentation to a single file that is intended to be read as an introduction to your software, RDD keeps you safe from DDD-turned-waterfall syndrome by punishing you for lengthy or overprecise specification. At the same time, it rewards you for keeping libraries small and modularized.

      The README is the middle ground between having no documentation and having so much documentation that it doesn't allow for exploration. It's a short, single-file source of documentation, meaning that it's long enough to provide a direction for the code that you'll be writing, but short enough that it doesn't get in the way of your creative process.

    4. Writing a Readme is absolutely essential to writing good software. Until you’ve written about your software, you have no idea what you’ll be coding.

      Writing a README first is essential to establishing a purpose and direction for the code you'll be writing.

    1. your job, when you're doing it with optimal altruism in mind, isn't to "sell" people on your work. It's to let them evaluate what your creation does as objectively as possible, and decide whether it meets their needs or not -- not to, say, maximize your downloads or userbase.

      It's less about selling your project and more about providing the information needed by a user to effectively determine if your project is what they need. Which is in itself a form of selling, albeit far less direct.

    2. the ordering of these key elements should be decided by how quickly they let someone 'short circuit' and bail on your module.

      The ordering of elements within a README should be determined by how quickly they allow a user to understand what your project is and if it's relevant to them. You want the user to understand as quickly as possible if your project is right for them—and if it is, why it's right for them.

    3. The ordering presented here is lovingly referred to as "cognitive funneling," and can be imagined as a funnel held upright, where the widest end contains the broadest more pertinent details, and moving deeper down into the funnel presents more specific details that are pertinent for only a reader who is interested enough in your work to have reached that deeply in the document. Finally, the bottom can be reserved for details only for those intrigued by the deeper context of the work (background, credits, biblio, etc.).

      Common patterns across many modules has created a system of "cognitive funneling" in users' minds. Users expect certain information from a README, and in a specific order.

    4. Once a README is located, the brave module spelunker must scan it to discern if it matches the developer's needs. This becomes essentially a series of pattern matching problems for their brain to solve, where each step takes them deeper into the module and its details.

      Users reads in the following order:

      1. Name
      2. One-liner description
      3. Usage
      4. API
      5. Installation
      6. License (does the user actually read this?)
    5. Your documentation is complete when someone can use your module without ever having to look at its code. This is very important. This makes it possible for you to separate your module's documented interface from its internal implementation (guts). This is good because it means that you are free to change the module's internals as long as the interface remains the same. Remember: the documentation, not the code, defines what a module does. -- Ken Williams

      A module isn't a module until the documentation is complete. The documentation isn't complete until a user can use your project without ever having to read the source code to understand something.

    6. The ideal README is as short as it can be without being any shorter.

      Quality > Quantity

      It's better to have a short README that nails answering the essential questions but contains no other information/flair than a long, detailed README that answers TOO MANY questions.

    7. A README is a module consumer's first -- and maybe only -- look into your creation. The consumer wants a module to fulfill their need, so you must explain exactly what need your module fills, and how effectively it does so. Your job is to tell them what it is (with context) show them what it looks like in action show them how they use it tell them any other relevant details

      A README must make a good first impression on users by answering the following questions:

      • What is it?
      • What does it look like in action?
      • How do I use this?
      • What are other relevant details (context) that I need to know about this?
    8. Writing excellent documentation is all about keeping the users out of the source code by providing instructions sufficient to enjoy the wonderful abstractions that your module brings.

      The purpose of documentation is to keep both the author and consumers out of the source code. Answering a question one has by reading the source is significantly more difficult that reading the answer already provided by the README (given that the README is sufficient).

    9. If a module has no human available to answer questions and explain what a module does, combined with no remnants of documentation left behind, a module becomes a bizarre alien artifact, unusable and incomprehensible by the archaeologist-hackers of tomorrow.

      A README allows both the creator and consumers of a project to understand the code contained and its purpose, regardless of the status of development, familiarity with the code, etc. Without a README, a project is simply an artifact lost in time.

    1. Level 6: ????

      Once a project becomes widespread and "too big to fail", it's important to mature the project by establishing a foundation or spec that allows an extreme level of stability in the project and its future, while also possibly establishing a corporate/professional docs team to ensure the highest level of documentation quality.

    2. Level 5: Community of Production users

      Once the community is made up primarily of production users, it's now widespread and the basis for a large number of system. It's important to provide documentation filled with examples that make it easy for a user to accomplish any task they may set out to do.

    3. Level 4: Production use for multiple years

      The project has become quite mature with many expert users that need a stable API. Documentation should provide migration instructions, insights into how the project works to solve the problems it targets, and explanations for how to customize for individual use cases. It should also be clear in how these expert users can contribute to the project itself.

    4. Reader-friendly Changelog

      One of the most essential pieces of documentation that a mature project should offer is a reader-friendly Changelog. A user should be able to view one source to understand all of the changes that have happened in each version of the project, so they can use new functionality, apply any changes to their own codebase, or understand why certain parts of the system have broken.

    5. Conceptual Understanding

      Complex projects require a lot of context to understand. It's important to write docs that provides a conceptual understanding of the project and its related topics.

    6. Meta (as in MetaLanguage)

      The MetaLanguage is the contextual "foundation" of the project. This is everything that isn't directly relevant to the code, like origin story, conceptual understanding, funding/management, future planning, contribution guides, etc.

    7. Tutorial

      A tutorial is important for a project as it allows users to dive in, learn by doing, and see results immediately. The tutorial should explain acronyms/jargon, step through APIs, and focus on concrete steps (not abstract concepts).

    8. Recovering from Failure

      Any open source project around long enough will start to acquire common mistakes and known issues. It's important to gather these in one place (FAQ?) so that users can easily find these issues and know how to solve them, and to provide links to the project community so they can seek further help if necessary.

    9. How-To Guide/Cookbook/Recipes

      Important to help beginners answer questions that might not formulate on their own by providing a series of results-focused steps to solve specific problems. It's important that they are copy-and-paste-able, don't explain concepts (serving more as examples than explanations), and leave out anything that isn't directly relevant to the recipe.

    10. Homepage/Readme:

      The homepage/README should set a good first impression with users and answer their basic questions like "What is this?", "What can it do for me?", and "Where do I go to learn more?"

    11. Helping Contributors

      In an open source project, "helping contributors" is an important goal of documentation. Maintainers should understand their responsibilities to the project, contributors should understand how to get involved in the project and how it works under the hood, and contributors should be recognized for their contributions to the project.

    12. Level 3: vX

      This is where the project starts to gain the majority of its users. They want use of use + quick wins from documentation that is reliable. Docs should include:

      • Status badges
      • A tutorial
      • Third party plugins/libraries
      • How-To Guide/Cookbook/Recipes
      • User/Maintainer Content like a blog, meeting notes, talks, third-party blogs, video tutorials, and podcasts
      • Comprehensive examples
    13. Level 2: v1

      These are still early adopters as they're okay with some bugs. Docs should include a comparison to other libraries, a problem statement (what you solve, how dev/user is better of with your thing, aka Why You Exist), basic examples, and some live demos.

    14. Level 1: v0.x

      For very early adopters. It's okay if docs are missing as these users can contribute docs and code. A description with context, a list of features/project goals, and install+config instructions are all that's necessary at this point.

    15. Try to have your target user persona in mind and write specifically for them, only what they need and what they are about to need.

      Write documentation content for specific user personas. It helps make sure the content is relevant and focused.

    16. Docs don't linearly increase in quality with word count. You cannot hedge by throwing more words at a problem.

      Length != Quality. It's possible to write too much, at which point you're overwhelming users with more content than is useful to help them solve their problems.

  3. Dec 2020
    1. Docs Features
      • Homepage/README
      • Answer questions where the user expects them
      • Project Status
      • Install + config instructions
      • Config/API Docs
      • API Examples
      • How-to Guide/Cookbook/Recipes
      • Recovering from failure
      • Tutorial
      • Live Demos
      • Third party plugins/libraries
      • User/Maintainer Content
      • Meta
      • Search
      • Anti-docs (when NOT to use us; things we will never do)
      • Build Docs into the tool
    2. Quote Dan Abramov: Top two mistakes in documentation: Assuming people know everything Assuming people are stupid

      The worst mistake to make with documentation is to assume that people either know everything or know nothing, as if there is no in between.

    3. The maturity of docs should match the maturity of the project.

      Part of maturing a project is maturing the documentation. They go hand-in-hand. It's difficult to reach the level of being a mature project without having detailed documentation for users.

    1. Pivot quickly and/or experiment with different ways to deliver value: Custom content, advice through forums, brainstorm calls (audio and video), accountability groups, accountability calls, fast networking calls, and more.

      Don't be afraid to pivot to different forms of value delivery. If text documentation isn't working or still leaves much to be desired on the part of users, consider shifting to videos or interactive tutorials.

    2. Create exclusive content inside the community and then inform the users with a link to make them visit the community looking for the exclusive content.

      Generate interest with community members by creating content and making sure they're aware of the content.

    3. I didn’t do a good enough job moderating the community and making sure conversations were “focused”

      It's important to play an active role as a community moderator to make sure that the content is high-quality, focused, and relevant.

    4. Shape the product roadmap with feedback from customers that you don’t know if they will pay. They could be very demanding, but they won’t pay.

      Prioritize product roadmap with feedback from paying customers.