<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>LicsberBlog</title>
  
  <subtitle>来人间一场</subtitle>
  <link href="https://licsber.site/atom.xml" rel="self"/>
  
  <link href="https://licsber.site/"/>
  <updated>2026-07-03T09:46:03.000Z</updated>
  <id>https://licsber.site/</id>
  
  <author>
    <name>licsber</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>用 Codex Skill 搭一条内容生产线</title>
    <link href="https://licsber.site/2026/07/03/"/>
    <id>https://licsber.site/2026/07/03/</id>
    <published>2026-07-03T09:46:03.000Z</published>
    <updated>2026-07-03T09:46:03.000Z</updated>
    
    <content type="html"><![CDATA[<p>一篇文章写完，创作者的工作往往才做了一半。</p><p>接下来还要挑配图、裁公众号封面、拆成小红书卡片；碰上汇报，还得再做一版 PPT。每个平台尺寸不同，风格要统一，文字不能溢出，最后的文件最好还能继续改。换一篇文章，又要从头向 AI 解释一遍。</p><p>最近一批 Codex Skill 瞄准的，正是这段反复发生的“发布前收尾”。创作者看到的是一组配图、一套社媒卡片或一个可编辑 PPT；开发者看到的则是被保存下来的规则、模板、脚本、渲染工具和检查流程。</p><p>这篇真正想讨论的不是“又多了几个 AI 项目”，而是同一条内容生产线的两面：它替用户省掉了什么，开发者又为稳定交付搭了什么，以及它离真正的一键内容工厂还有多远。</p><aside class="research-note">  <span class="research-note-label">调研边界</span>  <p>下面的案例来自公开 README 与仓库结构，核查时间为 2026 年 7 月 10 日，并非我对所有项目做过完整实测。项目描述可以说明它们想解决什么，不能替代真实运行效果。</p></aside><h2 id="用户要的不是“AI-会不会画”"><a href="#用户要的不是“AI-会不会画”" class="headerlink" title="用户要的不是“AI 会不会画”"></a>用户要的不是“AI 会不会画”</h2><p>假设我刚写完一篇长文，对 Codex 说：</p><blockquote><p>按我平时的风格，做三张正文配图、一张公众号封面，再拆成一组小红书卡片。</p></blockquote><p>从用户视角看，这句话并不复杂。我关心的只有几件事：不用每次重讲审美，几个渠道看起来像同一套作品，文字没有被裁掉，最后拿到的是可以发布或继续修改的文件。</p><p>但开发者听到的是另一串问题：</p><table><thead><tr><th>用户说的话</th><th>真正的验收标准</th><th>开发者要补上的工程合同</th></tr></thead><tbody><tr><td>“按我平时的风格”</td><td>配色、留白、语气和构图稳定</td><td>参考图、模板、禁用项与版本化规则</td></tr><tr><td>“做成一组卡片”</td><td>尺寸正确、信息连续、顺序可读</td><td>平台规格、内容拆分、版式选择与批量渲染</td></tr><tr><td>“不要有文字溢出”</td><td>手机端预览没有裁切和遮挡</td><td>DOM 检查、截图对比或人工确认门</td></tr><tr><td>“给我一个 PPT”</td><td>标题能改、图形能挪，不是一张大截图</td><td>对象级重建、重新渲染和文件打开验证</td></tr><tr><td>“以后都这样做”</td><td>新任务不必重发整套规则</td><td>可安装、可版本化、能再次读取的工作流</td></tr></tbody></table><p>这正是普通聊天和 Skill 开始拉开差距的地方。好 prompt 当然也能调用工具，轻量 Skill 也可能只有一份说明；区别不在于名字，而在于有没有把复用、工具顺序、失败条件和交付格式一起保存下来。</p><h2 id="开发者搭的不是一个更长的-prompt"><a href="#开发者搭的不是一个更长的-prompt" class="headerlink" title="开发者搭的不是一个更长的 prompt"></a>开发者搭的不是一个更长的 prompt</h2><p>从 <a href="https://developers.openai.com/codex/concepts/customization/#skills">Codex 的自定义机制</a> 来看，Skill 更接近一个可复用工作流。一个典型目录可能长这样：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">social-card-skill/</span><br><span class="line">├── SKILL.md       # 适用场景、步骤、停止条件和交付物</span><br><span class="line">├── references/    # 平台尺寸、版式规则、质量标准</span><br><span class="line">├── scripts/       # 渲染、转换、校验等确定性操作</span><br><span class="line">└── assets/        # 模板、样例和视觉基线</span><br></pre></td></tr></table></figure><p><code>SKILL.md</code> 是入口：名称和描述帮助 Codex 判断什么时候该用它，正文规定先读什么、做什么、哪里必须停下来确认。细节资料不必全塞进上下文，可以在需要时再读；确定性的转换交给脚本；模板和样例则作为稳定起点。</p><p>这也意味着 Skill 本身不会凭空获得新能力。它不能凭一份说明变出 Playwright、图像模型或 PowerPoint 运行时，而是规定如何使用当前环境里已有的工具。环境没有装依赖、没有权限或没有对应模型，生产线照样会停。</p><p>所以 Skill 也不是“记住上次对话”。更准确的说法是：它把规则写进文件并版本化，让下一次新任务可以重新读取，而不用用户再手动粘贴整套要求。</p><h2 id="第一条生产线：把文章变成发布包"><a href="#第一条生产线：把文章变成发布包" class="headerlink" title="第一条生产线：把文章变成发布包"></a>第一条生产线：把文章变成发布包</h2><p>内容创作者最容易感知的，是从文章到配图和社媒卡片这一段。</p><p><a href="https://github.com/helloianneo/ian-xiaohei-illustrations"><code>ian-xiaohei-illustrations</code></a> 的目标，是把中文文章里的判断、流程、结构和隐喻，转成统一的小黑 IP、16:9 白底手绘正文图。对用户来说，价值不是“偶尔生成一张好看的图”，而是下一篇文章还能沿用相同的留白、线条和批注方式。</p><p>开发者视角则完全不同。要稳定复用这种风格，需要先从文章里挑出值得可视化的句子，再约束构图、颜色、文字量和禁止项；生成后还要检查画面是不是在解释观点，而不是只做装饰。所谓“风格一致”，实际是参考素材、规则和人工判断共同作用的结果，不是模型天然记住了审美。</p><p><a href="https://github.com/op7418/guizang-social-card-skill"><code>guizang-social-card-skill</code></a> 把链路又往前推了一步。它面向小红书图文、公众号封面和 Live Photo，公开规则里包括 3 种画板尺寸、28 个版式、10 套主题，以及从单文件 HTML 到 Playwright 截图的流程。</p><p>用户看到的是“同一篇文章输出不同平台的发布包”。开发者看到的却是：识别发布意图，读取平台尺寸，选择模板和图片来源，生成 HTML，调用浏览器渲染 PNG，再决定是否运行 9 条 DOM 版式校验。这里还有一个很重要的真实边界：仓库默认先交付 PNG，再询问用户要不要自动校验，并不是每次都会默默跑完检查。</p><p>模板在这里没有被 Skill 淘汰。模板负责提供稳定起点，Skill 负责决定什么时候选哪一套、如何填充内容、用什么工具渲染、失败以后怎样返工。对用户来说，这些细节最好都看不见；对开发者来说，它们才是“以后还能再做一次”的原因。</p><h2 id="第二条生产线：从只能看的截图到能改的-PPT"><a href="#第二条生产线：从只能看的截图到能改的-PPT" class="headerlink" title="第二条生产线：从只能看的截图到能改的 PPT"></a>第二条生产线：从只能看的截图到能改的 PPT</h2><p>PPT 是更能暴露“交付合同”的案例。</p><p>用户说“帮我复刻这页”，通常不是想得到一张图片塞进 <code>.pptx</code>，而是希望标题真的能改、卡片真的能挪、图表还能换数据。只有截图、扫描 PDF 或图片版旧 PPT 时，这个需求尤其真实。</p><p><a href="https://github.com/ningzimu/image-to-editable-ppt-skill"><code>image-to-editable-ppt-skill</code></a> 就围绕这件事展开。它会尽量把可读文字重建为原生文本框，把简单几何重建为形状，复杂视觉则保留成独立图片资产。对用户来说，结果从“只能看”变成“还能接着做”；对开发者来说，“可编辑”必须被拆成能验证的对象清单、页面状态、渲染对照和最终文件检查。</p><p>这条生产线远没有标题听起来轻松。项目 README 明确提醒：单页可能超过 10 分钟，10 页任务可能耗尽 5 小时额度，还会消耗 OCR、图片 API、多智能体和大量 token。它也不承诺 100% 还原。把这些成本写出来，比一句“AI 自动转 PPT”更接近用户真正会遇到的体验。</p><p><a href="https://github.com/crazyykhllc-bit/CyberPPT"><code>CyberPPT</code></a> 处理的是另一类需求：高密度、咨询风、可编辑的正式汇报。它把证据底稿、故事线、风格确认、逐页视觉蓝图、可编辑层和多轮质量检查接进流程。仓库自己的建议也很诚实：让 AI 完成约 90%，剩下 10% 由人收尾；复杂曲线和图标容易有偏差，追求 100% 会显著增加 token 与调试成本。</p><p class="post-pullquote"><strong>“生成了”不等于“交付了”。</strong>真正的终点是能打开、能修改、符合尺寸，并且知道哪些部分仍需要人工复核。</p><h2 id="第三类-Skill-其实不太像工厂"><a href="#第三类-Skill-其实不太像工厂" class="headerlink" title="第三类 Skill 其实不太像工厂"></a>第三类 Skill 其实不太像工厂</h2><p>并不是带着 <code>SKILL.md</code> 的项目都会形成完整生产线。</p><p><a href="https://github.com/brycewang-stanford/Awesome-Journal-Skills"><code>Awesome-Journal-Skills</code></a> 更像期刊与会议写作规则的索引。它的深度包可以覆盖选题、识别策略、表图规范、投稿和审稿回复；另一些广度合集主要提供 venue fit、写作风格和路由信息。</p><p>截至 2026 年 7 月 10 日，项目 README 报告了 289 个 pack、4030 个 <code>SKILL.md</code>。这个规模说明 Agent Skill 生态增长很快，却不代表 4030 份内容都经过了学术事实审查。它当前也更偏 Claude Code marketplace 和通用 Agent Skill，并非 Codex 专属项目。</p><p>对研究者来说，这类 Skill 可以少翻几遍投稿规范；对开发者来说，它的核心更接近知识路由和上下文选择，而不是浏览器渲染、文件验证与失败恢复。引用是否真实、方法是否适用、数据能否交给外部模型，仍然需要研究者自己负责。</p><p>把它和前两个案例放在一起，反而能看清一个光谱：有的 Skill 主要保存审美与规则，有的连接模板、渲染器和校验器，还有的已经带着状态文件与失败恢复。把它们统称为“内容工厂”很方便，但工程成熟度并不一样。</p><h2 id="它不是一键魔法"><a href="#它不是一键魔法" class="headerlink" title="它不是一键魔法"></a>它不是一键魔法</h2><p>从用户视角看，好的 Skill 应该让操作越来越短；从开发者视角看，稳定性来自更多明确约束，而不是更强烈的承诺。</p><p>真正使用时，至少还有这些成本：</p><ul><li><strong>安装与环境</strong>：浏览器、字体、Office 运行时、Python 或 Node 依赖缺一项，都可能卡住流程。</li><li><strong>时间与费用</strong>：图片生成、OCR、多智能体和长文档重建会消耗额度，也可能比手工改一页更慢。</li><li><strong>随机性</strong>：同一套风格规则能提高一致性，不能保证每次构图都合格。</li><li><strong>人工复核</strong>：事实、引用、版权、错字、复杂图表和最终审美不能只靠“脚本通过”。</li><li><strong>隐私与权限</strong>：论文数据、客户材料和未公开方案进入哪些模型、脚本和外部服务，需要在运行前说清楚。</li></ul><p>一条生产线真正成熟的标志，不是它永远不失败，而是失败能被看见：知道停在哪一步，保留了哪些中间文件，修正后能否续跑，错误产物会不会被误当成最终交付。</p><h2 id="什么最值得做成自己的-Skill"><a href="#什么最值得做成自己的-Skill" class="headerlink" title="什么最值得做成自己的 Skill"></a>什么最值得做成自己的 Skill</h2><p>我现在不会再用“公共知识还是私人偏好”来区分价值。代码工作流同样值得 Skill 化：项目入口、迁移命令、测试、回滚和发布验收，和内容工作流里的尺寸、审美、渲染与校验，本质上都是稳定约束。</p><p>更实用的判断方法是“三次法”：同一类任务连续做三次，如果每次都在重复解释相同规则、整理相同文件、执行相同步骤，就值得考虑封装。</p><p>动手前，我会先回答六个问题：</p><ol><li>什么样的请求应该触发它，什么请求不该触发？</li><li>用户需要提供哪些输入，缺少什么就必须停下来问？</li><li>哪些步骤交给模型判断，哪些更适合确定性脚本？</li><li>中间文件和状态写在哪里，失败后怎样继续？</li><li>什么算完成，哪些检查能自动做，哪些必须让人确认？</li><li>用户最终拿到什么：一张预览图，还是可继续编辑和发布的文件？</li></ol><p>这六个问题答不清，Skill 很可能只是一个收藏起来的长 prompt。答清以后，它才开始像工作流。</p><p>所以，Codex Skill 被“玩成内容工厂”真正有意思的地方，不是 AI 突然更会写、更会画了。创作者想要的是少说几遍、少做几轮机械整理，最后拿到能用的东西；开发者要做的是让这份“能用”变成可重复、可观察、可验证的交付合同。</p><p>两种视角合在一起，内容工厂才不只是一个好听的比喻。</p>]]></content>
    
    
    <summary type="html">同一套 Codex Skill，创作者看到的是配图、社媒卡片和可编辑 PPT，开发者看到的却是触发规则、工具编排、渲染校验与失败恢复。</summary>
    
    
    
    <category term="tech" scheme="https://licsber.site/categories/tech/"/>
    
    
    <category term="Codex" scheme="https://licsber.site/tags/Codex/"/>
    
    <category term="AI" scheme="https://licsber.site/tags/AI/"/>
    
    <category term="Skill" scheme="https://licsber.site/tags/Skill/"/>
    
  </entry>
  
  <entry>
    <title>第五次博客重构</title>
    <link href="https://licsber.site/2026/01/31/"/>
    <id>https://licsber.site/2026/01/31/</id>
    <published>2026-01-31T04:30:01.000Z</published>
    <updated>2026-01-31T04:30:01.000Z</updated>
    
    <content type="html"><![CDATA[<p>第五次了。</p><p>如果重构博客能打卡集章，我现在应该能换一杯免费咖啡～</p><p>每次重构的理由都很充分：上次主题不够简洁、部署流程不够优雅、字体看着不顺眼……反正就是不想承认一件事————<strong>我花三天调 CSS，却三个月没写文章。</strong></p><p>这次重构其实变化挺大的——我换了个新主题，名字叫 <code>licsber</code>，听起来像某种神秘的宗教，但实际上就是我自己造的轮子。</p><p>为什么不用现成的主题？现成的主题就像租来的房子，总觉得差那么点意思。自己写的主题虽然简陋，但每一个像素都在喊”这是我家”。</p><p>新主题加了不少花里胡哨的东西：</p><ul><li><p><strong>Hero 区域会动</strong> —— 没错，加上了打字机特效，是不是有这么一点现代化了。</p></li><li><p><strong>侧边栏有了头像</strong> —— GitHub 头像往那一摆，顿时有了”这是一个正经博主”的错觉。下面还写着”软件工程师 &#x2F; 开源爱好者”，其实开源项目 star 数两只手数得过来。</p></li></ul><p>但最本质的东西没变：还是 Hexo，还是 Markdown，还是那几篇陈年旧文。<code>node_modules</code> 倒是又胖了 200MB，我对着 Dockerfile 自言自语了一个下午。</p><p>为什么要重构？</p><p>大概因为写博客太难了。你得有想法、有表达欲、还要担心写完之后自己三天后就觉得那是垃圾。但重构博客不一样——它是纯粹的体力劳动，是无需动脑的安全区，是程序员最优雅的拖延方式。</p><p>“我不是没写东西，我在优化写作环境呢。”</p><p>听起来是不是很高级？</p><p>所以欢迎光临我的第五次博客。内容可能还是那些，但加载速度理论上快了 0.3 秒——如果你正好用 2G 网络的话，应该能感受出来。</p><p>下次重构再见 👋</p>]]></content>
    
    
    <summary type="html">第五次重构博客了。如果重构能打卡集章，我应该能换一杯免费咖啡～花三天调 CSS，三个月不写文章————这就是程序员最优雅的拖延方式。</summary>
    
    
    
    <category term="tech" scheme="https://licsber.site/categories/tech/"/>
    
    
    <category term="Hexo" scheme="https://licsber.site/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>通往奴役之路（一）</title>
    <link href="https://licsber.site/2024/10/16/"/>
    <id>https://licsber.site/2024/10/16/</id>
    <published>2024-10-16T03:02:11.000Z</published>
    <updated>2024-10-16T03:02:11.000Z</updated>
    
    <content type="html"><![CDATA[<p>现代资本主义国家奉行的自由主义经济思想，本质上是生产资料的私有化。现代社会最重要的其实不是财富本身，而是生产资料的所属。</p><p>如果国家掌握了所有生产资料，我们就称其为完全的社会主义国家：大家人人生而平等，向国家提供相同的“社会必要劳动时间”就可以换取自身、也即私利的必要生活资源。</p><p>现代化中国显然还未达成这点，我们仍需要市场经济体制，靠市场来完成资源的一次分配，依赖最公平的教育与考核将人们分为三六九等，这样拥有更多生产力的人也就可以获取到更多的社会资源。</p><p>同时，由于生产资料的未全部国有化&#x2F;集体化，持有生产资料的个体会获取除了资源以外的东西，即对分配的管理权。</p>]]></content>
    
    
    <summary type="html">哈耶克入门笔记：为什么生产资料比财富更重要？市场经济如何用『公平的教育与考核』把人分成三六九等，以及为什么我们还在通往（或远离）奴役的路上。</summary>
    
    
    
    <category term="book" scheme="https://licsber.site/categories/book/"/>
    
    
    <category term="通往奴役之路" scheme="https://licsber.site/tags/%E9%80%9A%E5%BE%80%E5%A5%B4%E5%BD%B9%E4%B9%8B%E8%B7%AF/"/>
    
    <category term="哈耶克" scheme="https://licsber.site/tags/%E5%93%88%E8%80%B6%E5%85%8B/"/>
    
  </entry>
  
  <entry>
    <title>何为爱情</title>
    <link href="https://licsber.site/2024/06/30/"/>
    <id>https://licsber.site/2024/06/30/</id>
    <published>2024-06-29T16:44:10.000Z</published>
    <updated>2024-06-29T16:44:10.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="浮木"><a href="#浮木" class="headerlink" title="浮木"></a>浮木</h2><p>听过一个说法：爱情就像溺水之人忽然抓住的一只手，强劲有力，将人从泥潭中解救出来。</p><p>可如果一个人在溺水时才想起你，才需要你，那你和抽屉里那盒过期的止疼药，又有什么分别？</p><p>人终究无法永远充当另一片浮木。浮木也会吸饱水分，然后沉默地沉入水底。</p><p>我们带着残缺和伤口踏入一段关系，期待从对方的世界里获得救赎————但这不是爱，这只是自己无法温暖自己，便借着他人的体温来取暖。当一个人没有给予爱的能力，爱情就变成了应急措施，而非生活本身的质地。它像夜空中偶尔划过的流星，惊艳一时，却无法成为长久照亮彼此的恒星。</p><p>建立在需求与依赖之上的情感，注定缺乏相互扶持的根基。一个人若只在困顿无助时转向你，把你当作生命中的备用选项，这份情感的纯粹与深度，便值得怀疑。</p><h2 id="陪伴"><a href="#陪伴" class="headerlink" title="陪伴"></a>陪伴</h2><p>但人毕竟是社会性动物，渴望陪伴是一种根植于本能的需要，不是精神满足层面上的”想要”，而是像身体对水的渴求一样客观存在。</p><p>问题在于，当一个人沦为另一人的浮木，这段关系就悄悄变了质。浮木在照顾溺水者的过程中，更像是在豢养一只宠物。溺爱固然也是爱，但宠物关系注定不对等——它的感激源于自身的匮乏，而非对浮木本质的欣赏与爱慕。</p><p>你不能苛求宠物听懂你说的话，也不该反过来要求它关注你的生活起居。说到底，用宠物来填补自己的孤独，这本就不是它该承受的重量。</p><h2 id="救赎"><a href="#救赎" class="headerlink" title="救赎"></a>救赎</h2><p>那么，什么才是真正的相爱？</p><p>我想，应该是两个灵魂的彼此救赎。</p><p>说”救赎”或许言重了，显得我们像是活在什么苦情戏里。但日子确实不易，布满了磕磕绊绊的痕迹。而在这不易之中，我们学会成为彼此的光——不是那种刺眼的、用来照耀的强光，而是冬夜里壁炉中微微闪烁的火光，让人知道这里有人，这里温暖。</p><p>是在彼此的眼中寻找光亮，是那种”有你，真好”的笃定。是愿意倾听对方心底的声音，哪怕它微弱得像夜空中最遥远的星光；是愿意触碰彼此的伤痕，因为那些裂痕背后，藏着同样坚韧的生命力量。</p><p>我不奢求波澜壮阔，只祈祷岁月对我最大的庇护，就是让我在一份波澜不惊的爱里，走完此生此世。</p><p>所以，你做好准备了吗，我的爱人？</p><p>我们将在未来的某一个午后，相知相识。然后一起度过一个又一个冬夏，无论晴空万里、乌云密布，都能拥有携手同行的坚定。</p><p>愿意并肩站立，共享人生风雨与阳光，才是通往真正幸福的道路。</p>]]></content>
    
    
    <summary type="html">溺水时抓到的浮木不是爱情，过期的止疼药也不是。真正的相爱是两个灵魂的彼此救赎，是『有你真好』的坚定，是并肩站立，共享人生风雨与阳光。</summary>
    
    
    
    <category term="life" scheme="https://licsber.site/categories/life/"/>
    
    
    <category term="LOVE" scheme="https://licsber.site/tags/LOVE/"/>
    
  </entry>
  
  <entry>
    <title>人月神话的困境</title>
    <link href="https://licsber.site/2024/03/29/"/>
    <id>https://licsber.site/2024/03/29/</id>
    <published>2024-03-29T08:32:09.000Z</published>
    <updated>2024-03-29T08:32:09.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="线性思维坑了多少聪明人"><a href="#线性思维坑了多少聪明人" class="headerlink" title="线性思维坑了多少聪明人"></a>线性思维坑了多少聪明人</h2><p>很多“聪明人”的思维都是线性思维，拿到任务，分解成小项，逐个完成，一步一步的像是在做证明题：期待着攒够一个又一个的事实和推理，最后拼图一般将它们串起来，达成某项任务。逻辑层面上看起来无懈可击，仿佛一切困难都可迎刃而解。</p><p>不可否认的是这套思维在应试方面屡试不爽，因为有一个天然的假设是存在的：“所有问题都有标准答案，问题在设计上就是逻辑可解的”。但是习惯这套“逻辑“的人，在处理现实世界的问题时，往往会不自觉地将自己带入死胡同。</p><h2 id="逻辑-vs-现实"><a href="#逻辑-vs-现实" class="headerlink" title="逻辑 vs 现实"></a>逻辑 vs 现实</h2><p>我把上面那种叫”逻辑关联”，与之相对的是”事实关联”。生活中这种思维陷阱到处都是：</p><ul><li>白菜3块钱一斤，15块钱可以买五斤白菜</li><li>你们工厂一个月能产3000个零件，那明天先给我10个吧</li><li>这个项目比较急，上次排期一周，我再给你一倍的人，三天给我做出来</li></ul><p>听起来好像没毛病？但仔细想想：</p><ul><li>生一个孩子需要9个月，生一对双胞胎需要18个月</li><li>生一个孩子需要9个月，9个妈妈是不是只要1个月？！</li></ul><p>有时候其实很难意识到这样的思考模式存在的问题，这也是《人月神话》里屡次提到的困境。</p><p>专注解决问题的思维方式久了，就会慢慢开始只在乎逻辑关联，而忽略事实关联，就会开始期待一种“银弹”，说是缘木求鱼也不过如此。</p><h2 id="初级项目经理最爱的蠢问题"><a href="#初级项目经理最爱的蠢问题" class="headerlink" title="初级项目经理最爱的蠢问题"></a>初级项目经理最爱的蠢问题</h2><p>很多初级项目经理最大的毛病，就是总觉得所有事都该有个进度条。这样他们就能直观地”看到”进展，要做的也不过是按排期表往下催。</p><p>这种人最喜欢问：”你这个要多久才能做出来？”</p><p>享受管理者的权力，却不承担该有的角色义务。</p><p><strong>项目经理真正该问的是：”你还需要什么帮助才能做得更快？”</strong></p><p>优秀的项目经理知道，项目进度不是靠”完成了多少”来判断的，而是靠如何拥有充足的资源去大规模试错。项目经理的任务是确保需求被满足、项目成功交付。</p><p>但现实里X-Y本末倒置的现象太多了：为了完成目标定了一堆KPI，最后完全忘了最初的目标，只顾着追KPI。就像前阵子北京环卫工买新鲜白菜当厨余垃圾事件一样————政策目标是垃圾分类，上面定了每种垃圾的数量指标，一执行就变了味，最后闹出笑话。</p><h2 id="程序员不是推土机"><a href="#程序员不是推土机" class="headerlink" title="程序员不是推土机"></a>程序员不是推土机</h2><p>还有一种常见的误区：很多项目经理在向上级汇报进度时，乐于享受“管理者”的光环和成果，却常常忽略了一线执行者的感受。这也是为什么一线员工本能地反感那些只会催进度、不懂业务、不下场执行的管理者。</p><p>本质上，软件开发的最大变量是“人”，“人”不是可以随意替换的零件。对“人”的管理，远比流程管控复杂得多。写代码不是搬砖，项目经理面对的，是有情绪、有思考、有惰性、更有创造力的活生生的人。你不能指望给出1+1，总能收到2的结果；同样的任务，同一个人在不同状态下，效率和成果也可能天差地别。积极主动时，1天就能搞定；消极怠工时，再多时间也谈不上交付。</p><p>这正是与传统行业的根本区别。造房子，哪怕换了工人，只要按照规范施工，进度和质量差异不会特别大；但在软件开发中，<strong>再烂的挖土机也能挖出一个坑，而最厉害的程序员如果状态不佳，也可能写出一堆“屎山”代码。</strong></p><p>因此，优秀的项目经理绝不是填进度表、出汇报PPT那么简单。管理“人”是一项更高阶的挑战。</p><h2 id="悲剧是怎么炼成的"><a href="#悲剧是怎么炼成的" class="headerlink" title="悲剧是怎么炼成的"></a>悲剧是怎么炼成的</h2><p>对工程师来说，遇到问题、解决问题是日常。但如果问题占用了远超预期的时间，那就是对自己能力和自信的打击。</p><p>这时候如果项目经理不专业，硬推进度，工程师就会开始”掩盖问题”。</p><p>我一直觉得，让负责技术攻坚的人去追进度是件很可惜的事。悲剧的根源其实是管理能力的不足。真想做到结果导向，需要的是：目标的制定和拆解、工作计划的精确评估、真实有效的复盘、信息同步和应对突发状况的能力。</p><p>这些都对领导者要求很高。如果能力不足以管理结果，大家就只能去管理过程————那结果便可想而知了。</p><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><p><a href="https://www.woshipm.com/zhichang/1554995.html">工程师想要做管理？先改变你的思考方式</a></p><p><a href="https://www.cnblogs.com/coprince/p/9155384.html">从程序员到项目经理：为什么要当项目经理</a></p>]]></content>
    
    
    <summary type="html">项目经理最常问的蠢问题：『这个要多久做完？』该问的：『你需要什么帮助才能做得更快？』从进度条思维到资源调配思维，优秀的项目经理都经历了一场认知革命。</summary>
    
    
    
    <category term="book" scheme="https://licsber.site/categories/book/"/>
    
    
    <category term="人月神话" scheme="https://licsber.site/tags/%E4%BA%BA%E6%9C%88%E7%A5%9E%E8%AF%9D/"/>
    
    <category term="项目管理" scheme="https://licsber.site/tags/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/"/>
    
    <category term="软件工程" scheme="https://licsber.site/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/"/>
    
    <category term="项目经理" scheme="https://licsber.site/tags/%E9%A1%B9%E7%9B%AE%E7%BB%8F%E7%90%86/"/>
    
  </entry>
  
  <entry>
    <title>花开堪折直须折</title>
    <link href="https://licsber.site/2024/02/20/"/>
    <id>https://licsber.site/2024/02/20/</id>
    <published>2024-02-20T15:49:08.000Z</published>
    <updated>2024-02-20T15:49:08.000Z</updated>
    
    <content type="html"><![CDATA[<p>给你讲一个故事吧。</p><p>母校湖边有一处牌子，上面写着“花开堪赏直须赏，莫要折花空赏枝”。</p><p>我觉得不好。花期到了，恰是最美的时刻。似，恰同学少年，风华正茂，更需把握时机，趁春光正好，趁风头正劲，发挥好这一刻。</p><p>哪怕为了这一刻就此香消玉殒，也要勇敢地去追求，积极地去争取，莫要让时间风化一切，人生从来不是活365天，而是活在每一个耀眼的瞬间。</p><p>依我看来，这正是“花开堪折直须折，莫待无花空折枝”。</p>]]></content>
    
    
    <summary type="html">母校说：花开堪赏直须赏，莫要折花空赏枝。我说：花开堪折直须折，莫待无花空折枝。人生不是活365天，而是活在每一个值得折花的瞬间。</summary>
    
    
    
    <category term="life" scheme="https://licsber.site/categories/life/"/>
    
    
  </entry>
  
  <entry>
    <title>要拒绝眼高手低</title>
    <link href="https://licsber.site/2024/02/09/"/>
    <id>https://licsber.site/2024/02/09/</id>
    <published>2024-02-09T06:24:06.000Z</published>
    <updated>2024-02-09T06:24:06.000Z</updated>
    
    <content type="html"><![CDATA[<p>Make your hands dirty!</p><p>尝试去慢慢做一些practical的事情，会让你减轻许多焦虑感，掌握一技在手，安全感也就自然而然。</p><p>其实我比较羡慕厨师这个行业，一技在手，别人都会夸你“烧得一手好菜”。但是厨子和外界的联系太多了，袁枚有言“凡物各有先天，物性不良，虽易牙烹之，亦无味也”，厨子需要外界提供上好的食材，需要屠夫和菜农，但他们在现代标准化的流程中丧失了其风味，连带影响了上游的创造者，限制了其发挥。</p><p>但是计算机是一个从无到有的世界，是构筑在现代数学之上的理想国。普通家庭花3000块买个电脑，带来的创造性不会比九万八的苹果电脑更低，这其中人的主观能动性更为重要，这也是张雪峰所说“计算机是穷人家孩子的首选”之由来，相对而言，投入的本金很少，产出很高，也即性价比很高。</p><p>喜欢计算机，作为技术人，编程是充满乐趣的创造性工作（此处的工作不是认真工作中的工作，而是诸事自己掌控，脑力的结晶），看着自己写的代码一个个work起来，心中的喜悦是溢于言表的，要记住这种感觉，时常体会，才能让自己不至于陷于迷茫。</p><p>有些同学质疑项目越来越壮大之后，个人的掌控力会渐渐不足，毕竟软件开发工作是复杂的，虽然我们在极力用各种工程实践让一切变得有序可控，但它依然是依赖个人能力的一种创造性活动。这时候就需要一个舵手作为领导者来把控方向，作为领导者，我认为也不能带着白手套，而是积极参与，深入实践。这样才能最大程度的避免外行指导内行，要跟随最新的技术趋势，保持自己的核心竞争力。</p><p>愿不忘初心。</p>]]></content>
    
    
    <summary type="html">Make your hands dirty！与其焦虑地刷着技术文章收藏夹吃灰，不如动手写个烂代码。3000块的电脑和九万八的Mac在创造力面前人人平等——前提是你真的开始创造。</summary>
    
    
    
    <category term="book" scheme="https://licsber.site/categories/book/"/>
    
    
    <category term="软件工程" scheme="https://licsber.site/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/"/>
    
    <category term="随园食单" scheme="https://licsber.site/tags/%E9%9A%8F%E5%9B%AD%E9%A3%9F%E5%8D%95/"/>
    
  </entry>
  
  <entry>
    <title>现存项目里加人是一场豪赌</title>
    <link href="https://licsber.site/2024/02/06/"/>
    <id>https://licsber.site/2024/02/06/</id>
    <published>2024-02-06T14:15:01.000Z</published>
    <updated>2024-02-06T14:15:01.000Z</updated>
    
    <content type="html"><![CDATA[<p>副标题：谈软工圣经《人月神话》</p><p>我的专业是软件工程，顾名思义，软件和土木之类的相似，也是一个系统性的工程，系统就不免牵扯到人、机、料、法、环的方方面面，其中占据主导因素的就是参与项目的人。</p><p>软件工程，研究的便是如何将「软件项目」以标准化「工程项目」的方式去运作，即，尽量剥离掉人的主观能动性，发挥哪里需要哪里搬的“螺丝钉”作用。而不是像现在众多开源兴趣项目那样，以个人开发者的身份掌管一切、运作一切，一旦原作者弃坑，那么项目即宣告死刑，像ReiserFS作者，进监狱之后，Linux内核就把它标记为了Deprecated，无人问津。</p><p>但是任何人都不是等同的，作为“螺丝钉”也会有不同的型号，这里先不谈作为个体的独特个性，仅仅是为了能够有效的协作，身处同一个项目的“螺丝钉”们就需要不断地交流来对抗信息差，也即<strong>同步信息</strong>。</p><p>以下常见的协作问题很容易遇到：</p><ol><li>大家对项目最终愿景的理解不同（不明白设计初衷&#x2F;不了解最终客户需求）</li><li>同一职能的人们水平不同（项目中老带新非常常见&#x2F;某些新技术只有少数人理解）</li><li>分工角色和责任不明确（同一问题可以从不同方面解决&#x2F;团队中某小团体更为强势）</li></ol><p>对于一些小项目可能无关痛痒，十人以内还属于可以有效对齐的规模，依靠定期的会议沟通，即可同步所有人。但一旦超出规模，还按照原先的方式沟通，项目就可能会脱离控制，因为人与人之间的沟通是全连接型的，这时候人们往往会按职能来拆分小团体解决，比如前端团队、后端团队、运维团队、测试团队，本质上还是各个团队的领头人，即leader，承担了原先的职能作用。</p><p>设想一下，这样的项目团队，在正常的开发迭代周期内，现在接到了加快推进项目的任务，领导决定派遣更多人手来支援、分担项目任务，新加入项目的人可以直接上手干吗？</p><p>很明显不太可能，新人至少需要知道项目需求，阅读项目开始至今的开发文档、会议记录，再和项目组已有的成员沟通细节，才能尽可能地无缝加入项目进程。</p><p>而加入一个人，则意味着团队原先的N人，都新增了N条沟通链路，再加一个人，就又是N+1条链路，人越多只会越乱，最终大家在沟通同步上浪费越来越多的时间，导致项目虽然看上去增加了人手，但效率只会越来越低。</p><p>有没有一种解决方法呢？我认为有，因为问题的本质出在全连接沟通上，假如有这么一个人，他和所有人交流，并且把所有人的信息都同步到和他一致，那全连接的n²级别链路就简化为了n级别，这个人就是项目经理，所以项目经理这样一个角色，职责非常重要，他是项目不至于陷入混乱的前提和保证。</p><p>项目经理就有点类似BGP组网中的路由反射器RR，常规的IBGP节点之间都需要建立全连接关系，有了路由反射器之后，反射器可以作为中间节点汇聚所有路由信息，然后同步给其他IBGP节点，这样节省了节点之间的巨量连线和处理路由信息的额外负载。</p><p><img src="https://cdn.licsber.site/blog/2024/240206-BGP-RR.png" alt="https:&#x2F;&#x2F;www.sdnlab.com&#x2F;20294.html"></p><blockquote><p>原图链接：<a href="https://img1.sdnlab.com/wp-content/uploads/2017/11/EBGP-IBGP-fig-6.png">https://img1.sdnlab.com/wp-content/uploads/2017/11/EBGP-IBGP-fig-6.png</a></p></blockquote><p>当然《人月神话》作为软件工程的圣经，肯定不止告诉了我们这些，后续我看看结合现实再写一篇心得体会，好书值得慢慢回味~</p>]]></content>
    
    
    <summary type="html">老板：项目延期了，加两个人吧！项目经理：生一个孩子要9个月，9个妈妈是不是只要1个月？读懂《人月神话》，避免成为那个在截止日期前疯狂加人的&#39;天才&#39;管理者。</summary>
    
    
    
    <category term="book" scheme="https://licsber.site/categories/book/"/>
    
    
    <category term="人月神话" scheme="https://licsber.site/tags/%E4%BA%BA%E6%9C%88%E7%A5%9E%E8%AF%9D/"/>
    
    <category term="项目管理" scheme="https://licsber.site/tags/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/"/>
    
    <category term="软件工程" scheme="https://licsber.site/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>个人能力和个人资源哪个更重要？论&quot;关系户&quot;的合理性</title>
    <link href="https://licsber.site/2024/01/14/"/>
    <id>https://licsber.site/2024/01/14/</id>
    <published>2024-01-14T14:01:06.000Z</published>
    <updated>2024-01-14T14:01:06.000Z</updated>
    
    <content type="html"><![CDATA[<p>讨论：&#x2F;t&#x2F;1008613#reply38</p><p>这个话题其实开始于大概三年前的一次讨论，当时我身为学校实验室的负责人，在忙活一年一度的招新工作。大致介绍下我们实验室的情况，说是实验室，其实更偏向因兴趣结合，有导师带队的项目工作坊，在机器人竞赛方面有着深厚的经验积累和历年优秀的战绩。大家呢基本都是技术出身，每个人在上位机视觉、下位机控制、硬件和机械结构方面各有所长，因为我是软件方面做得比较多，所以软件类的招新题是我来出。</p><p>在我们软件组内部商量的时候，就有人提出考核的方式是更偏现场小题，还是工程项目类似的综合大题，前者可以确保考察到个人能力，但是考察方面并不全面，现场如果加上偏整体的简答题，招新时间就会太长，后者自己购置材料，完成类似循迹小车、倒立摆一样的综合课题，现场以硬性的性能指标验收，更能反应综合实力和对自动化、电控等方面的理解，但是会存在作弊的问题，即作品可能是由哪些学长学姐、自己家人帮助完成的，招新现场时间较短，可能提问反映不出来到底是不是自己靠实力独立完成的。</p><p>后面我们依然选择了后者，辅以招进来之后集中培训三个月，再来一场笔试考察大家的学习能力。简要讲讲我当时的看法，我和副组长的分歧集中在，面试者如果借用了外力的帮助，这个外力算不算他实力的一部分。我认为算，因为我们招新的目的就是打比赛、写论文、搞专利、做项目，需要能打的人，在项目中遇到一些困难，不管是技术上的困难，还是经济、流程上的困难，都需要人来克服。他这一次通过自己的关系，解决了问题，达成了目的，那下一次在我们的项目中，他也可以继续使用关系来构成帮助，这对我们是有益的。尽管你可能说，这不是他个人实力的一部分，可能做技术的人瞧不起这样没有真才实学的“混子”，但是为了集体的利益目标，他的存在有一定的合理性，而且人不会一直甘愿当一个混子，肯定他也会努力学习，提升自己的实力和话语权的。</p><p>从学校出来步入社会后，我发现工作中也是如此，虽然不想承认，但是“关系户”手里的关系，属于个人资源，确实也是个人实力的一部分。有些事情确实就需要这样的人出马，能减轻工作中很多繁琐，这也是我认为的，能够解决问题就是好的，有一点结果导向论了。奋斗、努力、刻苦钻研，最终解决了一个技术问题固然令人称赞，但是现实世界很多问题都不属于技术问题，纯粹是管理、流程类问题。在这些事情上，你的努力很可能就是事倍功半的，搞不好还会出幺蛾子，所以有时候追寻技术的纯粹性是好，也不能忽视别人在另一条路线上的能力。</p><p>常常听到，你十年寒窗，凭什么比得上我三代经商。那么普通人就毫无翻身之力吗？我认为也不是，现代教育制度其实已经给大家尽可能的机会平等了，在普世追求面前，给自己孩子安排一个工作，子承父业之类的桥段其实已经少了很多，至少看起来已经很不容易了。阶层固化依然存在，但如果不付出努力，大家的阶层都在往下掉，想要保住还是需要后天，不会出现皇子一出生就世袭这样的事情了。</p><p>以上。</p>]]></content>
    
    
    <summary type="html">十年寒窗凭什么比得上三代经商？本文试图为&#39;关系户&#39;正名：能用关系解决问题，本身就是一种稀缺能力。技术人别急着嗤之以鼻，现实世界的BOSS不全是技术怪。</summary>
    
    
    
    <category term="life" scheme="https://licsber.site/categories/life/"/>
    
    
  </entry>
  
  <entry>
    <title>第四次博客重构</title>
    <link href="https://licsber.site/2023/08/20/"/>
    <id>https://licsber.site/2023/08/20/</id>
    <published>2023-08-19T19:43:06.000Z</published>
    <updated>2023-08-19T19:43:06.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="Past"><a href="#Past" class="headerlink" title="Past"></a>Past</h2><p>断断续续博客也重构了四次了</p><p>博客园：<a href="https://www.cnblogs.com/licsber">https://www.cnblogs.com/licsber</a></p><p>语雀：<a href="https://www.yuque.com/licsber/blog">https://www.yuque.com/licsber/blog</a></p><h2 id="Recent"><a href="#Recent" class="headerlink" title="Recent"></a>Recent</h2><p>自建：<a href="https://licsber.site/">https://licsber.site</a></p><p>灾备：<a href="https://blog.licsber.site/">https://blog.licsber.site</a></p><h2 id="技术栈"><a href="#技术栈" class="headerlink" title="技术栈"></a>技术栈</h2><ol><li>博客本体：Hexo（基于NodeJS）</li><li>HTTPS: Let’s Encrypt 泛域名证书</li><li>灾备：Github Pages</li><li>CI&#x2F;CD：手动build Docker镜像</li><li>镜像仓库：阿里云ACR服务（个人免费）</li><li>静态文件服务：nginx</li><li>反向代理服务：Traefik</li><li>图床服务：Minio + Cloudflare反代（防刷流量）</li><li>服务管理：K8s（杀鸡用激光炮</li></ol><p>欢迎友链~</p>]]></content>
    
    
    <summary type="html">博客园→语雀→自建→灾备，一个博客党的四次&#39;搬家&#39;血泪史。用最炫的技术栈（K8s+Docker+Hexo）写最朴素的文章，这就是赛博搬砖人的浪漫。</summary>
    
    
    
    <category term="tech" scheme="https://licsber.site/categories/tech/"/>
    
    
    <category term="Hexo" scheme="https://licsber.site/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>知识的诅咒</title>
    <link href="https://licsber.site/2023/08/14/"/>
    <id>https://licsber.site/2023/08/14/</id>
    <published>2023-08-14T14:20:06.000Z</published>
    <updated>2023-08-14T14:20:06.000Z</updated>
    
    <content type="html"><![CDATA[<p>知识的诅咒，简单来说就是一旦你掌握了某种知识，就很难站在没掌握这个知识的角度，去思考和理解他人。</p><p>这种信息不对称往往很难意识到，同样也没有银弹，最近几天的深入学习使我深刻地理解了它的意义，在我的知识领域，明白了为什么对于编程的初学者来说，即使是偏向口语化的代码看起来也像天书。</p><p><img src="https://cdn.licsber.site/blog/2023/230814-%E7%9F%A5%E8%AF%86%E7%9A%84%E8%AF%85%E5%92%92-%E7%8C%9C%E6%95%B0%E6%B8%B8%E6%88%8F.jpg" alt="很简单的小程序"></p><p>如上图，以程序员懒得去写的猜数游戏为例，规则很简单，代码生成一个随机数，用户不断输入猜测，代码则提示用户输入的数比生成的数大还是小。</p><p>但我从没意识到的是，短短十几行代码，就已经包含了编译工具链安装和使用、编译执行流程、程序入口点、变量定义、基本语法、类型系统、标准库、输入输出、顺序结构、大小比较运算符、分支结构、模块导入、随机数库调用生成….这么多东西。</p><p>如果已经有了这些前置知识，没有程序员愿意浪费时间来写一个猜数游戏，因为过于简单，但对于新手来说，正是一些前置知识的缺少造成了毁灭性的后果，编程的学习曲线过于陡峭让他们知难而退，像是一层厚障壁，不突破就只能被永远隔绝在外，永远无法体会编程的乐趣。</p><p>同样，理解我上面这段话也需要一些前置知识，同样受“知识的诅咒”影响，人类真是太可悲了。如：想要理解“没有银弹”，至少需要读过《人月神话》一样，没有这些共享的知识会让交流变得难以进行，变得鸡同鸭讲。</p><p>常识便是教育的最大阻碍，假如无法使用领域内常识性的专业术语，那么我就无法精确描述我擅长领域的某一概念，但一旦使用了这些术语，就会令未掌握这些术语的人感到迷茫，就像是一种诅咒，始终萦绕在上空。</p><p>从这个层面上说，人真的很孤独，拥有共同语言是一件很难的事情，像是我们在评价别人时，也常常难以认识到自己的“习以为常”，殊不知别人不一定有我们同等（优渥或寒酸）的条件、出身，“未经他人苦，莫劝他人善”，我们能做的便只有尊重他人命运，做好自己，过好自己的生活，不过度干涉他人就是最好的处世之道了，剩下的就交给际遇吧。</p><p>说到孤独，在这里也希望我未来的伴侣，如果我还能遇到那个她的话，能够和我拥有着相似的语言，同等或互补的知识架构体系，要不然人间走这一遭也未免太可怜了。</p>]]></content>
    
    
    <summary type="html">为什么程序员觉得简单的猜数游戏，新手却像在看天书？知识的诅咒告诉你：一旦学会骑自行车，你就再也忘不了，但也永远教不会别人怎么『保持平衡』。</summary>
    
    
    
    <category term="book" scheme="https://licsber.site/categories/book/"/>
    
    
    <category term="人月神话" scheme="https://licsber.site/tags/%E4%BA%BA%E6%9C%88%E7%A5%9E%E8%AF%9D/"/>
    
    <category term="LOVE" scheme="https://licsber.site/tags/LOVE/"/>
    
  </entry>
  
  <entry>
    <title>licsber英文名的由来</title>
    <link href="https://licsber.site/2023/08/08/"/>
    <id>https://licsber.site/2023/08/08/</id>
    <published>2023-08-07T16:46:11.000Z</published>
    <updated>2023-08-07T16:46:11.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="碎碎念"><a href="#碎碎念" class="headerlink" title="碎碎念"></a>碎碎念</h2><ol><li>当时看了B站一期节目 英文名可以没有任何意义 于是决定给自己整一个</li><li>因为我姓刘 所以想要以L字母开头</li><li>想要自己成为一个完美的辅助 完美的库人才 所以自己名字里加了lib</li><li>为了平衡 后面的字母想要不往上也不往下的 对比起来er不错</li><li>剩下就是随缘增加字母了</li><li>后来因为觉得Licsber看起来不如licsber简短</li><li>所以后续表示名字的时候使用小写 表示我的组织&#x2F;设备时大写</li></ol>]]></content>
    
    
    <summary type="html">一个程序员的自我命名艺术：从L开头到lib植入，再到er收尾，最后发现小写更酷。这不是随意的键盘乱敲，这是有原则的随缘。</summary>
    
    
    
    <category term="life" scheme="https://licsber.site/categories/life/"/>
    
    
  </entry>
  
</feed>
