<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Xinwei</title>
    <description>The latest articles on DEV Community by Xinwei (@xinwei_feng_7724c63a3460a).</description>
    <link>https://dev.to/xinwei_feng_7724c63a3460a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4056890%2F111e5826-b9e9-4cdc-8464-4cfb5d1100a2.jpg</url>
      <title>DEV Community: Xinwei</title>
      <link>https://dev.to/xinwei_feng_7724c63a3460a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xinwei_feng_7724c63a3460a"/>
    <language>en</language>
    <item>
      <title>A Spreadsheet Is Not a Story: A Four-Scene Brief for Decision-Ready Explainers</title>
      <dc:creator>Xinwei</dc:creator>
      <pubDate>Mon, 03 Aug 2026 13:47:18 +0000</pubDate>
      <link>https://dev.to/xinwei_feng_7724c63a3460a/a-spreadsheet-is-not-a-story-a-four-scene-brief-for-decision-ready-explainers-1423</link>
      <guid>https://dev.to/xinwei_feng_7724c63a3460a/a-spreadsheet-is-not-a-story-a-four-scene-brief-for-decision-ready-explainers-1423</guid>
      <description>&lt;p&gt;Most spreadsheet updates fail for a simple reason: they show the evidence before they name the decision.&lt;/p&gt;

&lt;p&gt;The numbers may be correct. The workbook may be carefully maintained. But the person opening it still has to answer four questions for themselves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What changed?&lt;/li&gt;
&lt;li&gt;Compared with what?&lt;/li&gt;
&lt;li&gt;Why does the change matter now?&lt;/li&gt;
&lt;li&gt;What should happen next?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is why a narrated explanation should not become a screen recording of a worksheet. The useful unit is not the cell. It is the decision behind a small, reviewable set of cells.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with one viewer question
&lt;/h2&gt;

&lt;p&gt;Before choosing a chart or a scene, write a sentence that a decision-maker could ask aloud.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did fulfilment performance improve after the routing change, and should the team extend it to the remaining regions?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question gives the source material a boundary. It tells you which period, comparison, assumption, and next action belong in the explanation. It also makes it easier to remove everything that is merely adjacent.&lt;/p&gt;

&lt;h2&gt;
  
  
  A four-scene brief
&lt;/h2&gt;

&lt;p&gt;Here is a compact pattern that works for KPI exports, operating dashboards, financial workbooks, and survey comparisons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scene 1: Establish the decision and the time window
&lt;/h3&gt;

&lt;p&gt;Show the decision in plain language, then anchor the analysis to a period. A single line such as “Week 26 after the routing change” is more useful than opening on a dense dashboard.&lt;/p&gt;

&lt;p&gt;The reader should know whose decision this is and what timeframe is in scope before seeing a percentage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scene 2: Show the comparison, not every value
&lt;/h3&gt;

&lt;p&gt;Choose the baseline that makes the decision meaningful: before/after, plan/actual, cohort A/cohort B, or current/proposed.&lt;/p&gt;

&lt;p&gt;Use a small number of values with their units and definitions. If the comparison is not valid because the population, filter, or calculation changed, say that instead of animating a misleading trend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scene 3: Explain the mechanism or constraint
&lt;/h3&gt;

&lt;p&gt;This is the scene dashboards usually omit. A metric moved, but what operational condition changed with it?&lt;/p&gt;

&lt;p&gt;For the routing example, the explanation might show a simpler handoff path, the affected regions, and the constraint that still prevents rollout everywhere. The viewer does not need every implementation detail. They need the relationship between the change and the outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scene 4: End with the decision, owner, and review condition
&lt;/h3&gt;

&lt;p&gt;An explanation should give the viewer a next move. That might be “extend the pilot after the data owner validates the final two regions,” not “the project succeeded.”&lt;/p&gt;

&lt;p&gt;The final frame can keep three things visible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the recommended action;&lt;/li&gt;
&lt;li&gt;the owner of the validation; and&lt;/li&gt;
&lt;li&gt;the condition that would change the decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes the content useful in a meeting and still reviewable afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the workbook as evidence
&lt;/h2&gt;

&lt;p&gt;An explainer should make evidence easier to understand. It should never replace validation.&lt;/p&gt;

&lt;p&gt;Before sharing, the data owner should still check the source period, filters, units, calculation, comparison baseline, labels, and conclusion. Link or attach the workbook where the audience needs to inspect it. If a number changes, update the source and the explanation together.&lt;/p&gt;

