<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Product Thinking on Chen Kai Blog</title><link>https://www.chenk.top/en/categories/product-thinking/</link><description>Recent content in Product Thinking on Chen Kai Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 03 Jun 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://www.chenk.top/en/categories/product-thinking/index.xml" rel="self" type="application/rss+xml"/><item><title>Product Thinking (5): Abstraction Thinking — From Math to Systems</title><link>https://www.chenk.top/en/product-thinking/05-abstraction/</link><pubDate>Wed, 03 Jun 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/05-abstraction/</guid><description>&lt;h2 id="the-instinct-you-cannot-unlearn" class="heading-anchor">The Instinct You Cannot Unlearn&lt;a href="#the-instinct-you-cannot-unlearn" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>There is a moment in every abstract algebra course where the professor writes something like this on the board:&lt;/p>
&lt;p>&lt;figure class="article-figure">
 &lt;img src="https://blog-pic-ck.oss-cn-beijing.aliyuncs.com/posts/en/product-thinking/05-abstraction/fig1_abstraction_transfer.png" alt="Abstraction transfers — the same structural reasoning runs from math to engineering." loading="lazy" decoding="async" class="content-image">
 
&lt;/figure>
&lt;/p>
&lt;blockquote>
&lt;p>Let &lt;span class="math-inline">$\phi: G \to H$&lt;/span>
 be a group homomorphism. Then &lt;span class="math-inline">$\ker(\phi) \trianglelefteq G$&lt;/span>
, and &lt;span class="math-inline">$G/\ker(\phi) \cong \text{im}(\phi)$&lt;/span>
.&lt;/p>
&lt;/blockquote>
&lt;p>The first isomorphism theorem. When I first saw it, I thought it was a curiosity — a proof exercise to survive, then forget. I was wrong. That theorem planted something in my brain that never left: the instinct that &lt;strong>every structure has a quotient&lt;/strong>, that &lt;strong>what you throw away defines what you keep&lt;/strong>, and that &lt;strong>two things that look nothing alike can be the same thing in disguise&lt;/strong> if you find the right map between them.&lt;/p></description></item><item><title>Product Thinking (4): Self-Healing Systems — Teaching Machines to Fix Themselves</title><link>https://www.chenk.top/en/product-thinking/04-self-healing/</link><pubDate>Tue, 02 Jun 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/04-self-healing/</guid><description>&lt;h2 id="the-bug-that-fixed-itself" class="heading-anchor">The Bug That Fixed Itself&lt;a href="#the-bug-that-fixed-itself" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>One morning in late May 2026, I woke up to a DingTalk notification from my research agent system:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;self_heal Rule 37 triggered: restarted research-pipeline after 3 consecutive OOM kills. Root cause: scanner thread retained full PDF buffers across iterations. Applied patch: explicit &lt;code>del&lt;/code> after extraction. Validation: 45 minutes post-patch, RSS stable at 1.2 GB (was 2.4 GB pre-patch).&amp;rdquo;&lt;/p></description></item><item><title>Product Thinking (3): UX &amp; Design Systems — Tokens, Dark Mode, and Bilingual</title><link>https://www.chenk.top/en/product-thinking/03-ux-design/</link><pubDate>Mon, 01 Jun 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/03-ux-design/</guid><description>&lt;h2 id="the-problem-with-just-make-it-look-good" class="heading-anchor">The Problem With &amp;ldquo;Just Make It Look Good&amp;rdquo;&lt;a href="#the-problem-with-just-make-it-look-good" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>Every engineer who has ever touched CSS knows the feeling: you open a stylesheet written six months ago and find forty-seven shades of grey, twelve font sizes that follow no discernible scale, and a dark mode implementation consisting of &lt;code>filter: invert(1)&lt;/code> on the body element. The code works. The site renders. But every new feature requires archaeology — digging through layers of ad-hoc decisions to figure out what the &amp;ldquo;right&amp;rdquo; shade of muted text is supposed to be.&lt;/p></description></item><item><title>Product Thinking (2): Security Engineering — Defense Without Paranoia</title><link>https://www.chenk.top/en/product-thinking/02-security/</link><pubDate>Sun, 31 May 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/02-security/</guid><description>&lt;h2 id="the-kind-of-security-that-disappears" class="heading-anchor">The Kind of Security That Disappears&lt;a href="#the-kind-of-security-that-disappears" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>I used to think security was something you bolted on: a checklist before release, a penetration test once a quarter, a code review with &amp;ldquo;security&amp;rdquo; in the title. I was wrong. The systems I have built over the past two years taught me a different lesson — the best security is the kind you forget about because it is already woven into the system itself.&lt;/p></description></item><item><title>Product Thinking (1): Architecture Design — From Monolith to Autonomous Agents</title><link>https://www.chenk.top/en/product-thinking/01-architecture/</link><pubDate>Sat, 30 May 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/01-architecture/</guid><description>&lt;h2 id="the-shape-of-a-system" class="heading-anchor">The Shape of a System&lt;a href="#the-shape-of-a-system" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>Every architecture is a frozen argument. It records what you believed about the problem at the time you committed the code. Looking back across four systems I built over eighteen months — a marketing content platform (~70k lines TypeScript), a zero-dependency skill routing engine, an autonomous research agent (~315k lines Python), and a multi-model coding orchestrator — I can trace how my architectural instincts shifted. Not always forward. Sometimes sideways. But there is a clear progression: from &amp;ldquo;keep it in one process&amp;rdquo; to &amp;ldquo;let the agents govern themselves.&amp;rdquo;&lt;/p></description></item></channel></rss>