toss Technical Writing Guide

repository·master·Indexed 22 days ago

https://github.com/toss/technical-writing

A comprehensive guide to technical writing practices in modern software development. It covers essential strategies for accuracy, speed, and effective information delivery, including tutorials on basic writing skills, AI-assisted workflows, and designing complex documentation structures. Key topics include information architecture, the 'One Thing Per Page' principle, writing effective headings, and creating goal-oriented document overviews.

Tokens
17.1K
Snippets
32
Records
71
Agent score
77%

What's inside toss-technical-writing

  1. Explore the Technical Writing Guide

    master

    The Technical Writing Guide provides fundamental writing skills for developers. It is organized into several key areas to help you create, structure, and refine documentation:

    • Document Types (/type/index): Understand different types of documentation and the design points that change based on the document's purpose.
    • Information Architecture (/architecture/index): Learn how to effectively organize the structure of your documentation.
    • Sentence Refinement (/sentence/index): Learn how to convey information using natural and clear sentences.

    To get started, you can follow the Quick Start guide or the Basic Documents Tutorial.

  2. What is Technical Writing?

    master

    Technical Writing is the practice of communicating technical information accurately and effectively. Unlike general writing, which focuses on expressing emotions, ideas, or imagination to inspire readers, Technical Writing focuses on:

    1. Goal Orientation: Helping the reader solve problems and achieve specific goals.
    2. Efficiency: Delivering information quickly and accurately.
    3. Clarity: Prioritizing information transfer over creative expression.
  3. Optimize reference documentation for navigation and context

    master

    Because reference documentation can be vast, use the following strategies to prevent information overload and improve the user experience:

    • Thematic Sectioning: Divide the documentation into logical sections based on topics. Provide a sidebar or table of contents (e.g., an API list for a specific domain like 'Payments') to allow quick jumping between endpoints.
    • Strategic Information Placement: Place prerequisite information at the beginning of the document. Before a user dives into specific API references, they often need to know about:
      • API Key configuration
      • Authentication methods
      • Required request headers

    Placing these core details upfront ensures users don't miss critical setup steps when they first encounter your documentation.

  4. Use cross-links to connect related documentation

    master

    Cross-linking strengthens the connectivity between documents and allows readers to navigate naturally to related information when they need deeper context.

    For example, if a tutorial briefly mentions 'Code Splitting', you should provide a link to a more detailed guide or reference document (e.g., lazy-loading.md) so the reader can find the information immediately when required.

    nextjs-performance-optimization/
    ├── index.md
    ├── code-splitting.md
    ├── ...
    └── lazy-loading.md # Related content linked from code-splitting
  5. Determine the appropriate technical document type

    master

    Technical documentation should be categorized based on the reader's goal to ensure they can find information quickly and effectively. There are four primary types:

    1. Learning-oriented documents: For beginners who want to understand the general flow or get started with a new tool (e.g., Tutorials, Getting Started guides).
    2. Problem-solving documents: For users with existing knowledge who need to solve a specific problem or perform a specific task (e.g., How-to guides, Troubleshooting).
    3. Reference documents: For users who know how the tool works but need to check specific details like API parameters, return values, or code examples.
    4. Explanatory documents: For users who want a deep understanding of concepts, principles, or the background/rationale behind a technology.

    Note: These types can be combined. For example, a learning-oriented guide might include explanatory elements to help users understand underlying concepts.

    | 문서 유형 | 독자의 목적 | 예시 |
    |-----------|-------------------------------------|--------------------------------------|
    | **학습 중심 문서** | 새로운 기술이나 도구를 처음 접해서 간단히 어떤 흐름인지 알고 싶을 때 사용해요. 초보자가 쉽게 시작할 수 있는 튜토리얼이나 사전 준비도 여기에 속해요. | [use-funnel 시작하기](https://use-funnel.slash.page/ko/docs/get-started) / [Kotlin 시작하기](https://kotlinlang.org/docs/getting-started.html) / [MDN Web Docs - HTML 기본](https://developer.mozilla.org/ko/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content) / [토스페이먼츠 개발자센터 - 결제 연동하기](https://docs.tosspayments.com/guides/v2/payment-widget/integration) |
    | **문제 해결 문서** | 배경 지식이 있는 상태에서 기술이나 도구를 사용하다 생기는 특정한 문제를 해결하고 싶을 때 사용해요. | [Stripe Docs - Collect physical addresses](https://docs.stripe.com/payments/collect-addresses) / [use-funnel - 퍼널 안에 퍼널 만들기](https://use-funnel.slash.page/ko/docs/sub-funnel) |
    | **참조 문서** | 이미 기본적인 작동 방법을 알고 있는 상태에서 특정 기능이나 API 사용법을 확인해서 적용하고 싶을 때 사용해요. 특정 API 함수의 매개변수, 반환 값, 예제 코드 등을 확인하는 거에요. | [es-toolkit 레퍼런스](https://es-toolkit.slash.page/ko/reference/array/at.html) / [DevDocs JavaScript reference](https://devdocs.io/javascript/) / [MDN Web Docs - Reference](https://developer.mozilla.org/ko/docs/Web) |
    | **설명 문서** | 개념, 원리, 배경 지식을 깊이 이해하고 싶을 때 사용해요. 예를 들어, 왜 이런 기술이 등장했는지, 어떤 문제를 해결하는지 등을 자세히 알고 싶을 때 사용해요. | [MDN Web Docs - 웹의 동작 방식](https://developer.mozilla.org/ko/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works) |
  6. How to apply the 'One Thing Per Page' principle

    master

    To ensure high readability, easy maintenance, and a simple document structure, follow the principle of focusing each document on a single core goal.

    Key Guidelines:

    • Avoid deep heading hierarchies: If your heading depth reaches #### (H4) or deeper, it is a signal that the document is becoming too complex and should be split into multiple pages.
    • Use Overview pages: If you need to introduce multiple related concepts, create an 'Overview' page that provides a high-level summary and links to individual, detailed documents for each concept.
    • Focus on specific topics: If a single page attempts to cover two or more distinct core topics, split them into separate documents.

    Checklist for splitting documents:

    • Does the heading depth reach #### (H4)? If yes, consider splitting.
    • Are there two or more core themes being addressed? If yes, split them.
  7. Ensure document predictability for better navigation and maintenance

    master

    To reduce cognitive load and help readers find information quickly, technical documentation must be predictable. Predictability is achieved through consistent terminology, natural flow of explanation, and logical information hierarchy.

    Predictable documentation provides three main benefits:

    1. Faster Navigation: Consistent structures allow readers to find what they need without confusion.
    2. Reduced Learning Curve: Consistent headings and paragraph structures allow readers to apply knowledge from previous documents to new ones.
    3. Easier Maintenance: Consistent patterns make it easy for teams to decide where new information should be placed.
  8. How to provide value first in technical writing

    master

    When writing documentation, prioritize explaining the value a reader gains (the problem solved or the positive change expected) over describing technical features or configurations. Readers are primarily interested in why a feature is needed and how it helps them. Starting with value captures attention and increases the likelihood that the reader will continue through the document.

    Key Principles

    1. Avoid feature-centric mistakes: Do not start with detailed settings or historical background. Instead, answer "What problem does this solve?" and "How does this help me?" immediately.
    2. Prioritize outcomes over implementation: Instead of listing parameters or options, explain the outcome of using those options.

    Checklist for Value-First Writing

    • Place supplementary information and details later: Ensure the primary problem-solving capability or expected benefit is presented first. Avoid starting with background knowledge that isn't critical to the immediate task.
    • Avoid feature-centric descriptions: Instead of saying "This API provides several options," say "This API allows you to process log data in real-time."
    ### Examples of Value-First vs. Feature-First
    
    **Scenario 1: Background vs. Value**
    - ❌ **Don't**: "Reverse proxy settings were introduced in 2019 and have undergone many modifications..."
    - ✅ **Do**: "Applying reverse proxy settings can minimize network latency."
    
    **Scenario 2: Configuration vs. Outcome**
    - ❌ **Don't**: "This snippet provides various configuration options. First, modify parameters like `connection_timeout`, `retry_attempts`, and `max_pool_size`..."
    - ✅ **Do**: "Using this snippet increases PostgreSQL database connection speeds by 50%."
  9. Core principles of good technical writing

    master

    Effective technical writing focuses on helping readers solve problems and achieve goals by delivering information quickly and accurately. The guide breaks down the writing process into three core pillars:

    1. Determine Document Type: Identify if you are writing an API reference, a tutorial, an FAQ, etc. Each type has a specific structure that helps reorganize knowledge effectively for the reader.
    2. Create Information Architecture: Design the structure from the reader's perspective rather than focusing on what you want to say. Well-structured information reduces the cognitive effort required to understand new knowledge.
    3. Refine Sentences: Even with good structure, poor sentence construction hinders delivery. Focus on writing sentences that are easy to read and easy to write from a technical writing perspective.
  10. Distinguish between How-to guides and Troubleshooting documents

    master

    Problem-solving documentation is categorized into two main types based on the reader's intent:

    How-to Guides

    Focus on providing step-by-step procedures and executable code examples to help a reader successfully complete a specific task. Unlike tutorials, How-to guides are not intended to teach overall concepts or flows, but rather to facilitate the successful execution of a specific goal.

    Troubleshooting Documents

    Focus on diagnosing an issue that has already occurred. The emphasis is on the debugging process and resolving existing problems.

  11. Writing guidelines for different document types

    master

    When using the Step 1 prompt, the following requirements are used to evaluate and suggest content for each document type:

    Learning-oriented Documents

    Focus on enabling the reader to perform tasks. Include:

    • Clear learning objectives and expected outcomes.
    • Prerequisites and environment setup.
    • Step-by-step guidance (explaining both what and why).
    • Executable code examples (increasing in difficulty).
    • FAQ or troubleshooting section at the end.

    Deep Understanding (Explanatory) Documents

    Focus on the principles and philosophy. Include:

    • Background and the problem the technology solves.
    • Detailed explanation of core principles and mechanics.
    • Comparison with alternative approaches (pros/cons).
    • Visual elements (diagrams, flowcharts).
    • Real-world use cases and applications.

    Problem-solving Documents

    Focus on practical solutions. Include:

    • Clear definition of the problem or task goal.
    • Root cause or necessary background knowledge.
    • Step-by-step resolution procedures.
    • Executable code examples or commands.
    • Environment-specific nuances (OS, library versions).
    • Explanation of how the solution works.

    Reference Documents

    Focus on accuracy and quick lookup. Include:

    • Concise overview and key features.
    • Syntax and parameter details (type, default value, requirement).
    • Return values and types.
    • Usage examples (from basic to advanced).
    • Integration with related APIs/functions/components.
    • Precautions and limitations.
  12. Difference between 'Getting Started' and 'Tutorials'

    master

    While similar, learning documentation typically falls into two distinct categories:

    • Getting Started documents: Aimed at helping new users understand the main flow and core concepts. They should include simple installation/setup guides and essential workflows to provide a high-level overview.
    • Tutorial documents: More specific than 'Getting Started' guides, tutorials have a clear goal and a tangible end product. They are structured so that users learn concepts naturally by following steps and executing code to achieve a specific result.

    Note: These categories are not rigid. If installation and setup are extremely simple, they are often included at the beginning of a tutorial.