&lt;p&gt;This division of labour is important: the spreadsheet remains the auditable evidence; the visual sequence helps a human follow the comparison and decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prompt is not enough; provide a brief
&lt;/h2&gt;

&lt;p&gt;When you create a source-led explainer, include the following with the selected workbook or chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Viewer: regional operations lead
Question: should the routing pilot expand?
Period: weeks 22–26
Comparison: pilot regions vs. their own pre-pilot baseline
Evidence: order volume, fulfilment time, exception rate
Constraint: two regions use a different handoff process
Decision: extend only after exception-rate review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is short enough to review, but it prevents the common failure mode of turning every visible metric into narration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this workflow fits
&lt;/h2&gt;

&lt;p&gt;KPainter is the source-to-explainer workspace I founded. Its &lt;a href="https://kpainter.ai/excel-to-video?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026q3_spreadsheet_decision" rel="noopener noreferrer"&gt;Excel-to-video workflow&lt;/a&gt; starts from a workbook, chart, or selected data range and asks for the metric, comparison, audience, and decision that the viewer needs to understand.&lt;/p&gt;

&lt;p&gt;The important part is not the tool. It is the reviewable brief: one question, one valid comparison, a visible mechanism, and a named next step. With that structure, a spreadsheet update can become something a team can understand before the meeting rather than a file they open during it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Xinwei is Founder of KPainter.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>productivity</category>
      <category>data</category>
    </item>
    <item>
      <title>Release Notes Are Not Product Education: Build a Decision-Oriented Walkthrough</title>
      <dc:creator>Xinwei</dc:creator>
      <pubDate>Mon, 03 Aug 2026 12:41:30 +0000</pubDate>
      <link>https://dev.to/xinwei_feng_7724c63a3460a/release-notes-are-not-product-education-build-a-decision-oriented-walkthrough-5hkd</link>
      <guid>https://dev.to/xinwei_feng_7724c63a3460a/release-notes-are-not-product-education-build-a-decision-oriented-walkthrough-5hkd</guid>
      <description>&lt;p&gt;Release notes answer an important question: &lt;strong&gt;what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About this method:&lt;/strong&gt; I build &lt;a href="https://kpainter.ai/?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=2026q3_source_story&amp;amp;utm_content=release_method_disclosure" rel="noopener noreferrer"&gt;KPainter&lt;/a&gt;, a source-to-explainer video workspace. KPainter helps teams turn release notes, product briefs, docs, screenshots, and other source material into clear explainer videos. The workflow below keeps the maintained source—not the video—as the source of truth.&lt;/p&gt;

&lt;p&gt;They are not always enough to answer the next questions a customer, support teammate, or implementation partner has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this change affect my workflow?&lt;/li&gt;
&lt;li&gt;What should I do differently?&lt;/li&gt;
&lt;li&gt;What is deliberately unchanged?&lt;/li&gt;
&lt;li&gt;Where can I check the current details when the product evolves again?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That difference matters when a team turns a changelog, launch note, or technical update into a walkthrough. A screen recording can show a new control. A useful explanation helps the viewer decide whether to care, what to try, and where the boundary is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the viewer's decision
&lt;/h2&gt;

&lt;p&gt;Before opening a recorder or drawing a storyboard, write one sentence in this form:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After this walkthrough, &lt;strong&gt;[viewer]&lt;/strong&gt; should know whether &lt;strong&gt;[change]&lt;/strong&gt; affects &lt;strong&gt;[their job]&lt;/strong&gt;, and what to do next.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After this walkthrough, an existing workspace administrator should know whether a new approval step changes their release process, and where to configure it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sentence prevents a common failure mode: putting every release-note bullet into a video. A list of features is complete, but it is rarely a clear path through a decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Establish the source hierarchy
&lt;/h2&gt;

&lt;p&gt;Product details have different lifetimes. The launch note may be a useful summary, while the maintained documentation defines the exact configuration, permissions, availability, or limits.&lt;/p&gt;

&lt;p&gt;Use a small source hierarchy before drafting scenes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Current product documentation&lt;/strong&gt; — the maintained source for setup, constraints, and terminology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The release note or change record&lt;/strong&gt; — why the change happened and the scope of the release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A verified product view&lt;/strong&gt; — the interface or workflow that a viewer should recognise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support or migration guidance&lt;/strong&gt; — exceptions, rollout questions, and an escalation route.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each claim in the walkthrough should have an owner. If an availability detail changes next week, the maintained page should be the thing that changes first; the video can point back to it rather than becoming a second source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build five beats, not a feature tour
&lt;/h2&gt;

