<?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: Tongshan</title>
    <description>The latest articles on DEV Community by Tongshan (@tongshan42).</description>
    <link>https://dev.to/tongshan42</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3938285%2F54ea68bf-a61f-41c8-9e0b-d068498138fc.png</url>
      <title>DEV Community: Tongshan</title>
      <link>https://dev.to/tongshan42</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tongshan42"/>
    <language>en</language>
    <item>
      <title>4 Steps Every PM Should Follow Before Shipping Anything</title>
      <dc:creator>Tongshan</dc:creator>
      <pubDate>Tue, 19 May 2026 02:16:34 +0000</pubDate>
      <link>https://dev.to/tongshan42/4-steps-every-pm-should-follow-before-shipping-anything-37b8</link>
      <guid>https://dev.to/tongshan42/4-steps-every-pm-should-follow-before-shipping-anything-37b8</guid>
      <description>&lt;p&gt;Most PMs I've worked with are smart, well-intentioned, and still consistently ship the wrong things. Not because they're lazy — but because their decision-making process has gaps that don't show up until after launch.&lt;/p&gt;

&lt;p&gt;After years as a PM at iQIYI (one of China's largest streaming platforms), I distilled our internal review process into 4 steps. I now run every feature decision through this before anything reaches engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Find the Real Need
&lt;/h2&gt;

&lt;p&gt;Users tell you what they want. What they &lt;em&gt;need&lt;/em&gt; is usually different.&lt;/p&gt;

&lt;p&gt;When someone asks for a "filter" feature, dig deeper. What pain are they actually experiencing? What does their workflow look like without this? The real need is usually one level below the stated request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice:&lt;/strong&gt; For every request, ask "what problem goes away if we build this?" If you can't answer it in one sentence, you don't know the need yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Evaluate the Full Solution Space
&lt;/h2&gt;

&lt;p&gt;Once the real need is clear, list &lt;em&gt;every&lt;/em&gt; possible solution — not just the obvious one. Aim for at least 5-7 options.&lt;/p&gt;

&lt;p&gt;This is where most teams fail: they jump to the first reasonable solution and start debating execution instead of exploring alternatives. The best option is often not the most obvious one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice:&lt;/strong&gt; Set a timer for 10 minutes and brainstorm solutions without filtering. Include silly ones. Include ones that are "not your job." Then evaluate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Map the Full User Flow
&lt;/h2&gt;

&lt;p&gt;Pick your best solution and draw every step a user takes — from problem awareness to resolution.&lt;/p&gt;

&lt;p&gt;Don't just map the happy path. Explicitly map:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens when users get confused&lt;/li&gt;
&lt;li&gt;What the error states look like&lt;/li&gt;
&lt;li&gt;What support sees when things go wrong&lt;/li&gt;
&lt;li&gt;What email/notification gets triggered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've killed more than a few features at this step when the full flow revealed hidden complexity we weren't prepared to handle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Enumerate All UI States
&lt;/h2&gt;

&lt;p&gt;Every screen has multiple states. Name them all before design starts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty state&lt;/li&gt;
&lt;li&gt;Loading state
&lt;/li&gt;
&lt;li&gt;Error state&lt;/li&gt;
&lt;li&gt;Partial data state&lt;/li&gt;
&lt;li&gt;Success state&lt;/li&gt;
&lt;li&gt;Edge case states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the most skipped step. And it's why so many products feel rough — not because the core interaction is bad, but because no one thought about the empty state.&lt;/p&gt;




&lt;p&gt;This framework doesn't tell you &lt;em&gt;what&lt;/em&gt; to build. It makes sure that whatever you build is the right thing, built right.&lt;/p&gt;

&lt;p&gt;I've written this up in more depth — with templates and worked examples — in a short PM handbook: &lt;a href="https://dcljoyful.gumroad.com/l/toPM" rel="noopener noreferrer"&gt;https://dcljoyful.gumroad.com/l/toPM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What steps does your team take before shipping? I'd love to hear what works.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>The 4-Step PM Framework I Used for 12 Years at iQiyi, NIO, Alibaba &amp; Horizon Robotics</title>
      <dc:creator>Tongshan</dc:creator>
      <pubDate>Mon, 18 May 2026 14:08:47 +0000</pubDate>
      <link>https://dev.to/tongshan42/the-4-step-pm-framework-i-used-for-12-years-at-iqiyi-nio-alibaba-horizon-robotics-2k5b</link>
      <guid>https://dev.to/tongshan42/the-4-step-pm-framework-i-used-for-12-years-at-iqiyi-nio-alibaba-horizon-robotics-2k5b</guid>
      <description>&lt;p&gt;After 12 years shipping products at iQiyi, NIO, Alibaba, and Horizon Robotics — I kept running the same mental checklist on every new requirement. I finally wrote it down.&lt;/p&gt;

&lt;p&gt;Here's the 4-step framework:&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Understand the Real Need (Behind the Stated One)
&lt;/h2&gt;

&lt;p&gt;Most requirements arrive wrapped in a solution. Someone says "add a filter" when what they actually need is "find relevant items faster." Your job is to peel back the surface request and uncover the actual user need.&lt;/p&gt;

&lt;p&gt;A useful test: &lt;strong&gt;Pareto improvement&lt;/strong&gt;. Does this change make something better without making anything worse? If your understanding of the need forces a painful tradeoff, you probably haven't found the real need yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example from ride-hailing:&lt;/strong&gt; Drivers said they wanted "to get paid more." The real need was &lt;em&gt;income certainty&lt;/em&gt; — predictable earnings, not just higher ones. That single insight explains the entire auto-debit payment flow design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Evaluate the Solution Space
&lt;/h2&gt;

&lt;p&gt;Once you understand the real need, resist building the first solution that comes to mind. Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the alternative approaches?&lt;/li&gt;
&lt;li&gt;What's the simplest version that addresses the core need?&lt;/li&gt;
&lt;li&gt;What constraints (tech, legal, time) narrow the space?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PMs who skip this step consistently over-engineer. The best solution is often the one that removes friction, not adds features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Draw the Flow
&lt;/h2&gt;

&lt;p&gt;Before touching any spec doc, draw the user flow. End-to-end. Every decision point, every handoff, every edge case branch.&lt;/p&gt;

&lt;p&gt;This is where most requirements fall apart — not in the happy path, but in the branches nobody thought through. A visual flow forces you to confront those gaps early, when changes are cheap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Enumerate Every UI State
&lt;/h2&gt;

&lt;p&gt;For every screen in the flow, explicitly define all possible states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Normal&lt;/strong&gt; — the intended state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loading&lt;/strong&gt; — while data is being fetched&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Empty&lt;/strong&gt; — when there's no data yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error&lt;/strong&gt; — when something goes wrong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can't describe the Error state for a given screen, the feature isn't ready to spec. Most production bugs come from unhandled states that "nobody thought would happen."&lt;/p&gt;




&lt;h2&gt;
  
  
  Using This in Practice
&lt;/h2&gt;

&lt;p&gt;I've applied this framework across wildly different contexts — streaming platforms, electric vehicles, logistics, autonomous driving. The specifics change; the checklist doesn't.&lt;/p&gt;

&lt;p&gt;If you want the full breakdown with worked examples, decision templates, and real requirement patterns from these industries — I put everything into a 16-page handbook:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://dcljoyful.gumroad.com/l/toPM" rel="noopener noreferrer"&gt;The 4-Step PM Framework Handbook&lt;/a&gt; — $19.90, instant download&lt;/p&gt;

&lt;p&gt;It's the checklist I wish I'd had on day one.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