&lt;p&gt;For a short walkthrough, five beats are usually enough:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Beat&lt;/th&gt;
&lt;th&gt;Viewer question&lt;/th&gt;
&lt;th&gt;Evidence to show&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;Why would I notice this?&lt;/td&gt;
&lt;td&gt;The workflow or outcome before the change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change&lt;/td&gt;
&lt;td&gt;What is different?&lt;/td&gt;
&lt;td&gt;One named capability or decision point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fit&lt;/td&gt;
&lt;td&gt;Does it affect my role?&lt;/td&gt;
&lt;td&gt;A role, condition, or example use case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boundary&lt;/td&gt;
&lt;td&gt;What has not changed or is not covered?&lt;/td&gt;
&lt;td&gt;Availability, permission, or scope limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Next action&lt;/td&gt;
&lt;td&gt;What should I do now?&lt;/td&gt;
&lt;td&gt;The current documentation, setup step, or support path&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The order is deliberate. Showing a new interface first often forces viewers to infer why it matters. Context gives them a reason to look; the boundary protects them from assuming more than the change actually delivers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the live product separate from the explanation
&lt;/h2&gt;

&lt;p&gt;A walkthrough should not freeze a product UI into a promise. Use the current interface as evidence only when it is stable enough for the point you are making. If the exact layout is likely to move, show the outcome or decision rather than a sequence of pixel-level clicks.&lt;/p&gt;

&lt;p&gt;Likewise, preserve the difference between a reported fact and a recommendation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fact:&lt;/strong&gt; a setting is available to a specified role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommendation:&lt;/strong&gt; a team might use it during a defined review step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction is especially useful for release notes because product teams often combine confirmed behavior, rollout timing, and suggested practices in one announcement.&lt;/p&gt;

&lt;h2&gt;
  
  
  A reusable planning brief
&lt;/h2&gt;

&lt;p&gt;Use this before writing narration or choosing visuals:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Viewer and moment of use:
Change the viewer needs to understand:
Current maintained documentation:
Release-note source and version/date:
One workflow or decision to make visible:
Who is affected, and who is not:
Boundary, rollout condition, or exception:
Viewer's next action and the maintained destination:
Review owner and update trigger:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;KPainter's open &lt;a href="https://github.com/OriginwiseAI/kpainter-source-to-video-templates/blob/main/release-notes-product-education-brief.md" rel="noopener noreferrer"&gt;release-notes product-education brief&lt;/a&gt; turns those fields into a copyable worksheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review before publishing
&lt;/h2&gt;

&lt;p&gt;Ask a product owner, support lead, or documentation owner to check four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Terminology&lt;/strong&gt; — are feature and role names current?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt; — have availability, permissions, and exceptions been stated accurately?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision path&lt;/strong&gt; — can the named viewer tell whether to act, without guessing?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt; — does the final screen direct the viewer to the current source?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The purpose is not to replace release notes. It is to turn a change record into a path a real person can follow, while keeping the maintained source in charge of the details.&lt;/p&gt;

&lt;p&gt;To turn a change record into a source-led explainer workflow, read &lt;a href="https://kpainter.ai/blog/release-notes-to-explainer-video?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=2026q3_source_story&amp;amp;utm_content=release_decision_walkthrough" rel="noopener noreferrer"&gt;KPainter's guide to release notes and explainer videos&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>writing</category>
    </item>
    <item>
      <title>How to Turn an Architecture Guide into Developer Onboarding</title>
      <dc:creator>Xinwei</dc:creator>
      <pubDate>Fri, 31 Jul 2026 16:01:11 +0000</pubDate>
      <link>https://dev.to/xinwei_feng_7724c63a3460a/how-to-turn-an-architecture-guide-into-developer-onboarding-19h5</link>
      <guid>https://dev.to/xinwei_feng_7724c63a3460a/how-to-turn-an-architecture-guide-into-developer-onboarding-19h5</guid>
      <description>&lt;p&gt;An architecture guide often answers the wrong question for a new contributor.&lt;/p&gt;

&lt;p&gt;It tells them what components exist, where repositories live, and which services talk to each other. All of that matters. But a person joining a codebase usually starts with a more practical question: &lt;strong&gt;what is this system trying to accomplish, and where can I make a safe first contribution?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That difference is why many technically accurate onboarding documents remain hard to use. The reader receives a component map before they have a job model.&lt;/p&gt;

&lt;p&gt;Here is a structure for turning an existing architecture guide and release checklist into an onboarding walkthrough that helps a contributor orient themselves without flattening the technical detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Start with the system job
&lt;/h2&gt;

&lt;p&gt;Open with the user-facing or operational job the system performs. One or two sentences are enough. A contributor needs a causal anchor before a list of services means anything.&lt;/p&gt;

&lt;p&gt;For example, instead of beginning with “the platform has an API, worker, queue, and web client,” start with the flow the system enables: a request enters, work is validated, a background process completes it, and a user receives a reviewable result. The component map then becomes an explanation of how the job is carried out.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Group components by responsibility
&lt;/h2&gt;

&lt;p&gt;Avoid a tour of every repository. Group the architecture into responsibilities the contributor can remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;entry points that receive a request;&lt;/li&gt;
&lt;li&gt;services that validate or orchestrate it;&lt;/li&gt;
&lt;li&gt;workers that perform longer-running work;&lt;/li&gt;
&lt;li&gt;storage or state that keeps the result available;&lt;/li&gt;
&lt;li&gt;interfaces where users review or continue the work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This does not hide implementation detail. It creates a first-pass model that makes detail searchable later.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Show one request end to end
&lt;/h2&gt;

&lt;p&gt;An onboarding walkthrough needs a concrete path. Choose one representative request and trace it across the boundary between components. Show what enters the system, what changes state, what work is asynchronous, what result returns, and where a failure is surfaced.&lt;/p&gt;

&lt;p&gt;The path should include the terms a contributor will encounter in logs, pull requests, and issues. Stable labels are more useful than animated diagrams with generic boxes.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Connect the release checklist to the architecture
&lt;/h2&gt;

&lt;p&gt;Release documents are often separated from architecture documents, even though they teach the contributor where responsibility actually lives. Pair a release action with the component or dependency it affects.&lt;/p&gt;

&lt;p&gt;For each release step, answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What is changing?&lt;/li&gt;
&lt;li&gt;Which component owns that change?&lt;/li&gt;
&lt;li&gt;What dependency or configuration makes the change live?&lt;/li&gt;
&lt;li&gt;What observable result confirms it worked?&lt;/li&gt;
&lt;li&gt;What is the rollback or escalation path?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where an abstract diagram becomes an operating model.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Design the first-contribution path
&lt;/h2&gt;

&lt;p&gt;New contributors do not need every internal decision on day one. They need one safe route from orientation to a meaningful change.&lt;/p&gt;

&lt;p&gt;Describe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the local setup boundary;&lt;/li&gt;
&lt;li&gt;a small issue or documentation change that exercises the normal workflow;&lt;/li&gt;
&lt;li&gt;tests or checks that establish confidence;&lt;/li&gt;
&lt;li&gt;the reviewer or owner for the relevant area;&lt;/li&gt;
&lt;li&gt;the signal that tells the contributor they are ready for a larger task.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The path should be visible in the same walkthrough as the architecture. Otherwise the reader learns the system but not how to participate in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Keep the guide maintainable
&lt;/h2&gt;

&lt;p&gt;Architecture onboarding becomes misleading when it is polished once and left alone. Give it an owner, a revision trigger, and a short glossary. Update the request path when a dependency or release flow changes. Keep links to the detailed architecture reference for people who need depth.&lt;/p&gt;

&lt;h2&gt;
  
  
  A compact storyboard
&lt;/h2&gt;

&lt;p&gt;For teams making a visual walkthrough, a dependable sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;system job;&lt;/li&gt;
&lt;li&gt;core responsibilities;&lt;/li&gt;
&lt;li&gt;one request path;&lt;/li&gt;
&lt;li&gt;one release or operating path;&lt;/li&gt;
&lt;li&gt;one first contribution;&lt;/li&gt;
&lt;li&gt;links to deeper references and owners.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a visual companion to this method, see &lt;a href="https://kpainter.ai/examples/developer-architecture-video?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=2026q3_source_story&amp;amp;utm_content=architecture_onboarding_example" rel="noopener noreferrer"&gt;KPainter's architecture-onboarding explainer example&lt;/a&gt;. The important lesson is not the visual treatment. It is the order: explain what the system is for before asking a new person to memorize its parts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Xinwei is Founder of &lt;a href="https://kpainter.ai/?utm_source=devto&amp;amp;utm_medium=organic&amp;amp;utm_campaign=2026q3_source_story&amp;amp;utm_content=architecture_author_disclosure" rel="noopener noreferrer"&gt;KPainter&lt;/a&gt;, a source-to-explainer video workspace. This is an original documentation-design article; teams should adapt the structure to their own architecture and security boundaries.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
      <category>softwareengineering</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
